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  }