template / ci-testing / files / file.go
Branch ci-testing · default branch · all branches
file.go
71bdf574 2022-09-23 Pavel Safronov | 1 | package main |
| 2 | ||
| 3 | import ( | |
| 4 | "fmt" | |
| 5 | "os" | |
fe139e41 2022-09-25 Pavel Safronov | 6 | "strings" |
71bdf574 2022-09-23 Pavel Safronov | 7 | "text/template" |
886f7fa2 2022-11-02 Pavel Safronov | 8 | |
| 9 | log "github.com/sirupsen/logrus" | |
71bdf574 2022-09-23 Pavel Safronov | 10 | ) |
| 11 | ||
687d5626 2022-10-28 Pavel Safronov | 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) | |
886f7fa2 2022-11-02 Pavel Safronov | 19 | log.WithFields(log.Fields{"fullPath": fullPath}).Debug("Creating file from template string\n", fullPath) |
c3fc7a22 2022-10-30 Pavel Safronov | 20 | |
| 21 | // parse template | |
| 22 | template, err := template.New("text-template").Parse(string(file.Template)) | |
687d5626 2022-10-28 Pavel Safronov | 23 | if err != nil { |
c3fc7a22 2022-10-30 Pavel Safronov | 24 | return fmt.Errorf("error parsing template text: %v", err) |
687d5626 2022-10-28 Pavel Safronov | 25 | } |
c3fc7a22 2022-10-30 Pavel Safronov | 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() | |
75a066b2 2022-11-16 Pavel Safronov | 35 | 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 Safronov | 39 | } else { |
886f7fa2 2022-11-02 Pavel Safronov | 40 | log.WithFields(log.Fields{"fullPath": fullPath}).Debug("Creating empty file", fullPath) |
75a066b2 2022-11-16 Pavel Safronov | 41 | 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 Safronov | 45 | } |
| 46 | return nil | |
| 47 | } |