1
0
mirror of https://github.com/drone/drone-cli.git synced 2025-08-26 07:34:32 +02:00
drone-cli/common/config/inject.go
2015-03-03 22:45:29 -08:00

35 lines
676 B
Go

package config
import (
"sort"
"strings"
"gopkg.in/yaml.v2"
)
func Inject(raw string, params map[string]string) string {
if params == nil {
return raw
}
keys := []string{}
for k, _ := range params {
keys = append(keys, k)
}
sort.Sort(sort.Reverse(sort.StringSlice(keys)))
injected := raw
for _, k := range keys {
v := params[k]
injected = strings.Replace(injected, "$$"+k, v, -1)
}
return injected
}
func InjectSafe(raw string, params map[string]string) string {
before, _ := Parse(raw)
after, _ := Parse(Inject(raw, params))
after.Build = before.Build
after.Compose = before.Compose
scrubbed, _ := yaml.Marshal(after)
return string(scrubbed)
}