func mergeEnvs()

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
}