...
1
2
3
4 package types
5
6
7 type GeneratorOptions struct {
8
9 Labels map[string]string `json:"labels,omitempty" yaml:"labels,omitempty"`
10
11
12 Annotations map[string]string `json:"annotations,omitempty" yaml:"annotations,omitempty"`
13
14
15
16
17 DisableNameSuffixHash bool `json:"disableNameSuffixHash,omitempty" yaml:"disableNameSuffixHash,omitempty"`
18
19
20 Immutable bool `json:"immutable,omitempty" yaml:"immutable,omitempty"`
21 }
22
23
24
25
26
27
28
29
30
31
32
33
34 func MergeGlobalOptionsIntoLocal(
35 localOpts *GeneratorOptions,
36 globalOpts *GeneratorOptions) *GeneratorOptions {
37 if globalOpts == nil {
38 return localOpts
39 }
40 if localOpts == nil {
41 localOpts = &GeneratorOptions{}
42 }
43 overrideMap(&localOpts.Labels, globalOpts.Labels)
44 overrideMap(&localOpts.Annotations, globalOpts.Annotations)
45 if globalOpts.DisableNameSuffixHash {
46 localOpts.DisableNameSuffixHash = true
47 }
48 if globalOpts.Immutable {
49 localOpts.Immutable = true
50 }
51 return localOpts
52 }
53
54 func overrideMap(localMap *map[string]string, globalMap map[string]string) {
55 if *localMap == nil {
56 if globalMap != nil {
57 *localMap = CopyMap(globalMap)
58 }
59 return
60 }
61 for k, v := range globalMap {
62 _, ok := (*localMap)[k]
63 if !ok {
64 (*localMap)[k] = v
65 }
66 }
67 }
68
69
70 func CopyMap(in map[string]string) map[string]string {
71 out := make(map[string]string)
72 for k, v := range in {
73 out[k] = v
74 }
75 return out
76 }
77
View as plain text