Skip to content

Commit 9240ebb

Browse files
authored
Remove duplication in templating helpers (#419)
1 parent bc31700 commit 9240ebb

File tree

1 file changed

+11
-38
lines changed

1 file changed

+11
-38
lines changed

internal/campaigns/run_steps.go

Lines changed: 11 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,7 @@ func runSteps(ctx context.Context, rf RepoFetcher, wc WorkspaceCreator, repo *gr
113113
}
114114

115115
// Parse and render the step.Files.
116-
files, err := renderStepFiles(step.Files, &stepContext)
116+
files, err := renderMap(step.Files, &stepContext)
117117
if err != nil {
118118
return nil, errors.Wrap(err, "parsing step files")
119119
}
@@ -128,7 +128,7 @@ func runSteps(ctx context.Context, rf RepoFetcher, wc WorkspaceCreator, repo *gr
128128
}
129129
defer os.Remove(fp.Name())
130130

131-
if _, err := io.Copy(fp, content); err != nil {
131+
if _, err := fp.WriteString(content); err != nil {
132132
return nil, errors.Wrap(err, "writing to temporary file")
133133
}
134134

@@ -146,7 +146,7 @@ func runSteps(ctx context.Context, rf RepoFetcher, wc WorkspaceCreator, repo *gr
146146
}
147147

148148
// Render the step.Env variables as templates.
149-
env, err := renderStepEnv(stepEnv, &stepContext)
149+
env, err := renderMap(stepEnv, &stepContext)
150150
if err != nil {
151151
return nil, errors.Wrap(err, "parsing step environment")
152152
}
@@ -338,52 +338,25 @@ func parseAsTemplate(name, input string, stepCtx *StepContext) (*template.Templa
338338
return template.New(name).Delims("${{", "}}").Funcs(stepCtx.ToFuncMap()).Parse(input)
339339
}
340340

341-
func renderStepFiles(files map[string]string, stepCtx *StepContext) (map[string]io.Reader, error) {
342-
containerFiles := make(map[string]io.Reader, len(files))
341+
func renderMap(m map[string]string, stepCtx *StepContext) (map[string]string, error) {
342+
rendered := make(map[string]string, len(m))
343343

344-
for fileName, fileRaw := range files {
345-
// We treat the file contents as a template and render it
346-
// into a buffer that we then mount into the code host.
344+
for k, v := range rendered {
347345
var out bytes.Buffer
348346

349-
tmpl, err := parseAsTemplate(fileName, fileRaw, stepCtx)
347+
tmpl, err := parseAsTemplate(k, v, stepCtx)
350348
if err != nil {
351-
return containerFiles, err
349+
return rendered, err
352350
}
353351

354352
if err := tmpl.Execute(&out, stepCtx); err != nil {
355-
return containerFiles, err
353+
return rendered, err
356354
}
357355

358-
containerFiles[fileName] = &out
356+
rendered[k] = out.String()
359357
}
360358

361-
return containerFiles, nil
362-
}
363-
364-
func renderStepEnv(env map[string]string, stepCtx *StepContext) (map[string]string, error) {
365-
parsedEnv := make(map[string]string, len(env))
366-
367-
fnMap := stepCtx.ToFuncMap()
368-
369-
for k, v := range env {
370-
// We treat the file contents as a template and render it
371-
// into a buffer that we then mount into the code host.
372-
var out bytes.Buffer
373-
374-
tmpl, err := template.New(k).Delims("${{", "}}").Funcs(fnMap).Parse(v)
375-
if err != nil {
376-
return parsedEnv, err
377-
}
378-
379-
if err := tmpl.Execute(&out, stepCtx); err != nil {
380-
return parsedEnv, err
381-
}
382-
383-
parsedEnv[k] = out.String()
384-
}
385-
386-
return parsedEnv, nil
359+
return rendered, nil
387360
}
388361

389362
// StepContext represents the contextual information available when executing a

0 commit comments

Comments
 (0)