Skip to content

Commit fa3b28f

Browse files
committed
chore: rename build options to ephemeral parameters in cli
1 parent 26df33a commit fa3b28f

8 files changed

+67
-49
lines changed

cli/create.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -355,8 +355,8 @@ type prepWorkspaceBuildArgs struct {
355355
LastBuildParameters []codersdk.WorkspaceBuildParameter
356356
SourceWorkspaceParameters []codersdk.WorkspaceBuildParameter
357357

358-
PromptBuildOptions bool
359-
BuildOptions []codersdk.WorkspaceBuildParameter
358+
PromptEphemeralParameters bool
359+
EphemeralParameters []codersdk.WorkspaceBuildParameter
360360

361361
PromptRichParameters bool
362362
RichParameters []codersdk.WorkspaceBuildParameter
@@ -390,8 +390,8 @@ func prepWorkspaceBuild(inv *serpent.Invocation, client *codersdk.Client, args p
390390
resolver := new(ParameterResolver).
391391
WithLastBuildParameters(args.LastBuildParameters).
392392
WithSourceWorkspaceParameters(args.SourceWorkspaceParameters).
393-
WithPromptBuildOptions(args.PromptBuildOptions).
394-
WithBuildOptions(args.BuildOptions).
393+
WithPromptEphemeralParameters(args.PromptEphemeralParameters).
394+
WithEphemeralParameters(args.EphemeralParameters).
395395
WithPromptRichParameters(args.PromptRichParameters).
396396
WithRichParameters(args.RichParameters).
397397
WithRichParametersFile(parameterFile).

cli/parameter.go

Lines changed: 24 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,9 @@ import (
1515

1616
// workspaceParameterFlags are used by commands processing rich parameters and/or build options.
1717
type workspaceParameterFlags struct {
18-
promptBuildOptions bool
19-
buildOptions []string
18+
promptEphemeralParameters bool
19+
20+
ephemeralParameters []string
2021

2122
richParameterFile string
2223
richParameters []string
@@ -26,23 +27,40 @@ type workspaceParameterFlags struct {
2627
}
2728

2829
func (wpf *workspaceParameterFlags) allOptions() []serpent.Option {
29-
options := append(wpf.cliBuildOptions(), wpf.cliParameters()...)
30+
options := append(wpf.cliEphemeralParameters(), wpf.cliParameters()...)
3031
options = append(options, wpf.cliParameterDefaults()...)
3132
return append(options, wpf.alwaysPrompt())
3233
}
3334

34-
func (wpf *workspaceParameterFlags) cliBuildOptions() []serpent.Option {
35+
func (wpf *workspaceParameterFlags) cliEphemeralParameters() []serpent.Option {
3536
return serpent.OptionSet{
37+
// Deprecated - replaced with ephemeral-parameter
3638
{
3739
Flag: "build-option",
3840
Env: "CODER_BUILD_OPTION",
3941
Description: `Build option value in the format "name=value".`,
40-
Value: serpent.StringArrayOf(&wpf.buildOptions),
42+
UseInstead: []serpent.Option{{Flag: "ephemeral-parameter"}},
43+
Hidden: true,
44+
Value: serpent.StringArrayOf(&wpf.ephemeralParameters),
4145
},
46+
// Deprecated - replaced with prompt-ephemeral-parameters
4247
{
4348
Flag: "build-options",
4449
Description: "Prompt for one-time build options defined with ephemeral parameters.",
45-
Value: serpent.BoolOf(&wpf.promptBuildOptions),
50+
UseInstead: []serpent.Option{{Flag: "prompt-ephemeral-parameters"}},
51+
Value: serpent.BoolOf(&wpf.promptEphemeralParameters),
52+
},
53+
{
54+
Flag: "ephemeral-parameter",
55+
Env: "CODER_EPHEMERAL_PARAMETER",
56+
Description: `Define ephemeral parameters in the format "name=value".`,
57+
Value: serpent.StringArrayOf(&wpf.ephemeralParameters),
58+
},
59+
{
60+
Flag: "prompt-ephemeral-parameters",
61+
Env: "CODER_PROMPT_EPHEMERAL_PARAMETERS",
62+
Description: "Prompt for values of ephemeral parameters described in the template.",
63+
Value: serpent.BoolOf(&wpf.promptEphemeralParameters),
4664
},
4765
}
4866
}

cli/parameterresolver.go

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -29,10 +29,10 @@ type ParameterResolver struct {
2929
richParameters []codersdk.WorkspaceBuildParameter
3030
richParametersDefaults map[string]string
3131
richParametersFile map[string]string
32-
buildOptions []codersdk.WorkspaceBuildParameter
32+
ephemeralParameters []codersdk.WorkspaceBuildParameter
3333

34-
promptRichParameters bool
35-
promptBuildOptions bool
34+
promptRichParameters bool
35+
promptEphemeralParameters bool
3636
}
3737

3838
func (pr *ParameterResolver) WithLastBuildParameters(params []codersdk.WorkspaceBuildParameter) *ParameterResolver {
@@ -50,8 +50,8 @@ func (pr *ParameterResolver) WithRichParameters(params []codersdk.WorkspaceBuild
5050
return pr
5151
}
5252

53-
func (pr *ParameterResolver) WithBuildOptions(params []codersdk.WorkspaceBuildParameter) *ParameterResolver {
54-
pr.buildOptions = params
53+
func (pr *ParameterResolver) WithEphemeralParameters(params []codersdk.WorkspaceBuildParameter) *ParameterResolver {
54+
pr.ephemeralParameters = params
5555
return pr
5656
}
5757

@@ -75,8 +75,8 @@ func (pr *ParameterResolver) WithPromptRichParameters(promptRichParameters bool)
7575
return pr
7676
}
7777

78-
func (pr *ParameterResolver) WithPromptBuildOptions(promptBuildOptions bool) *ParameterResolver {
79-
pr.promptBuildOptions = promptBuildOptions
78+
func (pr *ParameterResolver) WithPromptEphemeralParameters(promptEphemeralParameters bool) *ParameterResolver {
79+
pr.promptEphemeralParameters = promptEphemeralParameters
8080
return pr
8181
}
8282

@@ -128,16 +128,16 @@ nextRichParameter:
128128
resolved = append(resolved, richParameter)
129129
}
130130

131-
nextBuildOption:
132-
for _, buildOption := range pr.buildOptions {
131+
nextEphemeralParameter:
132+
for _, ephemeralParameter := range pr.ephemeralParameters {
133133
for i, r := range resolved {
134-
if r.Name == buildOption.Name {
135-
resolved[i].Value = buildOption.Value
136-
continue nextBuildOption
134+
if r.Name == ephemeralParameter.Name {
135+
resolved[i].Value = ephemeralParameter.Value
136+
continue nextEphemeralParameter
137137
}
138138
}
139139

140-
resolved = append(resolved, buildOption)
140+
resolved = append(resolved, ephemeralParameter)
141141
}
142142
return resolved
143143
}
@@ -209,8 +209,8 @@ func (pr *ParameterResolver) verifyConstraints(resolved []codersdk.WorkspaceBuil
209209
return templateVersionParametersNotFound(r.Name, templateVersionParameters)
210210
}
211211

212-
if tvp.Ephemeral && !pr.promptBuildOptions && findWorkspaceBuildParameter(tvp.Name, pr.buildOptions) == nil {
213-
return xerrors.Errorf("ephemeral parameter %q can be used only with --build-options or --build-option flag", r.Name)
212+
if tvp.Ephemeral && !pr.promptEphemeralParameters && findWorkspaceBuildParameter(tvp.Name, pr.ephemeralParameters) == nil {
213+
return xerrors.Errorf("ephemeral parameter %q can be used only with --prompt-ephemeral-parameters or --ephemeral-parameter flag", r.Name)
214214
}
215215

216216
if !tvp.Mutable && action != WorkspaceCreate {
@@ -231,7 +231,7 @@ func (pr *ParameterResolver) resolveWithInput(resolved []codersdk.WorkspaceBuild
231231
firstTimeUse := pr.isFirstTimeUse(tvp.Name)
232232
promptParameterOption := pr.isLastBuildParameterInvalidOption(tvp)
233233

234-
if (tvp.Ephemeral && pr.promptBuildOptions) ||
234+
if (tvp.Ephemeral && pr.promptEphemeralParameters) ||
235235
(action == WorkspaceCreate && tvp.Required) ||
236236
(action == WorkspaceCreate && !tvp.Ephemeral) ||
237237
(action == WorkspaceUpdate && promptParameterOption) ||

cli/restart_test.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ func TestRestart(t *testing.T) {
6060
require.NoError(t, err, "execute failed")
6161
})
6262

63-
t.Run("BuildOptions", func(t *testing.T) {
63+
t.Run("PromptEphemeralParameters", func(t *testing.T) {
6464
t.Parallel()
6565

6666
client := coderdtest.New(t, &coderdtest.Options{IncludeProvisionerDaemon: true})
@@ -72,7 +72,7 @@ func TestRestart(t *testing.T) {
7272
workspace := coderdtest.CreateWorkspace(t, member, template.ID)
7373
coderdtest.AwaitWorkspaceBuildJobCompleted(t, client, workspace.LatestBuild.ID)
7474

75-
inv, root := clitest.New(t, "restart", workspace.Name, "--build-options")
75+
inv, root := clitest.New(t, "restart", workspace.Name, "--prompt-ephemeral-parameters")
7676
clitest.SetupConfig(t, member, root)
7777
doneChan := make(chan struct{})
7878
pty := ptytest.New(t).Attach(inv)
@@ -114,7 +114,7 @@ func TestRestart(t *testing.T) {
114114
})
115115
})
116116

117-
t.Run("BuildOptionFlags", func(t *testing.T) {
117+
t.Run("EphemeralParameterFlags", func(t *testing.T) {
118118
t.Parallel()
119119

120120
client := coderdtest.New(t, &coderdtest.Options{IncludeProvisionerDaemon: true})
@@ -127,7 +127,7 @@ func TestRestart(t *testing.T) {
127127
coderdtest.AwaitWorkspaceBuildJobCompleted(t, client, workspace.LatestBuild.ID)
128128

129129
inv, root := clitest.New(t, "restart", workspace.Name,
130-
"--build-option", fmt.Sprintf("%s=%s", ephemeralParameterName, ephemeralParameterValue))
130+
"--ephemeral-parameter", fmt.Sprintf("%s=%s", ephemeralParameterName, ephemeralParameterValue))
131131
clitest.SetupConfig(t, member, root)
132132
doneChan := make(chan struct{})
133133
pty := ptytest.New(t).Attach(inv)

cli/start.go

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,7 @@ func buildWorkspaceStartRequest(inv *serpent.Invocation, client *codersdk.Client
9696
return codersdk.CreateWorkspaceBuildRequest{}, err
9797
}
9898

99-
buildOptions, err := asWorkspaceBuildParameters(parameterFlags.buildOptions)
99+
ephemeralParameters, err := asWorkspaceBuildParameters(parameterFlags.ephemeralParameters)
100100
if err != nil {
101101
return codersdk.CreateWorkspaceBuildRequest{}, xerrors.Errorf("unable to parse build options: %w", err)
102102
}
@@ -117,12 +117,12 @@ func buildWorkspaceStartRequest(inv *serpent.Invocation, client *codersdk.Client
117117
NewWorkspaceName: workspace.Name,
118118
LastBuildParameters: lastBuildParameters,
119119

120-
PromptBuildOptions: parameterFlags.promptBuildOptions,
121-
BuildOptions: buildOptions,
122-
PromptRichParameters: parameterFlags.promptRichParameters,
123-
RichParameters: cliRichParameters,
124-
RichParameterFile: parameterFlags.richParameterFile,
125-
RichParameterDefaults: cliRichParameterDefaults,
120+
PromptEphemeralParameters: parameterFlags.promptEphemeralParameters,
121+
EphemeralParameters: ephemeralParameters,
122+
PromptRichParameters: parameterFlags.promptRichParameters,
123+
RichParameters: cliRichParameters,
124+
RichParameterFile: parameterFlags.richParameterFile,
125+
RichParameterDefaults: cliRichParameterDefaults,
126126
})
127127
if err != nil {
128128
return codersdk.CreateWorkspaceBuildRequest{}, err

cli/start_test.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,7 @@ func TestStart(t *testing.T) {
115115
workspaceBuild := coderdtest.CreateWorkspaceBuild(t, client, workspace, database.WorkspaceTransitionStop)
116116
coderdtest.AwaitWorkspaceBuildJobCompleted(t, client, workspaceBuild.ID)
117117

118-
inv, root := clitest.New(t, "start", workspace.Name, "--build-options")
118+
inv, root := clitest.New(t, "start", workspace.Name, "--prompt-ephemeral-parameters")
119119
clitest.SetupConfig(t, member, root)
120120
doneChan := make(chan struct{})
121121
pty := ptytest.New(t).Attach(inv)
@@ -140,7 +140,7 @@ func TestStart(t *testing.T) {
140140
}
141141
<-doneChan
142142

143-
// Verify if build option is set
143+
// Verify if ephemeral parameter is set
144144
ctx, cancel := context.WithTimeout(context.Background(), testutil.WaitShort)
145145
defer cancel()
146146

@@ -154,7 +154,7 @@ func TestStart(t *testing.T) {
154154
})
155155
})
156156

157-
t.Run("BuildOptionFlags", func(t *testing.T) {
157+
t.Run("EphemeralParameterFlags", func(t *testing.T) {
158158
t.Parallel()
159159

160160
client := coderdtest.New(t, &coderdtest.Options{IncludeProvisionerDaemon: true})
@@ -170,7 +170,7 @@ func TestStart(t *testing.T) {
170170
coderdtest.AwaitWorkspaceBuildJobCompleted(t, client, workspaceBuild.ID)
171171

172172
inv, root := clitest.New(t, "start", workspace.Name,
173-
"--build-option", fmt.Sprintf("%s=%s", ephemeralParameterName, ephemeralParameterValue))
173+
"--ephemeral-parameter", fmt.Sprintf("%s=%s", ephemeralParameterName, ephemeralParameterValue))
174174
clitest.SetupConfig(t, member, root)
175175
doneChan := make(chan struct{})
176176
pty := ptytest.New(t).Attach(inv)
@@ -183,7 +183,7 @@ func TestStart(t *testing.T) {
183183
pty.ExpectMatch("workspace has been started")
184184
<-doneChan
185185

186-
// Verify if build option is set
186+
// Verify if ephemeral parameter is set
187187
ctx, cancel := context.WithTimeout(context.Background(), testutil.WaitShort)
188188
defer cancel()
189189

cli/update.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ func (r *RootCmd) update() *serpent.Command {
2929
if err != nil {
3030
return err
3131
}
32-
if !workspace.Outdated && !parameterFlags.promptRichParameters && !parameterFlags.promptBuildOptions && len(parameterFlags.buildOptions) == 0 {
32+
if !workspace.Outdated && !parameterFlags.promptRichParameters && !parameterFlags.promptEphemeralParameters && len(parameterFlags.ephemeralParameters) == 0 {
3333
_, _ = fmt.Fprintf(inv.Stdout, "Workspace isn't outdated!\n")
3434
return nil
3535
}

cli/update_test.go

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -160,7 +160,7 @@ func TestUpdateWithRichParameters(t *testing.T) {
160160
<-doneChan
161161
})
162162

163-
t.Run("BuildOptions", func(t *testing.T) {
163+
t.Run("PromptEphemeralParameters", func(t *testing.T) {
164164
t.Parallel()
165165

166166
client := coderdtest.New(t, &coderdtest.Options{IncludeProvisionerDaemon: true})
@@ -186,7 +186,7 @@ func TestUpdateWithRichParameters(t *testing.T) {
186186
err := inv.Run()
187187
assert.NoError(t, err)
188188

189-
inv, root = clitest.New(t, "update", workspaceName, "--build-options")
189+
inv, root = clitest.New(t, "update", workspaceName, "--prompt-ephemeral-parameters")
190190
clitest.SetupConfig(t, member, root)
191191

192192
doneChan := make(chan struct{})
@@ -211,7 +211,7 @@ func TestUpdateWithRichParameters(t *testing.T) {
211211
}
212212
<-doneChan
213213

214-
// Verify if build option is set
214+
// Verify if ephemeral parameter is set
215215
ctx, cancel := context.WithTimeout(context.Background(), testutil.WaitShort)
216216
defer cancel()
217217

@@ -225,7 +225,7 @@ func TestUpdateWithRichParameters(t *testing.T) {
225225
})
226226
})
227227

228-
t.Run("BuildOptionFlags", func(t *testing.T) {
228+
t.Run("EphemeralParameterFlags", func(t *testing.T) {
229229
t.Parallel()
230230

231231
client := coderdtest.New(t, &coderdtest.Options{IncludeProvisionerDaemon: true})
@@ -247,7 +247,7 @@ func TestUpdateWithRichParameters(t *testing.T) {
247247
assert.NoError(t, err)
248248

249249
inv, root = clitest.New(t, "update", workspaceName,
250-
"--build-option", fmt.Sprintf("%s=%s", ephemeralParameterName, ephemeralParameterValue))
250+
"--ephemeral-parameter", fmt.Sprintf("%s=%s", ephemeralParameterName, ephemeralParameterValue))
251251
clitest.SetupConfig(t, member, root)
252252

253253
doneChan := make(chan struct{})
@@ -261,7 +261,7 @@ func TestUpdateWithRichParameters(t *testing.T) {
261261
pty.ExpectMatch("Planning workspace")
262262
<-doneChan
263263

264-
// Verify if build option is set
264+
// Verify if ephemeral parameter is set
265265
ctx, cancel := context.WithTimeout(context.Background(), testutil.WaitShort)
266266
defer cancel()
267267

0 commit comments

Comments
 (0)