Skip to content

Commit bf56140

Browse files
committed
Error handling and UnfoldFields
1 parent 37ffb64 commit bf56140

File tree

4 files changed

+120
-57
lines changed

4 files changed

+120
-57
lines changed

pkg/models/framework.go

Lines changed: 41 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,9 @@ package models
1818

1919
import (
2020
"fmt"
21-
"log"
21+
"regexp"
2222
"sort"
2323
"strings"
24-
//"github.com/corelayer/corelogic/general"
2524
)
2625

2726
type DataMapWriter interface {
@@ -54,7 +53,7 @@ func (f *Framework) appendData(destination map[string]interface{}, source map[st
5453
for k, v := range source {
5554
if _, isMapContainsKey := destination[k]; isMapContainsKey {
5655
err = fmt.Errorf("duplicate key %q found in framework", k)
57-
log.Fatal(err)
56+
break
5857
} else {
5958
destination[k] = v
6059
}
@@ -75,14 +74,12 @@ func (f *Framework) GetElements() (map[string]interface{}, error) {
7574

7675
elements, err = p.GetElements()
7776
if err != nil {
78-
log.Fatal(err)
79-
//break
77+
break
8078
}
8179

8280
output, err = f.appendData(output, elements)
8381
if err != nil {
84-
log.Fatal(err)
85-
//break
82+
break
8683
}
8784
}
8885
return output, err
@@ -100,19 +97,38 @@ func (f *Framework) GetFields() (map[string]interface{}, error) {
10097

10198
fields, err = p.GetFields()
10299
if err != nil {
103-
log.Fatal(err)
104-
//break
100+
break
105101
}
106102

107103
output, err = f.appendData(output, fields)
108104
if err != nil {
109-
log.Fatal(err)
110-
//break
105+
break
111106
}
112107
}
113108
return output, err
114109
}
115110

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+
116132
func (f *Framework) GetExpressions(kind string, tagFilter []string) (map[string]interface{}, error) {
117133
output := make(map[string]interface{})
118134
var err error
@@ -136,10 +152,14 @@ func (f *Framework) getInstallExpressions(tagFilter []string) (map[string]interf
136152
for _, p := range f.Packages {
137153
expressions, err = p.GetInstallExpressions(tagFilter)
138154
if err != nil {
139-
log.Fatal(err)
140-
} else {
141-
output, err = f.appendData(output, expressions)
155+
break
142156
}
157+
158+
output, err = f.appendData(output, expressions)
159+
if err != nil {
160+
break
161+
}
162+
143163
}
144164

145165
return output, err
@@ -155,10 +175,14 @@ func (f *Framework) getUninstallExpressions(tagFilter []string) (map[string]inte
155175
for _, p := range f.Packages {
156176
expressions, err = p.GetUninstallExpressions(tagFilter)
157177
if err != nil {
158-
log.Fatal(err)
159-
} else {
160-
output, err = f.appendData(output, expressions)
178+
break
161179
}
180+
181+
output, err = f.appendData(output, expressions)
182+
if err != nil {
183+
break
184+
}
185+
162186
}
163187

164188
return output, err

pkg/models/module.go

Lines changed: 24 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -41,13 +41,18 @@ func (m *Module) GetElements(packageName string) (map[string]interface{}, error)
4141
expressions, err = s.GetElements(fullModuleName)
4242
if err != nil {
4343
break
44-
} else {
45-
output, err = m.appendData(output, expressions)
4644
}
45+
46+
output, err = m.appendData(output, expressions)
47+
if err != nil {
48+
break
49+
}
50+
4751
}
4852

4953
return output, err
5054
}
55+
5156
func (m *Module) GetFields(packageName string) (map[string]interface{}, error) {
5257
output := make(map[string]interface{})
5358
var expressions map[string]interface{}
@@ -58,8 +63,11 @@ func (m *Module) GetFields(packageName string) (map[string]interface{}, error) {
5863
expressions, err = s.GetFields(fullModuleName)
5964
if err != nil {
6065
break
61-
} else {
62-
output, err = m.appendData(output, expressions)
66+
}
67+
68+
output, err = m.appendData(output, expressions)
69+
if err != nil {
70+
break
6371
}
6472
}
6573

@@ -74,13 +82,16 @@ func (m *Module) GetInstallExpressions(packageName string, tagFilter []string) (
7482
if !m.HasFilteredTag(tagFilter) {
7583
fullModuleName := m.GetFullModuleName(packageName)
7684
for _, s := range m.Sections {
77-
// log.Println(s.Name)
7885
expressions, err = s.GetInstallExpressions(fullModuleName, tagFilter)
7986
if err != nil {
8087
break
81-
} else {
82-
output, err = m.appendData(output, expressions)
8388
}
89+
90+
output, err = m.appendData(output, expressions)
91+
if err != nil {
92+
break
93+
}
94+
8495
}
8596
}
8697

@@ -98,9 +109,13 @@ func (m *Module) GetUninstallExpressions(packageName string, tagFilter []string)
98109
expressions, err = s.GetUninstallExpressions(fullModuleName, tagFilter)
99110
if err != nil {
100111
break
101-
} else {
102-
output, err = m.appendData(output, expressions)
103112
}
113+
114+
output, err = m.appendData(output, expressions)
115+
if err != nil {
116+
break
117+
}
118+
104119
}
105120
} else {
106121
log.Printf("Skipping module %s", m.GetFullModuleName(packageName))
@@ -131,7 +146,6 @@ func (m *Module) HasFilteredTag(tagFilter []string) bool {
131146
for _, f := range tagFilter {
132147
if t == f {
133148
filterModule = true
134-
// log.Printf("Skipping module %s for tag %s", m.GetFullModuleName(packageName), t)
135149
break
136150
}
137151
}

pkg/models/package.go

Lines changed: 24 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@ package models
1818

1919
import (
2020
"fmt"
21-
"log"
2221
)
2322

2423
type Package struct {
@@ -35,8 +34,11 @@ func (p *Package) GetElements() (map[string]interface{}, error) {
3534
elements, err = m.GetElements(p.Name)
3635
if err != nil {
3736
break
38-
} else {
39-
output, err = p.appendData(output, elements)
37+
}
38+
39+
output, err = p.appendData(output, elements)
40+
if err != nil {
41+
break
4042
}
4143
}
4244

@@ -52,9 +54,13 @@ func (p *Package) GetFields() (map[string]interface{}, error) {
5254
fields, err = m.GetFields(p.Name)
5355
if err != nil {
5456
break
55-
} else {
56-
output, err = p.appendData(output, fields)
5757
}
58+
59+
output, err = p.appendData(output, fields)
60+
if err != nil {
61+
break
62+
}
63+
5864
}
5965

6066
return output, err
@@ -69,9 +75,13 @@ func (p *Package) GetInstallExpressions(tagFilter []string) (map[string]interfac
6975
expressions, err = m.GetInstallExpressions(p.Name, tagFilter)
7076
if err != nil {
7177
break
72-
} else {
73-
output, err = p.appendData(output, expressions)
7478
}
79+
80+
output, err = p.appendData(output, expressions)
81+
if err != nil {
82+
break
83+
}
84+
7585
}
7686

7787
return output, err
@@ -86,9 +96,13 @@ func (p *Package) GetUninstallExpressions(tagFilter []string) (map[string]interf
8696
expressions, err = m.GetUninstallExpressions(p.Name, tagFilter)
8797
if err != nil {
8898
break
89-
} else {
90-
output, err = p.appendData(output, expressions)
9199
}
100+
101+
output, err = p.appendData(output, expressions)
102+
if err != nil {
103+
break
104+
}
105+
92106
}
93107

94108
return output, err
@@ -100,7 +114,7 @@ func (p *Package) appendData(destination map[string]interface{}, source map[stri
100114
for k, v := range source {
101115
if _, isMapContainsKey := destination[k]; isMapContainsKey {
102116
err = fmt.Errorf("duplicate key %q found in package %q", k, p.Name)
103-
log.Fatal(err)
117+
break
104118
} else {
105119
destination[k] = v
106120
}

pkg/models/section.go

Lines changed: 31 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -44,9 +44,13 @@ func (s *Section) GetElements(moduleName string) (map[string]interface{}, error)
4444
if _, isMapContainsKey := output[elementOutputName]; isMapContainsKey {
4545
err = fmt.Errorf("duplicate key in fields: %q", elementOutputName)
4646
break
47-
} else {
48-
output[elementOutputName] = e
4947
}
48+
49+
output[elementOutputName] = e
50+
if err != nil {
51+
break
52+
}
53+
5054
}
5155

5256
return output, err
@@ -63,9 +67,16 @@ func (s *Section) GetFields(moduleName string) (map[string]interface{}, error) {
6367
if _, isMapContainsKey := output[outputKey]; isMapContainsKey {
6468
err = fmt.Errorf("duplicate key in fields: %q", outputKey)
6569
break
66-
} else {
67-
output[outputKey] = s.expandSectionPrefix(f.Data)
6870
}
71+
72+
output[outputKey] = s.expandSectionPrefix(f.Data)
73+
if err != nil {
74+
break
75+
}
76+
77+
}
78+
if err != nil {
79+
break
6980
}
7081
}
7182

@@ -84,15 +95,15 @@ func (s *Section) GetInstallExpressions(moduleName string, tagFilter []string) (
8495

8596
if err != nil {
8697
break
87-
} else {
88-
if _, isMapContainsKey := output[outputKey]; isMapContainsKey {
89-
//key exist
90-
err = fmt.Errorf("duplicate key in section: %q", outputKey)
91-
break
92-
} else {
93-
output[outputKey] = s.expandSectionPrefix(outputValue)
94-
}
9598
}
99+
100+
if _, isMapContainsKey := output[outputKey]; isMapContainsKey {
101+
//key exist
102+
err = fmt.Errorf("duplicate key in section: %q", outputKey)
103+
break
104+
}
105+
106+
output[outputKey] = s.expandSectionPrefix(outputValue)
96107
}
97108
}
98109

@@ -111,15 +122,15 @@ func (s *Section) GetUninstallExpressions(moduleName string, tagFilter []string)
111122

112123
if err != nil {
113124
break
114-
} else {
115-
if _, isMapContainsKey := output[outputKey]; isMapContainsKey {
116-
//key exist
117-
err = fmt.Errorf("duplicate key in section: %q", outputKey)
118-
break
119-
} else {
120-
output[outputKey] = s.expandSectionPrefix(outputValue)
121-
}
122125
}
126+
127+
if _, isMapContainsKey := output[outputKey]; isMapContainsKey {
128+
//key exist
129+
err = fmt.Errorf("duplicate key in section: %q", outputKey)
130+
break
131+
}
132+
133+
output[outputKey] = s.expandSectionPrefix(outputValue)
123134
}
124135
}
125136

0 commit comments

Comments
 (0)