in internal/aeintegrate/aeintegrate.go [177:240]
func (p *App) envAppYaml() (string, error) {
if p.tempAppYaml != "" {
return p.tempAppYaml, nil
}
base := p.appYaml()
tmp := "aeintegrate." + base
if len(p.Env) == 0 {
err := os.Symlink(filepath.Join(p.Dir, base), filepath.Join(p.Dir, tmp))
if err != nil {
return "", err
}
p.tempAppYaml = tmp
return p.tempAppYaml, nil
}
b, err := os.ReadFile(filepath.Join(p.Dir, base))
if err != nil {
return "", err
}
var c yaml.MapSlice
if err := yaml.Unmarshal(b, &c); err != nil {
return "", err
}
for _, e := range c {
k, ok := e.Key.(string)
if !ok || k != "env_variables" {
continue
}
yamlVals, ok := e.Value.(yaml.MapSlice)
if !ok {
return "", fmt.Errorf("expected MapSlice for env_variables")
}
ENTRY:
for mapKey, newVal := range p.Env {
for i, kv := range yamlVals {
yamlKey, ok := kv.Key.(string)
if !ok {
return "", fmt.Errorf("expected string for env_variables/%#v", kv.Key)
}
if yamlKey == mapKey {
yamlVals[i].Value = newVal
break ENTRY
}
}
return "", fmt.Errorf("could not find key %s in env_variables", mapKey)
}
}
b, err = yaml.Marshal(c)
if err != nil {
return "", err
}
if err := os.WriteFile(filepath.Join(p.Dir, tmp), b, 0755); err != nil {
return "", err
}
p.tempAppYaml = tmp
return p.tempAppYaml, nil
}