WIP: added fallback env

This commit is contained in:
2025-05-26 21:05:12 +10:00
parent 1827cf2e3e
commit 438e48c6fe
5 changed files with 68 additions and 20 deletions

30
task/env/env.go vendored
View File

@@ -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
}