fuzzyworld

template / windows / files / file.go

Branch windows · default branch · all branches

file.go

Blame: the commit that last changed each line · file · history

71bdf574 2022-09-23 Pavel Safronov1package main
2
3import (
4 "fmt"
5 "os"
fe139e41 2022-09-25 Pavel Safronov6 "strings"
71bdf574 2022-09-23 Pavel Safronov7 "text/template"
886f7fa2 2022-11-02 Pavel Safronov8
9 log "github.com/sirupsen/logrus"
71bdf574 2022-09-23 Pavel Safronov10)
11
687d5626 2022-10-28 Pavel Safronov12func createFile(
13 prePatternData PrePatternData,
14 file File,
15 fullPath string) error {
16 useTemplate := file.Template != ""
17 if useTemplate {
18 postPatternData := createPostPatternData(fullPath, prePatternData)
886f7fa2 2022-11-02 Pavel Safronov19 log.WithFields(log.Fields{"fullPath": fullPath}).Debug("Creating file from template string\n", fullPath)
c3fc7a22 2022-10-30 Pavel Safronov20
21 // parse template
22 template, err := template.New("text-template").Parse(string(file.Template))
687d5626 2022-10-28 Pavel Safronov23 if err != nil {
c3fc7a22 2022-10-30 Pavel Safronov24 return fmt.Errorf("error parsing template text: %v", err)
687d5626 2022-10-28 Pavel Safronov25 }
c3fc7a22 2022-10-30 Pavel Safronov26
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()
75a066b2 2022-11-16 Pavel Safronov35 err = monkey.OSWriteFile(fullPath, []byte(templateString), os.ModePerm)
36 if err != nil {
37 return fmt.Errorf("error writing file: %v", err)
38 }
687d5626 2022-10-28 Pavel Safronov39 } else {
886f7fa2 2022-11-02 Pavel Safronov40 log.WithFields(log.Fields{"fullPath": fullPath}).Debug("Creating empty file", fullPath)
75a066b2 2022-11-16 Pavel Safronov41 err := monkey.OSWriteFile(fullPath, []byte{}, os.ModePerm)
42 if err != nil {
43 return fmt.Errorf("error writing file: %v", err)
44 }
687d5626 2022-10-28 Pavel Safronov45 }
46 return nil
47}