From 277d90ed066f66ae6db07f39330ca06ee95ec261 Mon Sep 17 00:00:00 2001 From: Gregory Eremin Date: Sat, 29 Aug 2015 13:31:56 +0300 Subject: [PATCH] Add file management functions --- file_ops.go | 53 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 file_ops.go diff --git a/file_ops.go b/file_ops.go new file mode 100644 index 0000000..5d49797 --- /dev/null +++ b/file_ops.go @@ -0,0 +1,53 @@ +package confection2 + +import ( + "errors" + "io/ioutil" + "os" + "path" +) + +const ( + dirPerm = 0755 + filePerm = 0633 +) + +func readFile(file string) ([]byte, error) { + if ok := fileExist(file); ok { + return ioutil.ReadFile(file) + } + + return nil, errors.New("Config file does not exist") +} + +func writeFile(file string, body []byte) error { + var fd *os.File + var err error + if ok := fileExist(file); !ok { + if err = mkdirp(file); err != nil { + return err + } + if fd, err = os.Create(file); err != nil { + return err + } + } else if fd, err = os.OpenFile(file, os.O_TRUNC|os.O_WRONLY, filePerm); err != nil { + return err + } + defer fd.Close() + + if _, err := fd.Write(body); err != nil { + return err + } + + return nil +} + +func fileExist(file string) bool { + _, err := os.Stat(file) + return (err == nil) +} + +func mkdirp(file string) error { + dir := path.Dir(file) + return os.MkdirAll(dir, dirPerm) +}