@@ -42,17 +42,17 @@ func ExcludedPath(path string, excluded, included []*regexp.Regexp) bool {
4242 return false
4343}
4444
45- func ResolveAllExpressions (ctx context.Context , preparedConfig interface {}, dir string , exclude , include []* regexp.Regexp ) (interface {}, error ) {
45+ func ResolveAllExpressions (ctx context.Context , preparedConfig interface {}, dir string , exclude , include []* regexp.Regexp , variables map [ string ] interface {} ) (interface {}, error ) {
4646 switch t := preparedConfig .(type ) {
4747 case string :
48- return ResolveExpressions (ctx , t , dir )
48+ return ResolveExpressions (ctx , t , dir , variables )
4949 case map [string ]interface {}:
5050 err := walk .Walk (t , expressionMatchFn , func (path , value string ) (interface {}, error ) {
5151 if ExcludedPath (path , exclude , include ) {
5252 return value , nil
5353 }
5454
55- return ResolveExpressions (ctx , value , dir )
55+ return ResolveExpressions (ctx , value , dir , variables )
5656 })
5757 if err != nil {
5858 return nil , err
@@ -62,7 +62,7 @@ func ResolveAllExpressions(ctx context.Context, preparedConfig interface{}, dir
6262 case []interface {}:
6363 for i := range t {
6464 var err error
65- t [i ], err = ResolveAllExpressions (ctx , t [i ], dir , exclude , include )
65+ t [i ], err = ResolveAllExpressions (ctx , t [i ], dir , exclude , include , variables )
6666 if err != nil {
6767 return nil , err
6868 }
@@ -74,12 +74,17 @@ func ResolveAllExpressions(ctx context.Context, preparedConfig interface{}, dir
7474 return preparedConfig , nil
7575}
7676
77- func ResolveExpressions (ctx context.Context , value , dir string ) (interface {}, error ) {
77+ func ResolveExpressions (ctx context.Context , value , dir string , variables map [ string ] interface {} ) (interface {}, error ) {
7878 matches := ExpressionMatchRegex .FindAllStringSubmatch (value , - 1 )
7979 if len (matches ) == 0 {
8080 return value , nil
8181 }
8282
83+ vars := map [string ]string {}
84+ for k , v := range variables {
85+ vars [k ] = fmt .Sprintf ("%v" , v )
86+ }
87+
8388 out := value
8489 for _ , match := range matches {
8590 if len (match ) != 2 {
@@ -88,7 +93,7 @@ func ResolveExpressions(ctx context.Context, value, dir string) (interface{}, er
8893
8994 stdout := & bytes.Buffer {}
9095 stderr := & bytes.Buffer {}
91- err := engine .ExecuteSimpleShellCommand (ctx , dir , stdout , stderr , nil , nil , match [1 ], os .Args [1 :]... )
96+ err := engine .ExecuteSimpleShellCommand (ctx , dir , stdout , stderr , nil , vars , match [1 ], os .Args [1 :]... )
9297 if err != nil {
9398 if len (strings .TrimSpace (stdout .String ())) == 0 && len (strings .TrimSpace (stderr .String ())) == 0 {
9499 if exitError , ok := err .(* exec.ExitError ); ok && exitError .ExitCode () == 1 {
0 commit comments