Skip to content

Commit 0fa0d91

Browse files
Print out config envs in reverse order
it's not perfect but we match up the env from all configs its printed in reverse order to prioritize the earlier configs first
1 parent 15d44ea commit 0fa0d91

File tree

1 file changed

+16
-10
lines changed

1 file changed

+16
-10
lines changed

docker_compose.go

Lines changed: 16 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -87,8 +87,7 @@ func DockerComposeService(config config.Config) ComposeService {
8787
}
8888

8989
func WriteDockerCompose(configs []config.Config, dir string, bakeEnv bool) error {
90-
//TODO: env config should be a merge of all env across all configs.
91-
if err := WriteEnvConfig(configs[0], dir); err != nil {
90+
if err := WriteEnvConfig(configs, dir); err != nil {
9291
return err
9392
}
9493
pupsArgs := "--skip-tags=precompile,migrate,db"
@@ -141,22 +140,29 @@ func WriteDockerfile(config config.Config, dir string, pupsArgs string, bakeEnv
141140
return nil
142141
}
143142

144-
func WriteEnvConfig(config config.Config, dir string) error {
143+
func WriteEnvConfig(configs []config.Config, dir string) error {
145144
file := strings.TrimRight(dir, "/") + "/.envrc"
146-
if err := os.WriteFile(file, []byte(ExportEnv(config)), 0660); err != nil {
145+
if err := os.WriteFile(file, []byte(ExportEnv(configs)), 0660); err != nil {
147146
return errors.New("error writing export env " + file)
148147
}
149148
return nil
150149
}
151150

152-
func ExportEnv(config config.Config) string {
151+
func ExportEnv(configs []config.Config) string {
153152
builder := []string{}
154-
for k, v := range config.Env {
155-
val := strings.ReplaceAll(v, "\\", "\\\\")
156-
val = strings.ReplaceAll(val, "\"", "\\\"")
157-
builder = append(builder, "export "+k+"=\""+val+"\"")
153+
// prioritize the first configs for env
154+
slices.Reverse(configs)
155+
for _, config := range configs {
156+
// Sort env within a config
157+
configEnv := []string{}
158+
for k, v := range config.Env {
159+
val := strings.ReplaceAll(v, "\\", "\\\\")
160+
val = strings.ReplaceAll(val, "\"", "\\\"")
161+
configEnv = append(configEnv, "export "+k+"=\""+val+"\"")
162+
}
163+
slices.Sort(configEnv)
164+
builder = append(builder, strings.Join(configEnv, "\n"))
158165
}
159-
slices.Sort(builder)
160166
return strings.Join(builder, "\n")
161167
}
162168

0 commit comments

Comments
 (0)