From 967f6fdf5c1693d3aa27079b3ae28768fb7356c6 Mon Sep 17 00:00:00 2001 From: Alan Pearce Date: Thu, 9 May 2024 16:24:45 +0200 Subject: feat: make configuration optional --- internal/file/utils.go | 53 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 internal/file/utils.go (limited to 'internal/file') diff --git a/internal/file/utils.go b/internal/file/utils.go new file mode 100644 index 0000000..efcf0f6 --- /dev/null +++ b/internal/file/utils.go @@ -0,0 +1,53 @@ +package file + +import ( + "io" + "io/fs" + "os" + + "github.com/pkg/errors" +) + +func Mkdirp(dir string) error { + err := os.MkdirAll(dir, os.ModeDir|os.ModePerm) + if err != nil { + return errors.WithMessagef(err, "could not create directory %s", dir) + } + + return nil +} + +func NeedNotExist(err error) error { + if err != nil && !errors.Is(err, fs.ErrNotExist) { + return err + } + + return nil +} + +func StatIfExists(file string) (fs.FileInfo, error) { + stat, err := os.Stat(file) + + return stat, NeedNotExist(err) +} + +func Exists(file string) (bool, error) { + stat, err := StatIfExists(file) + + return stat != nil, err +} + +func WriteToFile(path string, body io.Reader) error { + file, err := os.Create(path) + if err != nil { + return errors.WithMessagef(err, "error creating file at %s", path) + } + defer file.Close() + + _, err = io.Copy(file, body) + if err != nil { + return errors.WithMessagef(err, "error downloading file %s", path) + } + + return nil +} -- cgit 1.4.1