Skip to content

Commit 625dbe4

Browse files
author
Tobias Bauriedel
authored
Standadise wizard arguments (#147)
1 parent d24a311 commit 625dbe4

File tree

1 file changed

+61
-48
lines changed

1 file changed

+61
-48
lines changed

internal/config/wizard.go

Lines changed: 61 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -73,17 +73,20 @@ func (w *Wizard) Parse(availableModules string) {
7373
// required: bool
7474
// dependency: Add dependency function to validate if that argument will be added or not
7575
func (w *Wizard) AddStringVar(callback *string, name, defaultValue, usage string, required bool, dependency func() bool) {
76-
w.Arguments = append(w.Arguments, argument{
77-
name: name,
78-
inputFunction: func() {
79-
if *callback != "" {
80-
defaultValue = *callback
81-
}
82-
83-
w.newStringPromptWithDefault(callback, defaultValue, usage, required)
84-
},
76+
arg := argument{
77+
name: name,
8578
dependency: dependency,
86-
})
79+
}
80+
81+
arg.inputFunction = func() {
82+
if *callback != "" {
83+
defaultValue = *callback
84+
}
85+
86+
w.newStringPromptWithDefault(callback, defaultValue, usage, required)
87+
}
88+
89+
w.Arguments = append(w.Arguments, arg)
8790
}
8891

8992
// AddSliceVarFromString reads a single string from stdin. This string will be separated by ',' and the resulting slice will be returned
@@ -95,20 +98,23 @@ func (w *Wizard) AddStringVar(callback *string, name, defaultValue, usage string
9598
// required: bool
9699
// dependency: Add dependency function to validate if that argument will be added or not
97100
func (w *Wizard) AddSliceVarFromString(callback *[]string, name string, defaultValue []string, usage string, required bool, dependency func() bool) {
98-
w.Arguments = append(w.Arguments, argument{
99-
name: name,
100-
inputFunction: func() {
101-
if len(*callback) > 0 {
102-
defaultValue = *callback
103-
}
101+
arg := argument{
102+
name: name,
103+
dependency: dependency,
104+
}
104105

105-
var input string
106+
arg.inputFunction = func() {
107+
if len(*callback) > 0 {
108+
defaultValue = *callback
109+
}
106110

107-
w.newStringPromptWithDefault(&input, strings.Join(defaultValue, ","), usage, required)
108-
*callback = strings.Split(strings.ReplaceAll(input, " ", ""), ",")
109-
},
110-
dependency: dependency,
111-
})
111+
var input string
112+
113+
w.newStringPromptWithDefault(&input, strings.Join(defaultValue, ","), usage, required)
114+
*callback = strings.Split(strings.ReplaceAll(input, " ", ""), ",")
115+
}
116+
117+
w.Arguments = append(w.Arguments, arg)
112118
}
113119

114120
// AddBoolVar adds argument for a boolean variable
@@ -119,13 +125,16 @@ func (w *Wizard) AddSliceVarFromString(callback *[]string, name string, defaultV
119125
// usage: usage string
120126
// dependency: Add dependency function to validate if that argument will be added or not
121127
func (w *Wizard) AddBoolVar(callback *bool, name string, defaultValue bool, usage string, dependency func() bool) {
122-
w.Arguments = append(w.Arguments, argument{
123-
name: name,
124-
inputFunction: func() {
125-
w.newBoolPrompt(callback, defaultValue, usage)
126-
},
128+
arg := argument{
129+
name: name,
127130
dependency: dependency,
128-
})
131+
}
132+
133+
arg.inputFunction = func() {
134+
w.newBoolPrompt(callback, defaultValue, usage)
135+
}
136+
137+
w.Arguments = append(w.Arguments, arg)
129138
}
130139

131140
// AddStringSliceVar adds argument for a slice of strings.
@@ -170,30 +179,34 @@ func (w *Wizard) AddStringSliceVar(callback *[]string, name string, defaultValue
170179
}
171180

172181
func (w *Wizard) AddIcingaEndpoints(callback *[]icingaapi.Endpoint, name, usage string, dependency func() bool) {
173-
w.Arguments = append(w.Arguments, argument{
174-
name: name,
175-
inputFunction: func() {
176-
// Ask if endpoint should be added. If not, return
177-
var collect bool
178-
w.newBoolPrompt(&collect, true, usage)
179-
180-
if !collect {
181-
return
182-
}
182+
arg := argument{
183+
name: name,
184+
dependency: dependency,
185+
}
186+
187+
arg.inputFunction = func() {
188+
// Ask if endpoint should be added. If not, return
189+
var collect bool
183190

184-
var endpoints []icingaapi.Endpoint
191+
w.newBoolPrompt(&collect, true, usage)
185192

186-
for collect {
187-
e := w.newIcinga2EndpointPrompt()
188-
endpoints = append(endpoints, e)
193+
if !collect {
194+
return
195+
}
189196

190-
w.newBoolPrompt(&collect, false, "Collect more Icinga 2 API endpoints?")
191-
}
197+
var endpoints []icingaapi.Endpoint
192198

193-
*callback = endpoints
194-
},
195-
dependency: dependency,
196-
})
199+
for collect {
200+
e := w.newIcinga2EndpointPrompt()
201+
endpoints = append(endpoints, e)
202+
203+
w.newBoolPrompt(&collect, false, "Collect more Icinga 2 API endpoints?")
204+
}
205+
206+
*callback = endpoints
207+
}
208+
209+
w.Arguments = append(w.Arguments, arg)
197210
}
198211

199212
// newStringPromptWithDefault creates a new stdout / stdin prompt for a string

0 commit comments

Comments
 (0)