in graph/task.go [388:421]
func mergeEnvs(dest []string, src []string) ([]string, error) {
if len(src) < 1 {
return dest, nil
}
var newEnvs []string
for _, env := range src {
newEnv := strings.Split(env, ",")
newEnvs = append(newEnvs, newEnv...)
}
var stepmap = make(map[string]string)
for _, env := range dest {
pair := strings.SplitN(env, "=", 2)
if len(pair) != 2 {
err := fmt.Errorf("cannot parse step environment variable %s correctly", env)
return dest, err
}
stepmap[pair[0]] = pair[1]
}
for _, env := range newEnvs {
pair := strings.SplitN(env, "=", 2)
if len(pair) != 2 {
err := fmt.Errorf("cannot parse task environment variable %s correctly", env)
return dest, err
}
if _, ok := stepmap[pair[0]]; !ok {
dest = append(dest, pair[0]+"="+pair[1])
}
}
return dest, nil
}