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  }