@@ -246,9 +246,17 @@ func main() {
246246 network .Hosts = hosts
247247 }
248248
249- // --env flag sets environment variables and overrides values defined in Supfile
250249 var vars sup.EnvList
251- var supEnv string
250+ for _ , val := range append (conf .Env , network .Env ... ) {
251+ vars .Set (val .Key , val .Value )
252+ }
253+ if err := vars .ResolveValues (); err != nil {
254+ fmt .Fprintln (os .Stderr , err )
255+ os .Exit (1 )
256+ }
257+
258+ // Parse CLI --env flag env vars, define $SUP_ENV and override values defined in Supfile.
259+ var cliVars sup.EnvList
252260 for _ , env := range envVars {
253261 if len (env ) == 0 {
254262 continue
@@ -261,16 +269,16 @@ func main() {
261269 continue
262270 }
263271 vars .Set (env [:i ], env [i + 1 :])
272+ cliVars .Set (env [:i ], env [i + 1 :])
264273 }
265- if len (vars ) > 0 {
266- network .Env = append (network .Env , vars ... )
267274
268- // Separate loop to omit duplicated keys .
269- for _ , v := range vars {
270- supEnv += fmt . Sprintf ( " -e %v=%q" , v . Key , v . Value )
271- }
272- network . Env . Set ( "SUP_ENV " , strings . TrimSpace ( supEnv ) )
275+ // SUP_ENV is generated only from CLI env vars .
276+ // Separate loop to omit duplicates.
277+ supEnv := ""
278+ for _ , v := range cliVars {
279+ supEnv += fmt . Sprintf ( " -e %v=%q " , v . Key , v . Value )
273280 }
281+ vars .Set ("SUP_ENV" , strings .TrimSpace (supEnv ))
274282
275283 // Create new Stackup app.
276284 app , err := sup .New (conf )
@@ -282,7 +290,7 @@ func main() {
282290 app .Prefix (! disablePrefix )
283291
284292 // Run all the commands in the given network.
285- err = app .Run (network , commands ... )
293+ err = app .Run (network , vars , commands ... )
286294 if err != nil {
287295 fmt .Fprintln (os .Stderr , err )
288296 os .Exit (1 )
0 commit comments