gitlab.com/sparetimecoders/build-tools@v0.1.0/pkg/file/file.go (about) 1 package file 2 3 import ( 4 "fmt" 5 "gitlab.com/sparetimecoders/build-tools/pkg/templating" 6 "io/ioutil" 7 "os" 8 "path/filepath" 9 "strings" 10 ) 11 12 func Append(name, content string) error { 13 if f, err := os.OpenFile(name, os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644); err != nil { 14 return err 15 } else { 16 defer func() { _ = f.Close() }() 17 _, err := f.WriteString(fmt.Sprintf("\n%s\n", content)) 18 return err 19 } 20 } 21 22 func AppendTemplated(name, template string, data templating.TemplateData) error { 23 if content, err := templating.Execute(template, data); err != nil { 24 return err 25 } else { 26 return Append(name, content) 27 } 28 } 29 30 func Write(dir, file, content string) error { 31 if err := os.MkdirAll(filepath.Dir(filepath.Join(dir, file)), 0777); err != nil { 32 return err 33 } 34 return ioutil.WriteFile(filepath.Join(dir, file), []byte(fmt.Sprintln(strings.TrimSpace(content))), 0666) 35 } 36 37 func WriteTemplated(dir, file, template string, data templating.TemplateData) error { 38 if content, err := templating.Execute(template, data); err != nil { 39 return err 40 } else { 41 return Write(dir, file, content) 42 } 43 }