Skip to content

Commit 9d9814c

Browse files
authored
refactor(cli): adjust parameter resolver (#9019)
1 parent 21af020 commit 9d9814c

File tree

1 file changed

+15
-15
lines changed

1 file changed

+15
-15
lines changed

cli/parameterresolver.go

+15-15
Original file line numberDiff line numberDiff line change
@@ -77,46 +77,46 @@ func (pr *ParameterResolver) Resolve(inv *clibase.Invocation, action WorkspaceCL
7777
}
7878

7979
func (pr *ParameterResolver) resolveWithParametersMapFile(resolved []codersdk.WorkspaceBuildParameter) []codersdk.WorkspaceBuildParameter {
80+
next:
8081
for name, value := range pr.richParametersFile {
8182
for i, r := range resolved {
8283
if r.Name == name {
8384
resolved[i].Value = value
84-
goto done
85+
continue next
8586
}
8687
}
8788

8889
resolved = append(resolved, codersdk.WorkspaceBuildParameter{
8990
Name: name,
9091
Value: value,
9192
})
92-
done:
9393
}
9494
return resolved
9595
}
9696

9797
func (pr *ParameterResolver) resolveWithCommandLineOrEnv(resolved []codersdk.WorkspaceBuildParameter) []codersdk.WorkspaceBuildParameter {
98+
nextRichParameter:
9899
for _, richParameter := range pr.richParameters {
99100
for i, r := range resolved {
100101
if r.Name == richParameter.Name {
101102
resolved[i].Value = richParameter.Value
102-
goto richParameterDone
103+
continue nextRichParameter
103104
}
104105
}
105106

106107
resolved = append(resolved, richParameter)
107-
richParameterDone:
108108
}
109109

110+
nextBuildOption:
110111
for _, buildOption := range pr.buildOptions {
111112
for i, r := range resolved {
112113
if r.Name == buildOption.Name {
113114
resolved[i].Value = buildOption.Value
114-
goto buildOptionDone
115+
continue nextBuildOption
115116
}
116117
}
117118

118119
resolved = append(resolved, buildOption)
119-
buildOptionDone:
120120
}
121121
return resolved
122122
}
@@ -126,6 +126,7 @@ func (pr *ParameterResolver) resolveWithLastBuildParameters(resolved []codersdk.
126126
return resolved // don't pull parameters from last build
127127
}
128128

129+
next:
129130
for _, buildParameter := range pr.lastBuildParameters {
130131
tvp := findTemplateVersionParameter(buildParameter, templateVersionParameters)
131132
if tvp == nil {
@@ -143,12 +144,11 @@ func (pr *ParameterResolver) resolveWithLastBuildParameters(resolved []codersdk.
143144
for i, r := range resolved {
144145
if r.Name == buildParameter.Name {
145146
resolved[i].Value = buildParameter.Value
146-
goto done
147+
continue next
147148
}
148149
}
149150

150151
resolved = append(resolved, buildParameter)
151-
done:
152152
}
153153
return resolved
154154
}
@@ -160,7 +160,7 @@ func (pr *ParameterResolver) verifyConstraints(resolved []codersdk.WorkspaceBuil
160160
return xerrors.Errorf("parameter %q is not present in the template", r.Name)
161161
}
162162

163-
if tvp.Ephemeral && !pr.promptBuildOptions && len(pr.buildOptions) == 0 {
163+
if tvp.Ephemeral && !pr.promptBuildOptions && findWorkspaceBuildParameter(tvp.Name, pr.buildOptions) == nil {
164164
return xerrors.Errorf("ephemeral parameter %q can be used only with --build-options or --build-option flag", r.Name)
165165
}
166166

@@ -173,12 +173,12 @@ func (pr *ParameterResolver) verifyConstraints(resolved []codersdk.WorkspaceBuil
173173

174174
func (pr *ParameterResolver) resolveWithInput(resolved []codersdk.WorkspaceBuildParameter, inv *clibase.Invocation, action WorkspaceCLIAction, templateVersionParameters []codersdk.TemplateVersionParameter) ([]codersdk.WorkspaceBuildParameter, error) {
175175
for _, tvp := range templateVersionParameters {
176-
p := findWorkspaceBuildParameter(tvp, resolved)
176+
p := findWorkspaceBuildParameter(tvp.Name, resolved)
177177
if p != nil {
178178
continue
179179
}
180180

181-
firstTimeUse := pr.isFirstTimeUse(tvp)
181+
firstTimeUse := pr.isFirstTimeUse(tvp.Name)
182182

183183
if (tvp.Ephemeral && pr.promptBuildOptions) ||
184184
tvp.Required ||
@@ -201,8 +201,8 @@ func (pr *ParameterResolver) resolveWithInput(resolved []codersdk.WorkspaceBuild
201201
return resolved, nil
202202
}
203203

204-
func (pr *ParameterResolver) isFirstTimeUse(tvp codersdk.TemplateVersionParameter) bool {
205-
return findWorkspaceBuildParameter(tvp, pr.lastBuildParameters) == nil
204+
func (pr *ParameterResolver) isFirstTimeUse(parameterName string) bool {
205+
return findWorkspaceBuildParameter(parameterName, pr.lastBuildParameters) == nil
206206
}
207207

208208
func findTemplateVersionParameter(workspaceBuildParameter codersdk.WorkspaceBuildParameter, templateVersionParameters []codersdk.TemplateVersionParameter) *codersdk.TemplateVersionParameter {
@@ -214,9 +214,9 @@ func findTemplateVersionParameter(workspaceBuildParameter codersdk.WorkspaceBuil
214214
return nil
215215
}
216216

217-
func findWorkspaceBuildParameter(tvp codersdk.TemplateVersionParameter, params []codersdk.WorkspaceBuildParameter) *codersdk.WorkspaceBuildParameter {
217+
func findWorkspaceBuildParameter(parameterName string, params []codersdk.WorkspaceBuildParameter) *codersdk.WorkspaceBuildParameter {
218218
for _, p := range params {
219-
if p.Name == tvp.Name {
219+
if p.Name == parameterName {
220220
return &p
221221
}
222222
}

0 commit comments

Comments
 (0)