You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
60 lines
1.5 KiB
60 lines
1.5 KiB
// 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 |
|
}
|
|
|