in pkg/bundle/template/visitor/secretbuilder/helpers.go [108:160]
func renderSuffix(templateContext engine.Context, secretPath string, item *bundlev1.SecretSuffix, data interface{}) (map[string]interface{}, error) {
// Check input
if types.IsNil(templateContext) {
return nil, errors.New("unable to process with nil context")
}
if item == nil {
return nil, fmt.Errorf("unable to process nil item")
}
if len(item.Content) == 0 && item.Template == "" {
return nil, fmt.Errorf("content or template property must be defined")
}
kv := map[string]interface{}{}
if item.Template != "" {
payload, err := engine.RenderContextWithData(templateContext, item.Template, data)
if err != nil {
return nil, fmt.Errorf("unable to render suffix template: %w", err)
}
// Parse generated JSON
if !json.Valid([]byte(payload)) {
return nil, fmt.Errorf("unable to validate generated json for secret path '%s': %s", secretPath, payload)
}
// Extract payload as K/V
if err := json.Unmarshal([]byte(payload), &kv); err != nil {
return nil, fmt.Errorf("unable to assemble secret package for secret path '%s': %w", secretPath, err)
}
}
if len(item.Content) > 0 {
for filename, content := range item.Content {
// Render filename
renderedFilename, err := engine.RenderContextWithData(templateContext, filename, data)
if err != nil {
return nil, fmt.Errorf("unable to render filename template: %w", err)
}
// Render content
payload, err := engine.RenderContextWithData(templateContext, content, data)
if err != nil {
return nil, fmt.Errorf("unable to render file content template: %w", err)
}
// Assign result
kv[renderedFilename] = payload
}
}
// No error
return kv, nil
}