From 9495c908b44b7808e9d06e9549b0ae657daad2bf Mon Sep 17 00:00:00 2001 From: Marcin Tojek Date: Mon, 23 Jan 2023 17:56:02 +0100 Subject: [PATCH 1/3] WIP --- examples/resources/coder_parameter/resource.tf | 18 +++++++++--------- provider/parameter.go | 9 ++++++--- provider/parameter_test.go | 9 +++++++-- 3 files changed, 22 insertions(+), 14 deletions(-) diff --git a/examples/resources/coder_parameter/resource.tf b/examples/resources/coder_parameter/resource.tf index 9057b3a1..44ceb764 100644 --- a/examples/resources/coder_parameter/resource.tf +++ b/examples/resources/coder_parameter/resource.tf @@ -1,42 +1,42 @@ data "coder_parameter" "example" { - display_name = "Region" + name = "Region" description = "Specify a region to place your workspace." - immutable = true + mutable = false type = "string" option { value = "us-central1-a" - label = "US Central" + name = "US Central" icon = "/icon/usa.svg" } option { value = "asia-central1-a" - label = "Asia" + name = "Asia" icon = "/icon/asia.svg" } } data "coder_parameter" "ami" { - display_name = "Machine Image" + name = "Machine Image" option { value = "ami-xxxxxxxx" - label = "Ubuntu" + name = "Ubuntu" icon = "/icon/ubuntu.svg" } } data "coder_parameter" "image" { - display_name = "Docker Image" + name = "Docker Image" icon = "/icon/docker.svg" type = "bool" } data "coder_parameter" "cores" { - display_name = "CPU Cores" + name = "CPU Cores" icon = "/icon/" } data "coder_parameter" "disk_size" { - display_name = "Disk Size" + name = "Disk Size" type = "number" validation { # This can apply to number and string types. diff --git a/provider/parameter.go b/provider/parameter.go index 0a67b0c2..4c6331b7 100644 --- a/provider/parameter.go +++ b/provider/parameter.go @@ -288,6 +288,9 @@ func (v *Validation) Valid(typ, value string) error { } switch typ { case "bool": + if value != "true" && value != "false" { + return fmt.Errorf(`boolean value can be either "true" or "false"`) + } return nil case "string": if v.Regex == "" { @@ -307,13 +310,13 @@ func (v *Validation) Valid(typ, value string) error { case "number": num, err := strconv.Atoi(value) if err != nil { - return fmt.Errorf("parse value %s as int: %s", value, err) + return fmt.Errorf("value %q is not a number", value) } if num < v.Min { - return fmt.Errorf("provided value %d is less than the minimum %d", num, v.Min) + return fmt.Errorf("value %d is less than the minimum %d", num, v.Min) } if num > v.Max { - return fmt.Errorf("provided value %d is more than the maximum %d", num, v.Max) + return fmt.Errorf("value %d is more than the maximum %d", num, v.Max) } } return nil diff --git a/provider/parameter_test.go b/provider/parameter_test.go index b4de3f19..88ddcf4b 100644 --- a/provider/parameter_test.go +++ b/provider/parameter_test.go @@ -294,7 +294,7 @@ func TestValueValidatesType(t *testing.T) { Name: "InvalidNumber", Type: "number", Value: "hi", - Error: regexp.MustCompile("parse value hi as int"), + Error: regexp.MustCompile("is not a number"), }, { Name: "NumberBelowMin", Type: "number", @@ -307,6 +307,11 @@ func TestValueValidatesType(t *testing.T) { Value: "1", Max: 0, Error: regexp.MustCompile("is more than the maximum"), + }, { + Name: "InvalidBool", + Type: "bool", + Value: "cat", + Error: regexp.MustCompile("boolean value can be either"), }} { tc := tc t.Run(tc.Name, func(t *testing.T) { @@ -318,7 +323,7 @@ func TestValueValidatesType(t *testing.T) { } err := v.Valid(tc.Type, tc.Value) if tc.Error != nil { - require.True(t, tc.Error.MatchString(err.Error())) + require.True(t, tc.Error.MatchString(err.Error()), "got: %s", err.Error()) } }) } From 2d5410cf3007f08c238ee0dee364bc8ecfaf0675 Mon Sep 17 00:00:00 2001 From: Marcin Tojek Date: Mon, 23 Jan 2023 17:56:27 +0100 Subject: [PATCH 2/3] fmt --- .../resources/coder_parameter/resource.tf | 22 +++++++++---------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/examples/resources/coder_parameter/resource.tf b/examples/resources/coder_parameter/resource.tf index 44ceb764..d4999afc 100644 --- a/examples/resources/coder_parameter/resource.tf +++ b/examples/resources/coder_parameter/resource.tf @@ -1,16 +1,16 @@ data "coder_parameter" "example" { - name = "Region" - description = "Specify a region to place your workspace." - mutable = false - type = "string" + name = "Region" + description = "Specify a region to place your workspace." + mutable = false + type = "string" option { value = "us-central1-a" - name = "US Central" + name = "US Central" icon = "/icon/usa.svg" } option { value = "asia-central1-a" - name = "Asia" + name = "Asia" icon = "/icon/asia.svg" } } @@ -19,25 +19,25 @@ data "coder_parameter" "ami" { name = "Machine Image" option { value = "ami-xxxxxxxx" - name = "Ubuntu" + name = "Ubuntu" icon = "/icon/ubuntu.svg" } } data "coder_parameter" "image" { name = "Docker Image" - icon = "/icon/docker.svg" - type = "bool" + icon = "/icon/docker.svg" + type = "bool" } data "coder_parameter" "cores" { name = "CPU Cores" - icon = "/icon/" + icon = "/icon/" } data "coder_parameter" "disk_size" { name = "Disk Size" - type = "number" + type = "number" validation { # This can apply to number and string types. min = 0 From ec30807e2d16dfde3314b4c3fce2bc8801ac9831 Mon Sep 17 00:00:00 2001 From: Marcin Tojek Date: Mon, 23 Jan 2023 17:58:32 +0100 Subject: [PATCH 3/3] bool --- examples/resources/coder_parameter/resource.tf | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/examples/resources/coder_parameter/resource.tf b/examples/resources/coder_parameter/resource.tf index d4999afc..9e6ef8a0 100644 --- a/examples/resources/coder_parameter/resource.tf +++ b/examples/resources/coder_parameter/resource.tf @@ -24,8 +24,8 @@ data "coder_parameter" "ami" { } } -data "coder_parameter" "image" { - name = "Docker Image" +data "coder_parameter" "is_public_instance" { + name = "Is public instance?" icon = "/icon/docker.svg" type = "bool" }