@@ -93,8 +93,38 @@ func Load(workingDir string, debug bool) (*Config, error) {
9393 return cfg, nil
9494}
9595
96+func PushPopCrushEnv() func() {
97+ found := []string{}
98+ for _, ev := range os.Environ() {
99+ if strings.HasPrefix(ev, "CRUSH_") {
100+ pair := strings.SplitN(ev, "=", 2)
101+ if len(pair) != 2 {
102+ continue
103+ }
104+ found = append(found, strings.TrimPrefix(pair[0], "CRUSH_"))
105+ }
106+ }
107+ backups := make(map[string]string)
108+ for _, ev := range found {
109+ backups[ev] = os.Getenv(ev)
110+ }
111+
112+ for _, ev := range found {
113+ os.Setenv(ev, os.Getenv("CRUSH_"+ev))
114+ }
115+
116+ restore := func() {
117+ for k, v := range backups {
118+ os.Setenv(k, v)
119+ }
120+ }
121+ return restore
122+}
123+
96124func (c *Config) configureProviders(env env.Env, resolver VariableResolver, knownProviders []catwalk.Provider) error {
97125 knownProviderNames := make(map[string]bool)
126+ restore := PushPopCrushEnv()
127+ defer restore()
98128 for _, p := range knownProviders {
99129 knownProviderNames[string(p.ID)] = true
100130 config, configExists := c.Providers.Get(string(p.ID))
@@ -495,7 +525,6 @@ func hasAWSCredentials(env env.Env) bool {
495525 env.Get("AWS_CONTAINER_CREDENTIALS_FULL_URI") != "" {
496526 return true
497527 }
498−
499528 return false
500529}
501530