2121 ErrMultilineResultCmd = errors .New ("Got multiline result from command" )
2222)
2323
24- var templateFuncs template.FuncMap
24+ var (
25+ templateFuncs template.FuncMap
26+ )
2527
2628func init () {
2729 taskFuncs := template.FuncMap {
@@ -51,18 +53,13 @@ func init() {
5153
5254// ReplaceVariables writes vars into initial string
5355func (e * Executor ) ReplaceVariables (initial string , call Call ) (string , error ) {
54- vars , err := e .getVariables (call )
55- if err != nil {
56- return "" , err
57- }
58-
5956 templ , err := template .New ("" ).Funcs (templateFuncs ).Parse (initial )
6057 if err != nil {
6158 return "" , err
6259 }
6360
6461 var b bytes.Buffer
65- if err = templ .Execute (& b , vars ); err != nil {
62+ if err = templ .Execute (& b , call . Vars ); err != nil {
6663 return "" , err
6764 }
6865 return b .String (), nil
@@ -85,27 +82,36 @@ func (e *Executor) getVariables(call Call) (Vars, error) {
8582 t := e .Tasks [call .Task ]
8683
8784 result := make (Vars , len (t .Vars )+ len (e .taskvars )+ len (call .Vars ))
88- merge := func (vars Vars ) error {
85+ merge := func (vars Vars , runTemplate bool ) error {
8986 for k , v := range vars {
87+ if runTemplate {
88+ var err error
89+ v , err = e .ReplaceVariables (v , call )
90+ if err != nil {
91+ return err
92+ }
93+ }
94+
9095 v , err := e .handleDynamicVariableContent (v )
9196 if err != nil {
9297 return err
9398 }
99+
94100 result [k ] = v
95101 }
96102 return nil
97103 }
98104
99- if err := merge (e .taskvars ); err != nil {
105+ if err := merge (e .taskvars , false ); err != nil {
100106 return nil , err
101107 }
102- if err := merge (t .Vars ); err != nil {
108+ if err := merge (t .Vars , true ); err != nil {
103109 return nil , err
104110 }
105- if err := merge (getEnvironmentVariables ()); err != nil {
111+ if err := merge (getEnvironmentVariables (), false ); err != nil {
106112 return nil , err
107113 }
108- if err := merge (call .Vars ); err != nil {
114+ if err := merge (call .Vars , false ); err != nil {
109115 return nil , err
110116 }
111117
0 commit comments