Skip to content

Commit c305b61

Browse files
committed
[core] PrefixedOverride, ToUpper/ToLower in template system
1 parent ee00d43 commit c305b61

File tree

3 files changed

+33
-3
lines changed

3 files changed

+33
-3
lines changed

apricot/local/service.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -254,7 +254,7 @@ func (s *Service) GetAndProcessComponentConfiguration(query *componentcfg.Query,
254254
}
255255

256256
// Add custom functions to bindings:
257-
funcMap := template.MakeStrOperationFuncMap()
257+
funcMap := template.MakeStrOperationFuncMap(varStack)
258258
for k, v := range funcMap {
259259
bindings[k] = v
260260
}

configuration/template/fields.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -189,7 +189,7 @@ func (vs *VarStack) consolidated(stage Stage) (consolidatedStack map[string]stri
189189

190190
func (fields Fields) Execute(confSvc ConfigurationService, parentPath string, varStack map[string]string, objStack map[string]interface{}, stringTemplateCache map[string]template.Template) (err error) {
191191
environment := make(map[string]interface{}, len(varStack))
192-
strOpStack := MakeStrOperationFuncMap()
192+
strOpStack := MakeStrOperationFuncMap(varStack)
193193
for k, v := range varStack {
194194
environment[k] = v
195195
}

configuration/template/stack.go

Lines changed: 31 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -141,7 +141,7 @@ func MakeToPtreeFunc(varStack map[string]string, propMap map[string]string) ToPt
141141
}
142142
}
143143

144-
func MakeStrOperationFuncMap() map[string]interface{} {
144+
func MakeStrOperationFuncMap(varStack map[string]string) map[string]interface{} {
145145
return map[string]interface{}{
146146
"Atoi": func(in string) (out int) {
147147
var err error
@@ -164,6 +164,14 @@ func MakeStrOperationFuncMap() map[string]interface{} {
164164
out = strings.TrimSpace(in)
165165
return
166166
},
167+
"ToUpper": func(in string) (out string) {
168+
out = strings.ToUpper(in)
169+
return
170+
},
171+
"ToLower": func(in string) (out string) {
172+
out = strings.ToLower(in)
173+
return
174+
},
167175
"FromJson": func(in string) (out interface{}) {
168176
bytes := []byte(in)
169177
err := json.Unmarshal(bytes, &out)
@@ -190,5 +198,27 @@ func MakeStrOperationFuncMap() map[string]interface{} {
190198
"NewID": func() (out string) {
191199
return uid.New().String()
192200
},
201+
"PrefixedOverride": func(varname, prefix string) (out string) {
202+
prefixed, prefixedOk := varStack[prefix + "_" + varname]
203+
fallback, fallbackOk := varStack[varname]
204+
205+
// Handle explicit null values
206+
if prefixedOk && (prefixed == "none" || len(strings.TrimSpace(prefixed)) == 0) {
207+
prefixedOk = false
208+
}
209+
if fallbackOk && (fallback == "none" || len(strings.TrimSpace(fallback)) == 0) {
210+
fallbackOk = false
211+
}
212+
213+
if !prefixedOk {
214+
if fallbackOk {
215+
return fallback
216+
}
217+
return "" // Neither value exists
218+
}
219+
220+
// prefixedOk is true, fallbackOk we don't know & don't care at this point
221+
return prefixed
222+
},
193223
}
194224
}

0 commit comments

Comments
 (0)