33 lines
866 B
Go
33 lines
866 B
Go
package expander
|
|
|
|
import "sort"
|
|
|
|
// Expand expands variables into the Yaml configuration using a
|
|
// ${key} template parameter with limited support for bash string functions.
|
|
func Expand(config []byte, envs map[string]string) []byte {
|
|
return []byte(
|
|
ExpandString(string(config), envs),
|
|
)
|
|
}
|
|
|
|
// ExpandString injects the variables into the Yaml configuration string using
|
|
// a ${key} template parameter with limited support for bash string functions.
|
|
func ExpandString(config string, envs map[string]string) string {
|
|
if envs == nil || len(envs) == 0 {
|
|
return config
|
|
}
|
|
keys := []string{}
|
|
for k := range envs {
|
|
keys = append(keys, k)
|
|
}
|
|
sort.Sort(sort.Reverse(sort.StringSlice(keys)))
|
|
expanded := config
|
|
for _, k := range keys {
|
|
v := envs[k]
|
|
|
|
for _, substitute := range substitutors {
|
|
expanded = substitute(expanded, k, v)
|
|
}
|
|
}
|
|
return expanded
|
|
}
|