WIP: added fallback env
This commit is contained in:
30
task/env/env.go
vendored
30
task/env/env.go
vendored
@@ -95,3 +95,33 @@ func ExpandEnv(env []string, input []string) []string {
|
||||
}
|
||||
return input
|
||||
}
|
||||
|
||||
func FallbackEnv(env []string, fallbacks []string) []string {
|
||||
envMap := make(map[string]string)
|
||||
for _, e := range env {
|
||||
key, value, ok := strings.Cut(e, "=")
|
||||
if !ok {
|
||||
wingmate.Log().Warn().Msgf("removing bad environment:", e)
|
||||
continue
|
||||
}
|
||||
envMap[key] = value
|
||||
}
|
||||
|
||||
for _, e := range fallbacks {
|
||||
key, value, ok := strings.Cut(e, "=")
|
||||
if !ok {
|
||||
wingmate.Log().Warn().Msgf("removing bad environment:", e)
|
||||
continue
|
||||
}
|
||||
|
||||
value = envCapture.ReplaceAllStringFunc(value, func(rep string) string {
|
||||
return expandEnv(envMap, rep)
|
||||
})
|
||||
|
||||
if _, ok = envMap[key]; !ok {
|
||||
env = append(env, fmt.Sprintf("%s=%s", key, value))
|
||||
}
|
||||
}
|
||||
|
||||
return env
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user