fuzzyworld

template / windows / files / file.go

Branch windows · default branch · all branches

file.go

1.2 KB · history · blame

1package main
2
3import (
4 "fmt"
5 "os"
6 "strings"
7 "text/template"
8
9 log "github.com/sirupsen/logrus"
10)
11
12func createFile(
13 prePatternData PrePatternData,
14 file File,
15 fullPath string) error {
16 useTemplate := file.Template != ""
17 if useTemplate {
18 postPatternData := createPostPatternData(fullPath, prePatternData)
19 log.WithFields(log.Fields{"fullPath": fullPath}).Debug("Creating file from template string\n", fullPath)
20
21 // parse template
22 template, err := template.New("text-template").Parse(string(file.Template))
23 if err != nil {
24 return fmt.Errorf("error parsing template text: %v", err)
25 }
26
27 // create output string
28 sb := new(strings.Builder)
29 err = template.Execute(sb, postPatternData)
30 if err != nil {
31 return fmt.Errorf("error creating templated file: %v", err)
32 }
33
34 templateString := sb.String()
35 err = monkey.OSWriteFile(fullPath, []byte(templateString), os.ModePerm)
36 if err != nil {
37 return fmt.Errorf("error writing file: %v", err)
38 }
39 } else {
40 log.WithFields(log.Fields{"fullPath": fullPath}).Debug("Creating empty file", fullPath)
41 err := monkey.OSWriteFile(fullPath, []byte{}, os.ModePerm)
42 if err != nil {
43 return fmt.Errorf("error writing file: %v", err)
44 }
45 }
46 return nil
47}