Skip to content

Commit 1227cc2

Browse files
authored
Merge pull request #2689 from semaphoreui/cli_args
refactor(be): add method getCLIArgs
2 parents a47b9f7 + ae9e2de commit 1227cc2

File tree

1 file changed

+44
-38
lines changed

1 file changed

+44
-38
lines changed

services/tasks/LocalJob.go

Lines changed: 44 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -185,22 +185,10 @@ func (t *LocalJob) getShellArgs(username string, incomingVersion *string) (args
185185
return
186186
}
187187

188-
var templateExtraArgs []string
189-
if t.Template.Arguments != nil {
190-
err = json.Unmarshal([]byte(*t.Template.Arguments), &templateExtraArgs)
191-
if err != nil {
192-
t.Log("Invalid format of the template extra arguments, must be valid JSON")
193-
return
194-
}
195-
}
196-
197-
var taskExtraArgs []string
198-
if t.Template.AllowOverrideArgsInTask && t.Task.Arguments != nil {
199-
err = json.Unmarshal([]byte(*t.Task.Arguments), &taskExtraArgs)
200-
if err != nil {
201-
t.Log("Invalid format of the TaskRunner extra arguments, must be valid JSON")
202-
return
203-
}
188+
templateArgs, taskArgs, err := t.getCLIArgs()
189+
if err != nil {
190+
t.Log(err.Error())
191+
return
204192
}
205193

206194
// Script to run
@@ -214,7 +202,7 @@ func (t *LocalJob) getShellArgs(username string, incomingVersion *string) (args
214202
}
215203

216204
// Include extra args from template
217-
args = append(args, templateExtraArgs...)
205+
args = append(args, templateArgs...)
218206

219207
// Include ExtraVars and Survey Vars
220208
for name, value := range extraVars {
@@ -224,7 +212,7 @@ func (t *LocalJob) getShellArgs(username string, incomingVersion *string) (args
224212
}
225213

226214
// Include extra args from task
227-
args = append(args, taskExtraArgs...)
215+
args = append(args, taskArgs...)
228216

229217
return
230218
}
@@ -259,6 +247,15 @@ func (t *LocalJob) getTerraformArgs(username string, incomingVersion *string) (a
259247
args = append(args, "-var", fmt.Sprintf("%s=%s", name, value))
260248
}
261249

250+
templateArgs, taskArgs, err := t.getCLIArgs()
251+
if err != nil {
252+
t.Log(err.Error())
253+
return
254+
}
255+
256+
args = append(args, templateArgs...)
257+
args = append(args, taskArgs...)
258+
262259
for _, secret := range t.Environment.Secrets {
263260
if secret.Type != db.EnvironmentSecretVar {
264261
continue
@@ -381,31 +378,19 @@ func (t *LocalJob) getPlaybookArgs(username string, incomingVersion *string) (ar
381378
args = append(args, "--extra-vars", fmt.Sprintf("%s=%s", secret.Name, secret.Secret))
382379
}
383380

384-
var templateExtraArgs []string
385-
if t.Template.Arguments != nil {
386-
err = json.Unmarshal([]byte(*t.Template.Arguments), &templateExtraArgs)
387-
if err != nil {
388-
t.Log("Invalid format of the template extra arguments, must be valid JSON")
389-
return
390-
}
391-
}
392-
393-
var taskExtraArgs []string
394-
if t.Template.AllowOverrideArgsInTask && t.Task.Arguments != nil {
395-
err = json.Unmarshal([]byte(*t.Task.Arguments), &taskExtraArgs)
396-
if err != nil {
397-
t.Log("Invalid format of the TaskRunner extra arguments, must be valid JSON")
398-
return
399-
}
381+
templateArgs, taskArgs, err := t.getCLIArgs()
382+
if err != nil {
383+
t.Log(err.Error())
384+
return
400385
}
401386

402387
if t.Task.Limit != "" {
403388
t.Log("--limit=" + t.Task.Limit)
404-
taskExtraArgs = append(taskExtraArgs, "--limit="+t.Task.Limit)
389+
templateArgs = append(templateArgs, "--limit="+t.Task.Limit)
405390
}
406391

407-
args = append(args, templateExtraArgs...)
408-
args = append(args, taskExtraArgs...)
392+
args = append(args, templateArgs...)
393+
args = append(args, taskArgs...)
409394
args = append(args, playbookName)
410395

411396
if line, ok := inputMap[db.AccessKeyRoleAnsibleUser]; ok {
@@ -419,6 +404,27 @@ func (t *LocalJob) getPlaybookArgs(username string, incomingVersion *string) (ar
419404
return
420405
}
421406

407+
func (t *LocalJob) getCLIArgs() (templateArgs []string, taskArgs []string, err error) {
408+
409+
if t.Template.Arguments != nil {
410+
err = json.Unmarshal([]byte(*t.Template.Arguments), &templateArgs)
411+
if err != nil {
412+
err = fmt.Errorf("invalid format of the template extra arguments, must be valid JSON")
413+
return
414+
}
415+
}
416+
417+
if t.Template.AllowOverrideArgsInTask && t.Task.Arguments != nil {
418+
err = json.Unmarshal([]byte(*t.Task.Arguments), &taskArgs)
419+
if err != nil {
420+
err = fmt.Errorf("invalid format of the TaskRunner extra arguments, must be valid JSON")
421+
return
422+
}
423+
}
424+
425+
return
426+
}
427+
422428
func (t *LocalJob) getParams() (params interface{}, err error) {
423429
switch t.Template.App {
424430
case db.AppAnsible:
@@ -641,7 +647,7 @@ func (t *LocalJob) checkoutRepository() error {
641647
func (t *LocalJob) installVaultKeyFiles() (err error) {
642648
t.vaultFileInstallations = make(map[string]db.AccessKeyInstallation)
643649

644-
if t.Template.Vaults == nil || len(t.Template.Vaults) == 0 {
650+
if len(t.Template.Vaults) == 0 {
645651
return nil
646652
}
647653

0 commit comments

Comments
 (0)