@@ -18,10 +18,9 @@ package models
18
18
19
19
import (
20
20
"fmt"
21
- "log "
21
+ "regexp "
22
22
"sort"
23
23
"strings"
24
- //"github.com/corelayer/corelogic/general"
25
24
)
26
25
27
26
type DataMapWriter interface {
@@ -54,7 +53,7 @@ func (f *Framework) appendData(destination map[string]interface{}, source map[st
54
53
for k , v := range source {
55
54
if _ , isMapContainsKey := destination [k ]; isMapContainsKey {
56
55
err = fmt .Errorf ("duplicate key %q found in framework" , k )
57
- log . Fatal ( err )
56
+ break
58
57
} else {
59
58
destination [k ] = v
60
59
}
@@ -75,14 +74,12 @@ func (f *Framework) GetElements() (map[string]interface{}, error) {
75
74
76
75
elements , err = p .GetElements ()
77
76
if err != nil {
78
- log .Fatal (err )
79
- //break
77
+ break
80
78
}
81
79
82
80
output , err = f .appendData (output , elements )
83
81
if err != nil {
84
- log .Fatal (err )
85
- //break
82
+ break
86
83
}
87
84
}
88
85
return output , err
@@ -100,19 +97,38 @@ func (f *Framework) GetFields() (map[string]interface{}, error) {
100
97
101
98
fields , err = p .GetFields ()
102
99
if err != nil {
103
- log .Fatal (err )
104
- //break
100
+ break
105
101
}
106
102
107
103
output , err = f .appendData (output , fields )
108
104
if err != nil {
109
- log .Fatal (err )
110
- //break
105
+ break
111
106
}
112
107
}
113
108
return output , err
114
109
}
115
110
111
+ func (c * Framework ) UnfoldFields (fields map [string ]string ) map [string ]string {
112
+ re := regexp .MustCompile (`<<[a-zA-Z0-9_.]*/[a-zA-Z0-9_]*>>` )
113
+ for key := range fields {
114
+ loop := true
115
+ for loop {
116
+ foundKeys := re .FindAllString (fields [key ], - 1 )
117
+ for _ , foundKey := range foundKeys {
118
+ searchKey := strings .ReplaceAll (foundKey , "<<" , "" )
119
+ searchKey = strings .ReplaceAll (searchKey , ">>" , "" )
120
+ fields [key ] = strings .ReplaceAll (fields [key ], foundKey , fields [searchKey ])
121
+ }
122
+
123
+ if ! re .MatchString (fields [key ]) {
124
+ loop = false
125
+ }
126
+ }
127
+ }
128
+
129
+ return fields
130
+ }
131
+
116
132
func (f * Framework ) GetExpressions (kind string , tagFilter []string ) (map [string ]interface {}, error ) {
117
133
output := make (map [string ]interface {})
118
134
var err error
@@ -136,10 +152,14 @@ func (f *Framework) getInstallExpressions(tagFilter []string) (map[string]interf
136
152
for _ , p := range f .Packages {
137
153
expressions , err = p .GetInstallExpressions (tagFilter )
138
154
if err != nil {
139
- log .Fatal (err )
140
- } else {
141
- output , err = f .appendData (output , expressions )
155
+ break
142
156
}
157
+
158
+ output , err = f .appendData (output , expressions )
159
+ if err != nil {
160
+ break
161
+ }
162
+
143
163
}
144
164
145
165
return output , err
@@ -155,10 +175,14 @@ func (f *Framework) getUninstallExpressions(tagFilter []string) (map[string]inte
155
175
for _ , p := range f .Packages {
156
176
expressions , err = p .GetUninstallExpressions (tagFilter )
157
177
if err != nil {
158
- log .Fatal (err )
159
- } else {
160
- output , err = f .appendData (output , expressions )
178
+ break
161
179
}
180
+
181
+ output , err = f .appendData (output , expressions )
182
+ if err != nil {
183
+ break
184
+ }
185
+
162
186
}
163
187
164
188
return output , err
0 commit comments