|
8 | 8 | "kool-dev/kool/core/environment" |
9 | 9 | "kool-dev/kool/core/shell" |
10 | 10 | "kool-dev/kool/services/cloud/api" |
| 11 | + "os" |
11 | 12 | "path/filepath" |
12 | 13 | "strings" |
13 | 14 |
|
@@ -51,7 +52,7 @@ func BuildPushImageForDeploy(service string, config *DeployConfigService, deploy |
51 | 52 |
|
52 | 53 | if buildConfig.Args != nil { |
53 | 54 | for k, v := range *buildConfig.Args { |
54 | | - dockerBuild.AppendArgs("--build-arg", fmt.Sprintf("%s=%s", k, v)) |
| 55 | + dockerBuild.AppendArgs("--build-arg", fmt.Sprintf("%s=%s", k, parseDeployEnvs(v, deploy.Deploy.Environment.Env))) |
55 | 56 | } |
56 | 57 | } |
57 | 58 |
|
@@ -124,3 +125,23 @@ func parseBuild(build interface{}) (config *DeployConfigBuild, err error) { |
124 | 125 | err = yaml.Unmarshal(b, config) |
125 | 126 | return |
126 | 127 | } |
| 128 | + |
| 129 | +func parseDeployEnvs(i interface{}, env interface{}) string { |
| 130 | + // workaround to allow for escaping $ with a double $$ |
| 131 | + _ = os.Setenv("$", "$") |
| 132 | + |
| 133 | + var value = os.ExpandEnv(fmt.Sprintf("%s", i)) |
| 134 | + |
| 135 | + if strings.Contains(value, "{{") && strings.Contains(value, "}}") { |
| 136 | + // we have something to replace! |
| 137 | + if recs, ok := env.(map[string]interface{}); ok { |
| 138 | + for k, v := range recs { |
| 139 | + if strings.Contains(value, "{{"+k+"}}") { |
| 140 | + value = strings.ReplaceAll(value, "{{"+k+"}}", fmt.Sprintf("%v", v)) |
| 141 | + } |
| 142 | + } |
| 143 | + } |
| 144 | + } |
| 145 | + |
| 146 | + return value |
| 147 | +} |
0 commit comments