61 lines
1.5 KiB
Go
61 lines
1.5 KiB
Go
// Package apputil provides utility functions for file and directory operations.
|
|
package apputil
|
|
|
|
import (
|
|
"os"
|
|
"path/filepath"
|
|
|
|
"lol.mleku.dev/chk"
|
|
)
|
|
|
|
// EnsureDir checks if a file could be written to a path and creates the
|
|
// necessary directories if they don't exist. It ensures that all parent
|
|
// directories in the path are created with the appropriate permissions.
|
|
//
|
|
// # Parameters
|
|
//
|
|
// - fileName: The full path to the file for which directories need to be
|
|
// created.
|
|
//
|
|
// Expected behavior:
|
|
//
|
|
// - Extracts the directory path from the fileName.
|
|
//
|
|
// - Checks if the directory exists.
|
|
//
|
|
// - If the directory doesn't exist, creates it and all parent directories.
|
|
func EnsureDir(fileName string) (merr error) {
|
|
dirName := filepath.Dir(fileName)
|
|
if _, err := os.Stat(dirName); chk.E(err) {
|
|
merr = os.MkdirAll(dirName, os.ModePerm)
|
|
if chk.E(merr) {
|
|
return
|
|
}
|
|
return
|
|
}
|
|
return
|
|
}
|
|
|
|
// FileExists reports whether the named file or directory exists.
|
|
//
|
|
// # Parameters
|
|
//
|
|
// - filePath: The full path to the file or directory to check.
|
|
//
|
|
// Returns:
|
|
//
|
|
// - bool: true if the file or directory exists, false otherwise.
|
|
//
|
|
// Behavior:
|
|
//
|
|
// - Uses os.Stat to check if the file or directory exists.
|
|
//
|
|
// - Returns true if the file exists and can be accessed.
|
|
//
|
|
// - Returns false if the file doesn't exist or cannot be accessed due to
|
|
// permissions.
|
|
func FileExists(filePath string) bool {
|
|
_, e := os.Stat(filePath)
|
|
return e == nil
|
|
}
|