|
@@ -978,3 +978,22 @@ func NewReadCloserWrapper(r io.Reader, closer func() error) io.ReadCloser {
|
|
closer: closer,
|
|
closer: closer,
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+// ReplaceOrAppendValues returns the defaults with the overrides either
|
|
|
|
+// replaced by env key or appended to the list
|
|
|
|
+func ReplaceOrAppendEnvValues(defaults, overrides []string) []string {
|
|
|
|
+ cache := make(map[string]int, len(defaults))
|
|
|
|
+ for i, e := range defaults {
|
|
|
|
+ parts := strings.SplitN(e, "=", 2)
|
|
|
|
+ cache[parts[0]] = i
|
|
|
|
+ }
|
|
|
|
+ for _, value := range overrides {
|
|
|
|
+ parts := strings.SplitN(value, "=", 2)
|
|
|
|
+ if i, exists := cache[parts[0]]; exists {
|
|
|
|
+ defaults[i] = value
|
|
|
|
+ } else {
|
|
|
|
+ defaults = append(defaults, value)
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ return defaults
|
|
|
|
+}
|