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

Commitdc80543

Browse files
committed
Refactor reading params into a separate module
1 parente69ae31 commitdc80543

File tree

4 files changed

+64
-43
lines changed

4 files changed

+64
-43
lines changed

‎cli/create.go

Lines changed: 4 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,11 @@ package cli
22

33
import (
44
"fmt"
5-
"os"
65
"time"
76

87
"github.com/spf13/cobra"
98
"golang.org/x/exp/slices"
109
"golang.org/x/xerrors"
11-
"gopkg.in/yaml.v3"
1210

1311
"github.com/coder/coder/cli/cliflag"
1412
"github.com/coder/coder/cli/cliui"
@@ -120,17 +118,10 @@ func create() *cobra.Command {
120118
returnerr
121119
}
122120

123-
parameterValues:=make(map[string]string)
124-
121+
varparameterMapmap[string]string
125122
ifparameterFile!="" {
126-
parameterFileContents,err:=os.ReadFile(parameterFile)
127-
128-
iferr!=nil {
129-
returnerr
130-
}
131-
132-
err=yaml.Unmarshal(parameterFileContents,&parameterValues)
133-
123+
_,_=fmt.Fprintln(cmd.OutOrStdout(),cliui.Styles.Paragraph.Render("Attempting to read the variables from the parameter file.")+"\r\n")
124+
parameterMap,err=createParameterMapFromFile(parameterFile)
134125
iferr!=nil {
135126
returnerr
136127
}
@@ -146,17 +137,7 @@ func create() *cobra.Command {
146137
_,_=fmt.Fprintln(cmd.OutOrStdout(),cliui.Styles.Paragraph.Render("This template has customizable parameters. Values can be changed after create, but may have unintended side effects (like data loss).")+"\r\n")
147138
disclaimerPrinted=true
148139
}
149-
150-
varparameterValuestring
151-
ifparameterFile!="" {
152-
ifparameterValues[parameterSchema.Name]=="" {
153-
returnxerrors.Errorf("Parameter value absent in parameter file for %q!",parameterSchema.Name)
154-
}
155-
parameterValue=parameterValues[parameterSchema.Name]
156-
}else {
157-
parameterValue,err=cliui.ParameterSchema(cmd,parameterSchema)
158-
}
159-
140+
parameterValue,err:=getParameterValueFromMapOrInput(cmd,parameterMap,parameterSchema)
160141
iferr!=nil {
161142
returnerr
162143
}

‎cli/parameter.go

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
package cli
2+
3+
import (
4+
"os"
5+
6+
"golang.org/x/xerrors"
7+
"gopkg.in/yaml.v3"
8+
9+
"github.com/coder/coder/cli/cliui"
10+
"github.com/coder/coder/codersdk"
11+
"github.com/spf13/cobra"
12+
)
13+
14+
// Reads a YAML file and populates a string -> string map.
15+
// Throws an error if the file name is empty.
16+
funccreateParameterMapFromFile(parameterFilestring) (map[string]string,error) {
17+
ifparameterFile!="" {
18+
parameterMap:=make(map[string]string)
19+
20+
parameterFileContents,err:=os.ReadFile(parameterFile)
21+
22+
iferr!=nil {
23+
returnnil,err
24+
}
25+
26+
err=yaml.Unmarshal(parameterFileContents,&parameterMap)
27+
28+
iferr!=nil {
29+
returnnil,err
30+
}
31+
32+
returnparameterMap,nil
33+
}
34+
35+
returnnil,xerrors.Errorf("Parameter file name is not specified")
36+
}
37+
38+
// Returns a parameter value from a given map, if the map exists, else takes input from the user.
39+
// Throws an error if the map exists but does not include a value for the parameter.
40+
funcgetParameterValueFromMapOrInput(cmd*cobra.Command,parameterMapmap[string]string,parameterSchema codersdk.TemplateVersionParameterSchema) (string,error) {
41+
varparameterValuestring
42+
ifparameterMap!=nil {
43+
varokbool
44+
parameterValue,ok=parameterMap[parameterSchema.Name]
45+
if!ok {
46+
return"",xerrors.Errorf("Parameter value absent in parameter file for %q!",parameterSchema.Name)
47+
}
48+
}else {
49+
varerrerror
50+
parameterValue,err=cliui.ParameterSchema(cmd,parameterSchema)
51+
iferr!=nil {
52+
return"",err
53+
}
54+
}
55+
returnparameterValue,nil
56+
}

‎cli/templatecreate.go

Lines changed: 3 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ import (
1111
"github.com/briandowns/spinner"
1212
"github.com/spf13/cobra"
1313
"golang.org/x/xerrors"
14-
"gopkg.in/yaml.v3"
1514

1615
"github.com/coder/coder/cli/cliui"
1716
"github.com/coder/coder/coderd/database"
@@ -188,31 +187,16 @@ func createValidTemplateVersion(cmd *cobra.Command, client *codersdk.Client, org
188187
}
189188
_,_=fmt.Fprintln(cmd.OutOrStdout(),cliui.Styles.Paragraph.Render("This template has required variables! They are scoped to the template, and not viewable after being set.")+"\r\n")
190189

191-
parameterValuesFromFile:=make(map[string]string)
190+
varparameterMapmap[string]string
192191
ifparameterFile!="" {
193192
_,_=fmt.Fprintln(cmd.OutOrStdout(),cliui.Styles.Paragraph.Render("Attempting to read the variables from the parameter file.")+"\r\n")
194-
parameterFileContents,err:=os.ReadFile(parameterFile)
195-
196-
iferr!=nil {
197-
returnnil,nil,err
198-
}
199-
200-
err=yaml.Unmarshal(parameterFileContents,&parameterValuesFromFile)
201-
193+
parameterMap,err=createParameterMapFromFile(parameterFile)
202194
iferr!=nil {
203195
returnnil,nil,err
204196
}
205197
}
206198
for_,parameterSchema:=rangemissingSchemas {
207-
varparameterValuestring
208-
ifparameterFile!="" {
209-
ifparameterValuesFromFile[parameterSchema.Name]=="" {
210-
returnnil,nil,xerrors.Errorf("Required parameter value absent in parameter file for %q!",parameterSchema.Name)
211-
}
212-
parameterValue=parameterValuesFromFile[parameterSchema.Name]
213-
}else {
214-
parameterValue,err=cliui.ParameterSchema(cmd,parameterSchema)
215-
}
199+
parameterValue,err:=getParameterValueFromMapOrInput(cmd,parameterMap,parameterSchema)
216200
iferr!=nil {
217201
returnnil,nil,err
218202
}

‎go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,7 @@ require (
120120
google.golang.org/protobufv1.28.0
121121
gopkg.in/DataDog/dd-trace-go.v1v1.38.1
122122
gopkg.in/natefinch/lumberjack.v2v2.0.0
123+
gopkg.in/yaml.v3v3.0.0-20210107192922-496545a6307b
123124
k8s.io/utilsv0.0.0-20220210201930-3a6ce19ff2f9
124125
nhooyr.io/websocketv1.8.7
125126
storj.io/drpcv0.0.30
@@ -250,5 +251,4 @@ require (
250251
gopkg.in/ini.v1v1.62.0// indirect
251252
gopkg.in/square/go-jose.v2v2.6.0// indirect
252253
gopkg.in/yaml.v2v2.4.0// indirect
253-
gopkg.in/yaml.v3v3.0.0-20210107192922-496545a6307b// indirect
254254
)

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp