Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit fbcbe2e

Browse files
committed
WIP
1 parent 44eca14 commit fbcbe2e

File tree

3 files changed

+17
-5
lines changed

3 files changed

+17
-5
lines changed

cli/cliui/parameter.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,7 @@ func RichParameter(cmd *cobra.Command, templateVersionParameter codersdk.Templat
111111
}
112112

113113
func validateRichPrompt(value string, p codersdk.TemplateVersionParameter) error {
114-
return codersdk.ValidateWorkspaceBuildParameter(p, codersdk.WorkspaceBuildParameter{
114+
return codersdk.ValidateWorkspaceBuildParameter(p, &codersdk.WorkspaceBuildParameter{
115115
Name: p.Name,
116116
Value: value,
117117
}, nil)

coderd/workspaces_test.go

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1898,6 +1898,7 @@ func TestWorkspaceWithOptionalRichParameters(t *testing.T) {
18981898
secondParameterType = "number"
18991899
secondParameterDescription = "_This_ is second *parameter*"
19001900
secondParameterRequired = true
1901+
secondParameterValue = "333"
19011902
)
19021903

19031904
client := coderdtest.New(t, &coderdtest.Options{IncludeProvisionerDaemon: true})
@@ -1951,17 +1952,22 @@ func TestWorkspaceWithOptionalRichParameters(t *testing.T) {
19511952

19521953
expectedBuildParameters := []codersdk.WorkspaceBuildParameter{
19531954
{Name: firstParameterName, Value: firstParameterDefaultValue},
1955+
{Name: secondParameterName, Value: secondParameterValue},
19541956
}
19551957

19561958
template := coderdtest.CreateTemplate(t, client, user.OrganizationID, version.ID)
19571959
workspace := coderdtest.CreateWorkspace(t, client, user.OrganizationID, template.ID, func(cwr *codersdk.CreateWorkspaceRequest) {
1958-
cwr.RichParameterValues = expectedBuildParameters
1960+
cwr.RichParameterValues = []codersdk.WorkspaceBuildParameter{
1961+
// First parameter is optional, so coder should pick the default value.
1962+
{Name: secondParameterName, Value: secondParameterValue},
1963+
}
19591964
})
19601965

19611966
workspaceBuild := coderdtest.AwaitWorkspaceBuildJob(t, client, workspace.LatestBuild.ID)
19621967
require.Equal(t, codersdk.WorkspaceStatusRunning, workspaceBuild.Status)
19631968

19641969
workspaceBuildParameters, err := client.WorkspaceBuildParameters(ctx, workspaceBuild.ID)
19651970
require.NoError(t, err)
1971+
19661972
require.ElementsMatch(t, expectedBuildParameters, workspaceBuildParameters)
19671973
}

codersdk/richparameters.go

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,19 +23,25 @@ func ValidateWorkspaceBuildParameters(richParameters []TemplateVersionParameter,
2323
continue // previous build parameters have been validated before the last build
2424
}
2525

26-
err := ValidateWorkspaceBuildParameter(richParameter, *buildParameter, lastBuildParameter)
26+
err := ValidateWorkspaceBuildParameter(richParameter, buildParameter, lastBuildParameter)
2727
if err != nil {
2828
return xerrors.Errorf("can't validate build parameter %q: %w", richParameter.Name, err)
2929
}
3030
}
3131
return nil
3232
}
3333

34-
func ValidateWorkspaceBuildParameter(richParameter TemplateVersionParameter, buildParameter WorkspaceBuildParameter, lastBuildParameter *WorkspaceBuildParameter) error {
35-
value := buildParameter.Value
34+
func ValidateWorkspaceBuildParameter(richParameter TemplateVersionParameter, buildParameter *WorkspaceBuildParameter, lastBuildParameter *WorkspaceBuildParameter) error {
35+
var value string
36+
37+
if buildParameter != nil {
38+
value = buildParameter.Value
39+
}
40+
3641
if richParameter.Required && value == "" {
3742
return xerrors.Errorf("parameter value is required")
3843
}
44+
3945
if value == "" { // parameter is optional, so take the default value
4046
value = richParameter.DefaultValue
4147
}

0 commit comments

Comments
 (0)