summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRené 'Necoro' Neumann <necoro@necoro.eu>2022-01-24 23:53:51 +0100
committerRené 'Necoro' Neumann <necoro@necoro.eu>2022-01-24 23:53:51 +0100
commitfb48aa5d69fc96abfac559c2383306b4c2e4defd (patch)
tree74ddf79ee216871f3d9b3d3812013738037c2aef
parent3dd57cb4f69d8c2f00dae92fc164a316cafa7ad0 (diff)
downloadengarde-importer-fb48aa5d69fc96abfac559c2383306b4c2e4defd.tar.gz
engarde-importer-fb48aa5d69fc96abfac559c2383306b4c2e4defd.tar.bz2
engarde-importer-fb48aa5d69fc96abfac559c2383306b4c2e4defd.zip
Factor out `writeOutput`
-rw-r--r--template.go30
1 files changed, 15 insertions, 15 deletions
diff --git a/template.go b/template.go
index 0b3ee32..3ec1c14 100644
--- a/template.go
+++ b/template.go
@@ -27,18 +27,12 @@ func writeVerbatimFile(outputDir string, entry fs.DirEntry) error {
}
defer input.Close()
- outName := path.Join(outputDir, entry.Name())
- output, err := os.Create(outName)
- if err != nil {
- return fmt.Errorf("creating '%s': %w", outName, err)
- }
- defer output.Close()
-
- if _, err = io.Copy(encodedWriter(output), input); err != nil {
- return fmt.Errorf("writing to '%s': %w", outName, err)
+ writeFn := func(writer io.Writer) error {
+ _, err := io.Copy(writer, input)
+ return err
}
- return nil
+ return writeOutput(outputDir, entry.Name(), writeFn)
}
func writeVerbatim(outputDir string) error {
@@ -93,17 +87,23 @@ func writeTemplates(outputDir string, config EngardeConfig) error {
func writeTemplate(tpl *template.Template, outputDir string, config EngardeConfig) error {
resultName := strings.TrimSuffix(tpl.Name(), ".tpl")
- outName := path.Join(outputDir, resultName)
+ writeFn := func(w io.Writer) error {
+ return tpl.Execute(w, config)
+ }
+
+ return writeOutput(outputDir, resultName, writeFn)
+}
+
+func writeOutput(outputDir, fileName string, writeFn func(writer io.Writer) error) error {
+ outName := path.Join(outputDir, fileName)
output, err := os.Create(outName)
if err != nil {
return fmt.Errorf("creating '%s': %w", outName, err)
}
defer output.Close()
- encodedOutput := encodedWriter(output)
-
- if err = tpl.Execute(encodedOutput, config); err != nil {
- return fmt.Errorf("executing template '%s': %w", tpl.Name(), err)
+ if err = writeFn(encodedWriter(output)); err != nil {
+ return fmt.Errorf("writing to '%s': %w", outName, err)
}
return nil
}