github.com/viant/toolbox@v0.34.5/os_helper.go (about) 1 package toolbox 2 3 import ( 4 "fmt" 5 "os" 6 "path" 7 "strings" 8 ) 9 10 var dirMode os.FileMode = 0744 11 12 // RemoveFileIfExist remove file if exists 13 func RemoveFileIfExist(filenames ...string) error { 14 for _, filename := range filenames { 15 if !FileExists(filename) { 16 continue 17 } 18 err := os.Remove(filename) 19 if err != nil { 20 return err 21 } 22 } 23 return nil 24 } 25 26 // FileExists checks if file exists 27 func FileExists(filename string) bool { 28 if _, err := os.Stat(filename); err != nil { 29 return false 30 } 31 return true 32 } 33 34 // IsDirectory checks if file is directory 35 func IsDirectory(location string) bool { 36 if stat, _ := os.Stat(location); stat != nil { 37 return stat.IsDir() 38 } 39 return false 40 } 41 42 // CreateDirIfNotExist creates directory if they do not exist 43 func CreateDirIfNotExist(dirs ...string) error { 44 for _, dir := range dirs { 45 if len(dir) > 1 && strings.HasSuffix(dir, "/") { 46 dir = dir[:len(dir)-1] 47 } 48 parent, _ := path.Split(dir) 49 if parent != "/" && parent != dir { 50 CreateDirIfNotExist(parent) 51 } 52 if !FileExists(dir) { 53 err := os.Mkdir(dir, dirMode) 54 if err != nil { 55 return fmt.Errorf("failed to create dir %v %v", dir, err) 56 } 57 } 58 } 59 return nil 60 }