template / ci-testing / files / file.go
Branch ci-testing · default branch · all branches
file.go
| 1 | package main |
| 2 | |
| 3 | import ( |
| 4 | "fmt" |
| 5 | "os" |
| 6 | "strings" |
| 7 | "text/template" |
| 8 | |
| 9 | log "github.com/sirupsen/logrus" |
| 10 | ) |
| 11 | |
| 12 | func 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 | } |