Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit58c2ce1

Browse files
authored
refactor(cli): load template variables (#11234)
1 parentfa91992 commit58c2ce1

File tree

3 files changed

+98
-69
lines changed

3 files changed

+98
-69
lines changed

‎cli/templatecreate.go‎

Lines changed: 21 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,6 @@ import (
55
"fmt"
66
"io"
77
"net/http"
8-
"os"
9-
"path/filepath"
108
"strings"
119
"time"
1210
"unicode/utf8"
@@ -27,7 +25,7 @@ func (r *RootCmd) templateCreate() *clibase.Cmd {
2725
provisionerstring
2826
provisionerTags []string
2927
variablesFilestring
30-
variables []string
28+
commandLineVariables []string
3129
disableEveryonebool
3230
requireActiveVersionbool
3331

@@ -129,15 +127,21 @@ func (r *RootCmd) templateCreate() *clibase.Cmd {
129127
returnerr
130128
}
131129

130+
userVariableValues,err:=ParseUserVariableValues(
131+
variablesFile,
132+
commandLineVariables)
133+
iferr!=nil {
134+
returnerr
135+
}
136+
132137
job,err:=createValidTemplateVersion(inv,createValidTemplateVersionArgs{
133-
Message:message,
134-
Client:client,
135-
Organization:organization,
136-
Provisioner:codersdk.ProvisionerType(provisioner),
137-
FileID:resp.ID,
138-
ProvisionerTags:tags,
139-
VariablesFile:variablesFile,
140-
Variables:variables,
138+
Message:message,
139+
Client:client,
140+
Organization:organization,
141+
Provisioner:codersdk.ProvisionerType(provisioner),
142+
FileID:resp.ID,
143+
ProvisionerTags:tags,
144+
UserVariableValues:userVariableValues,
141145
})
142146
iferr!=nil {
143147
returnerr
@@ -197,12 +201,12 @@ func (r *RootCmd) templateCreate() *clibase.Cmd {
197201
{
198202
Flag:"variable",
199203
Description:"Specify a set of values for Terraform-managed variables.",
200-
Value:clibase.StringArrayOf(&variables),
204+
Value:clibase.StringArrayOf(&commandLineVariables),
201205
},
202206
{
203207
Flag:"var",
204208
Description:"Alias of --variable.",
205-
Value:clibase.StringArrayOf(&variables),
209+
Value:clibase.StringArrayOf(&commandLineVariables),
206210
},
207211
{
208212
Flag:"provisioner-tag",
@@ -267,40 +271,27 @@ type createValidTemplateVersionArgs struct {
267271
Provisioner codersdk.ProvisionerType
268272
FileID uuid.UUID
269273

270-
VariablesFilestring
271-
Variables []string
272-
273274
// Template is only required if updating a template's active version.
274275
Template*codersdk.Template
275276
// ReuseParameters will attempt to reuse params from the Template field
276277
// before prompting the user. Set to false to always prompt for param
277278
// values.
278-
ReuseParametersbool
279-
ProvisionerTagsmap[string]string
279+
ReuseParametersbool
280+
ProvisionerTagsmap[string]string
281+
UserVariableValues []codersdk.VariableValue
280282
}
281283

282284
funccreateValidTemplateVersion(inv*clibase.Invocation,argscreateValidTemplateVersionArgs) (*codersdk.TemplateVersion,error) {
283285
client:=args.Client
284286

285-
variableValues,err:=loadVariableValuesFromFile(args.VariablesFile)
286-
iferr!=nil {
287-
returnnil,err
288-
}
289-
290-
variableValuesFromKeyValues,err:=loadVariableValuesFromOptions(args.Variables)
291-
iferr!=nil {
292-
returnnil,err
293-
}
294-
variableValues=append(variableValues,variableValuesFromKeyValues...)
295-
296287
req:= codersdk.CreateTemplateVersionRequest{
297288
Name:args.Name,
298289
Message:args.Message,
299290
StorageMethod:codersdk.ProvisionerStorageMethodFile,
300291
FileID:args.FileID,
301292
Provisioner:args.Provisioner,
302293
ProvisionerTags:args.ProvisionerTags,
303-
UserVariableValues:variableValues,
294+
UserVariableValues:args.UserVariableValues,
304295
}
305296
ifargs.Template!=nil {
306297
req.TemplateID=args.Template.ID
@@ -364,23 +355,6 @@ func createValidTemplateVersion(inv *clibase.Invocation, args createValidTemplat
364355
return&version,nil
365356
}
366357

367-
// prettyDirectoryPath returns a prettified path when inside the users
368-
// home directory. Falls back to dir if the users home directory cannot
369-
// discerned. This function calls filepath.Clean on the result.
370-
funcprettyDirectoryPath(dirstring)string {
371-
dir=filepath.Clean(dir)
372-
homeDir,err:=os.UserHomeDir()
373-
iferr!=nil {
374-
returndir
375-
}
376-
prettyDir:=dir
377-
ifstrings.HasPrefix(prettyDir,homeDir) {
378-
prettyDir=strings.TrimPrefix(prettyDir,homeDir)
379-
prettyDir="~"+prettyDir
380-
}
381-
returnprettyDir
382-
}
383-
384358
funcParseProvisionerTags(rawTags []string) (map[string]string,error) {
385359
tags:=map[string]string{}
386360
for_,rawTag:=rangerawTags {

‎cli/templatepush.go‎

Lines changed: 44 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import (
44
"bufio"
55
"fmt"
66
"io"
7+
"os"
78
"path/filepath"
89
"strings"
910
"time"
@@ -155,16 +156,16 @@ func (pf *templateUploadFlags) templateName(args []string) (string, error) {
155156

156157
func (r*RootCmd)templatePush()*clibase.Cmd {
157158
var (
158-
versionNamestring
159-
provisionerstring
160-
workdirstring
161-
variablesFilestring
162-
variables []string
163-
alwaysPromptbool
164-
provisionerTags []string
165-
uploadFlagstemplateUploadFlags
166-
activatebool
167-
createbool
159+
versionNamestring
160+
provisionerstring
161+
workdirstring
162+
variablesFilestring
163+
commandLineVariables []string
164+
alwaysPromptbool
165+
provisionerTags[]string
166+
uploadFlagstemplateUploadFlags
167+
activatebool
168+
createbool
168169
)
169170
client:=new(codersdk.Client)
170171
cmd:=&clibase.Cmd{
@@ -213,15 +214,21 @@ func (r *RootCmd) templatePush() *clibase.Cmd {
213214
returnerr
214215
}
215216

217+
userVariableValues,err:=ParseUserVariableValues(
218+
variablesFile,
219+
commandLineVariables)
220+
iferr!=nil {
221+
returnerr
222+
}
223+
216224
args:=createValidTemplateVersionArgs{
217-
Message:message,
218-
Client:client,
219-
Organization:organization,
220-
Provisioner:codersdk.ProvisionerType(provisioner),
221-
FileID:resp.ID,
222-
ProvisionerTags:tags,
223-
VariablesFile:variablesFile,
224-
Variables:variables,
225+
Message:message,
226+
Client:client,
227+
Organization:organization,
228+
Provisioner:codersdk.ProvisionerType(provisioner),
229+
FileID:resp.ID,
230+
ProvisionerTags:tags,
231+
UserVariableValues:userVariableValues,
225232
}
226233

227234
if!createTemplate {
@@ -291,12 +298,12 @@ func (r *RootCmd) templatePush() *clibase.Cmd {
291298
{
292299
Flag:"variable",
293300
Description:"Specify a set of values for Terraform-managed variables.",
294-
Value:clibase.StringArrayOf(&variables),
301+
Value:clibase.StringArrayOf(&commandLineVariables),
295302
},
296303
{
297304
Flag:"var",
298305
Description:"Alias of --variable.",
299-
Value:clibase.StringArrayOf(&variables),
306+
Value:clibase.StringArrayOf(&commandLineVariables),
300307
},
301308
{
302309
Flag:"provisioner-tag",
@@ -330,3 +337,20 @@ func (r *RootCmd) templatePush() *clibase.Cmd {
330337
cmd.Options=append(cmd.Options,uploadFlags.options()...)
331338
returncmd
332339
}
340+
341+
// prettyDirectoryPath returns a prettified path when inside the users
342+
// home directory. Falls back to dir if the users home directory cannot
343+
// discerned. This function calls filepath.Clean on the result.
344+
funcprettyDirectoryPath(dirstring)string {
345+
dir=filepath.Clean(dir)
346+
homeDir,err:=os.UserHomeDir()
347+
iferr!=nil {
348+
returndir
349+
}
350+
prettyDir:=dir
351+
ifstrings.HasPrefix(prettyDir,homeDir) {
352+
prettyDir=strings.TrimPrefix(prettyDir,homeDir)
353+
prettyDir="~"+prettyDir
354+
}
355+
returnprettyDir
356+
}

‎cli/templatevariables.go‎

Lines changed: 33 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,21 @@ import (
1010
"github.com/coder/coder/v2/codersdk"
1111
)
1212

13-
funcloadVariableValuesFromFile(variablesFilestring) ([]codersdk.VariableValue,error) {
13+
funcParseUserVariableValues(variablesFilestring,commandLineVariables []string) ([]codersdk.VariableValue,error) {
14+
fromFile,err:=parseVariableValuesFromFile(variablesFile)
15+
iferr!=nil {
16+
returnnil,err
17+
}
18+
19+
fromCommandLine,err:=parseVariableValuesFromCommandLine(commandLineVariables)
20+
iferr!=nil {
21+
returnnil,err
22+
}
23+
24+
returncombineVariableValues(fromFile,fromCommandLine),nil
25+
}
26+
27+
funcparseVariableValuesFromFile(variablesFilestring) ([]codersdk.VariableValue,error) {
1428
varvalues []codersdk.VariableValue
1529
ifvariablesFile=="" {
1630
returnvalues,nil
@@ -50,7 +64,7 @@ func createVariablesMapFromFile(variablesFile string) (map[string]string, error)
5064
returnvariablesMap,nil
5165
}
5266

53-
funcloadVariableValuesFromOptions(variables []string) ([]codersdk.VariableValue,error) {
67+
funcparseVariableValuesFromCommandLine(variables []string) ([]codersdk.VariableValue,error) {
5468
varvalues []codersdk.VariableValue
5569
for_,keyValue:=rangevariables {
5670
split:=strings.SplitN(keyValue,"=",2)
@@ -65,3 +79,20 @@ func loadVariableValuesFromOptions(variables []string) ([]codersdk.VariableValue
6579
}
6680
returnvalues,nil
6781
}
82+
83+
funccombineVariableValues(valuesSets...[]codersdk.VariableValue) []codersdk.VariableValue {
84+
combinedValues:=make(map[string]string)
85+
86+
for_,values:=rangevaluesSets {
87+
for_,v:=rangevalues {
88+
combinedValues[v.Name]=v.Value
89+
}
90+
}
91+
92+
varresult []codersdk.VariableValue
93+
forname,value:=rangecombinedValues {
94+
result=append(result, codersdk.VariableValue{Name:name,Value:value})
95+
}
96+
97+
returnresult
98+
}

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp