@ -106,6 +106,26 @@ func mergeConfig(c1, c2 Config) Config {
return c1
}
func ( c Config ) expandTargets ( pattern string ) ( [ ] string , error ) {
if _ , ok := c . Target [ pattern ] ; ok {
return [ ] string { pattern } , nil
}
var names [ ] string
for name := range c . Target {
ok , err := path . Match ( pattern , name )
if err != nil {
return nil , errors . Wrapf ( err , "could not match targets with '%s'" , pattern )
}
if ok {
names = append ( names , name )
}
}
if len ( names ) == 0 {
return nil , errors . Errorf ( "could not find any target matching '%s'" , pattern )
}
return names , nil
}
func ( c Config ) newOverrides ( v [ ] string ) ( map [ string ] Target , error ) {
m := map [ string ] Target { }
for _ , v := range v {
@ -116,16 +136,19 @@ func (c Config) newOverrides(v []string) (map[string]Target, error) {
return nil , errors . Errorf ( "invalid override key %s, expected target.name" , parts [ 0 ] )
}
name := keys [ 0 ]
pattern := keys [ 0 ]
if len ( parts ) != 2 && keys [ 1 ] != "args" {
return nil , errors . Errorf ( "invalid override %s, expected target.name=value" , v )
}
t := m [ name ]
if _, ok := c . Target [ name ] ; ! ok {
return nil , err ors. Errorf ( "unknown target %s" , name )
names, err := c . expandTargets ( pattern )
if err != nil {
return nil , err
}
for _ , name := range names {
t := m [ name ]
switch keys [ 1 ] {
case "context" :
t . Context = & parts [ 1 ]
@ -176,6 +199,7 @@ func (c Config) newOverrides(v []string) (map[string]Target, error) {
}
m [ name ] = t
}
}
return m , nil
}