@@ -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