From 7dc583708a6eadb04f21936d7fd00587240fbaab Mon Sep 17 00:00:00 2001 From: Bruno Quaresma Date: Fri, 9 Sep 2022 19:48:24 +0000 Subject: [PATCH 1/3] feat: Add icon to coder_metadata resource --- internal/provider/provider.go | 6 ++++++ internal/provider/provider_test.go | 2 ++ 2 files changed, 8 insertions(+) diff --git a/internal/provider/provider.go b/internal/provider/provider.go index a5608754..663c10e0 100644 --- a/internal/provider/provider.go +++ b/internal/provider/provider.go @@ -406,6 +406,12 @@ func New() *schema.Provider { ForceNew: true, Optional: true, }, + "icon": { + Type: schema.TypeString, + Description: "The Material UI icon name in CamelCase.", + ForceNew: true, + Optional: true, + }, "item": { Type: schema.TypeList, Description: "Each \"item\" block defines a single metadata item consisting of a key/value pair.", diff --git a/internal/provider/provider_test.go b/internal/provider/provider_test.go index d2bb2362..2bc756e5 100644 --- a/internal/provider/provider_test.go +++ b/internal/provider/provider_test.go @@ -264,6 +264,7 @@ func TestMetadata(t *testing.T) { resource "coder_metadata" "agent" { resource_id = coder_agent.dev.id hide = true + icon = "Storage" item { key = "foo" value = "bar" @@ -297,6 +298,7 @@ func TestMetadata(t *testing.T) { for key, expected := range map[string]string{ "resource_id": agent.Primary.Attributes["id"], "hide": "true", + "icon": "Storage", "item.#": "5", "item.0.key": "foo", "item.0.value": "bar", From 5cbe2e61b6bbd558bc83b0a4f87b0de5df62f023 Mon Sep 17 00:00:00 2001 From: Bruno Quaresma Date: Mon, 12 Sep 2022 15:35:19 +0000 Subject: [PATCH 2/3] Update icons --- internal/provider/provider.go | 17 +++++++++++++---- internal/provider/provider_test.go | 4 ++-- 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/internal/provider/provider.go b/internal/provider/provider.go index 663c10e0..ff9fc29e 100644 --- a/internal/provider/provider.go +++ b/internal/provider/provider.go @@ -407,10 +407,19 @@ func New() *schema.Provider { Optional: true, }, "icon": { - Type: schema.TypeString, - Description: "The Material UI icon name in CamelCase.", - ForceNew: true, - Optional: true, + Type: schema.TypeString, + Description: "A URL to an icon that will display in the dashboard. View built-in " + + "icons here: https://github.com/coder/coder/tree/main/site/static/icons. Use a " + + "built-in icon with `data.coder_workspace.me.access_url + \"/icons/\"`.", + ForceNew: true, + Optional: true, + ValidateFunc: func(i interface{}, s string) ([]string, []error) { + _, err := url.Parse(s) + if err != nil { + return nil, []error{err} + } + return nil, nil + }, }, "item": { Type: schema.TypeList, diff --git a/internal/provider/provider_test.go b/internal/provider/provider_test.go index 2bc756e5..07cd7eba 100644 --- a/internal/provider/provider_test.go +++ b/internal/provider/provider_test.go @@ -264,7 +264,7 @@ func TestMetadata(t *testing.T) { resource "coder_metadata" "agent" { resource_id = coder_agent.dev.id hide = true - icon = "Storage" + icon = "/icons/storage.svg" item { key = "foo" value = "bar" @@ -298,7 +298,7 @@ func TestMetadata(t *testing.T) { for key, expected := range map[string]string{ "resource_id": agent.Primary.Attributes["id"], "hide": "true", - "icon": "Storage", + "icon": "/icons/storage.svg", "item.#": "5", "item.0.key": "foo", "item.0.value": "bar", From 6bf81266413fea6644aaaca59fc7ed51b5664059 Mon Sep 17 00:00:00 2001 From: Bruno Quaresma Date: Mon, 12 Sep 2022 12:43:07 -0300 Subject: [PATCH 3/3] Update internal/provider/provider.go Co-authored-by: Kyle Carberry --- internal/provider/provider.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/internal/provider/provider.go b/internal/provider/provider.go index ff9fc29e..5d3a5a16 100644 --- a/internal/provider/provider.go +++ b/internal/provider/provider.go @@ -409,7 +409,7 @@ func New() *schema.Provider { "icon": { Type: schema.TypeString, Description: "A URL to an icon that will display in the dashboard. View built-in " + - "icons here: https://github.com/coder/coder/tree/main/site/static/icons. Use a " + + "icons here: https://github.com/coder/coder/tree/main/site/static/icon. Use a " + "built-in icon with `data.coder_workspace.me.access_url + \"/icons/\"`.", ForceNew: true, Optional: true,