github.com/beauknowssoftware/makehcl@v0.0.0-20200322000747-1b9bb1e1c008/internal/file/safeStat.go (about) 1 package file 2 3 import ( 4 "os" 5 "time" 6 7 "github.com/pkg/errors" 8 ) 9 10 func SafeStat(filename string) (os.FileInfo, bool, error) { 11 s, err := os.Stat(filename) 12 if err != nil && os.IsNotExist(err) { 13 return s, false, nil 14 } else if err != nil { 15 return s, true, err 16 } 17 18 return s, true, nil 19 } 20 21 func Exists(filename string) (bool, error) { 22 _, exists, err := SafeStat(filename) 23 if err != nil { 24 return false, errors.Wrapf(err, "error stating file %v", filename) 25 } 26 27 return exists, nil 28 } 29 30 func ModTime(filename string) (*time.Time, error) { 31 s, exists, err := SafeStat(filename) 32 if err != nil { 33 return nil, errors.Wrapf(err, "error stating %v", filename) 34 } else if !exists { 35 return nil, nil 36 } 37 38 t := s.ModTime() 39 40 return &t, nil 41 }