-
Notifications
You must be signed in to change notification settings - Fork 0
/
utils.go
90 lines (74 loc) · 2 KB
/
utils.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
package application
import (
"bytes"
"os"
"strings"
"text/template"
)
// TemplateValues is the properties made available to the Values string when templating.
//
// The Values string if parsed as a Go text template and will replace these properties if found.
type TemplateValues struct {
ClusterName string
Namespace string
Organization string
ExtraValues map[string]string
}
func defaultTemplateVars(config *TemplateValues) *TemplateValues {
if config == nil {
config = &TemplateValues{}
}
if config.Namespace == "" {
config.Namespace = "org-giantswarm"
}
if config.Organization == "" {
config.Organization = "giantswarm"
}
return config
}
func parseTemplateFile(path string, config *TemplateValues) (string, error) {
manifest, err := os.ReadFile(path)
if err != nil {
return "", err
}
return parseTemplate(string(manifest), config)
}
func parseTemplate(manifest string, config *TemplateValues) (string, error) {
config = defaultTemplateVars(config)
ut := template.Must(template.New("values").Parse(manifest))
manifestBuffer := &bytes.Buffer{}
err := ut.Execute(manifestBuffer, config)
if err != nil {
return "", err
}
return manifestBuffer.String(), nil
}
const VersionOverrideEnvVar = "E2E_OVERRIDE_VERSIONS"
func getOverrideVersions() map[string]string {
versions := map[string]string{}
overrides := os.Getenv(VersionOverrideEnvVar)
if overrides != "" {
overridesList := strings.Split(overrides, ",")
for _, pair := range overridesList {
parts := strings.Split(pair, "=")
if len(parts) == 2 {
versions[strings.TrimSpace(strings.ToLower(parts[0]))] = strings.TrimSpace(parts[1])
}
}
}
return versions
}
func getOverrideVersion(app string) (string, bool) {
ver := getOverrideVersions()[strings.ToLower(app)]
return ver, ver != ""
}
func mergeMaps(m1 map[string]string, m2 map[string]string) map[string]string {
merged := make(map[string]string)
for k, v := range m1 {
merged[k] = v
}
for key, value := range m2 {
merged[key] = value
}
return merged
}