// Deserializes the yaml file at the given path to the supplied object. func (gw *GhostWriter) unyaml(path string, out interface{}) (err error) { var ( file fauxfile.File info os.FileInfo data []byte ) if file, err = gw.fs.Open(path); err != nil { return } defer file.Close() if info, err = file.Stat(); err != nil { return } data = make([]byte, info.Size()) if _, err = file.Read(data); err != nil { return } err = yaml.Unmarshal(data, out) return }
func ReadFile(fs fauxfile.Filesystem, path string) (data string, err error) { var ( f fauxfile.File fi os.FileInfo ) if f, err = fs.Open(path); err != nil { return } defer f.Close() if fi, err = f.Stat(); err != nil { return } buf := make([]byte, fi.Size()) if _, err = f.Read(buf); err != nil { if err != io.EOF { return } err = nil } data = string(buf) return }
// Reads a file from the given path and returns a string of the contents. func (ts *Templates) readFile(path string) (out string, err error) { var ( f fauxfile.File fi os.FileInfo buf []byte ) if f, err = ts.fs.Open(path); err != nil { return } defer f.Close() if fi, err = f.Stat(); err != nil { return } buf = make([]byte, fi.Size()) if _, err = f.Read(buf); err != nil { if err != io.EOF { return } err = nil } out = string(buf) return }
// Copies the file at path src to path dst. // Returns the number of bytes written or an error if it occurred. func (gw *GhostWriter) copyFile(src string, dst string) (n int64, err error) { var ( fdst fauxfile.File fsrc fauxfile.File fi os.FileInfo ) if fsrc, err = gw.fs.Open(src); err != nil { return } defer func() { if err := fsrc.Close(); err != nil { gw.log.Printf("Problem closing %v: %v\n", src, err) } else { gw.log.Printf("Closed %v\n", src) } }() if fdst, err = gw.fs.Create(dst); err != nil { return } defer func() { if err := fdst.Close(); err != nil { gw.log.Printf("Problem closing %v: %v\n", dst, err) } else { gw.log.Printf("Closed %v\n", dst) } }() if fi, err = fsrc.Stat(); err != nil { return } fdst.Chmod(fi.Mode()) _, err = io.Copy(fdst, fsrc) return }