@@ -173,26 +173,54 @@ func (t *LocalJob) getEnvironmentENV() (res []string, err error) {
173
173
174
174
// nolint: gocyclo
175
175
func (t * LocalJob ) getShellArgs (username string , incomingVersion * string ) (args []string , err error ) {
176
- //extraVars, err := t.getEnvironmentExtraVars(username, incomingVersion)
176
+ extraVars , err := t .getEnvironmentExtraVars (username , incomingVersion )
177
+
178
+ if err != nil {
179
+ t .Log (err .Error ())
180
+ t .Log ("Error getting environment extra vars" )
181
+ return
182
+ }
183
+
184
+ var templateExtraArgs []string
185
+ if t .Template .Arguments != nil {
186
+ err = json .Unmarshal ([]byte (* t .Template .Arguments ), & templateExtraArgs )
187
+ if err != nil {
188
+ t .Log ("Invalid format of the template extra arguments, must be valid JSON" )
189
+ return
190
+ }
191
+ }
177
192
193
+ var taskExtraArgs []string
194
+ if t .Template .AllowOverrideArgsInTask && t .Task .Arguments != nil {
195
+ err = json .Unmarshal ([]byte (* t .Task .Arguments ), & taskExtraArgs )
196
+ if err != nil {
197
+ t .Log ("Invalid format of the TaskRunner extra arguments, must be valid JSON" )
198
+ return
199
+ }
200
+ }
201
+
202
+ // Script to run
178
203
args = append (args , t .Template .Playbook )
179
204
180
- //if err != nil {
181
- // t.Log(err.Error())
182
- // t.Log("Could not remove command environment, if existant it will be passed to --extra-vars. This is not fatal but be aware of side effects")
183
- // return
184
- //}
205
+ // Include Environment Secret Vars
206
+ for _ , secret := range t .Environment .Secrets {
207
+ if secret .Type == db .EnvironmentSecretVar {
208
+ args = append (args , fmt .Sprintf ("%s=%s" , secret .Name , secret .Secret ))
209
+ }
210
+ }
185
211
186
- //for name, value := range extraVars {
187
- // if name == "semaphore_vars" {
188
- // continue
189
- // }
190
- // args = append(args, fmt.Sprintf("%s=%s", name, value))
191
- //}
192
- //
193
- //for _, secret := range t.Environment.Secrets {
194
- // args = append(args, fmt.Sprintf("%s=%s", secret.Name, secret.Secret))
195
- //}
212
+ // Include extra args from template
213
+ args = append (args , templateExtraArgs ... )
214
+
215
+ // Include ExtraVars and Survey Vars
216
+ for name , value := range extraVars {
217
+ if name != "semaphore_vars" {
218
+ args = append (args , fmt .Sprintf ("%s=%s" , name , value ))
219
+ }
220
+ }
221
+
222
+ // Include extra args from task
223
+ args = append (args , taskExtraArgs ... )
196
224
197
225
return
198
226
}
0 commit comments