Files
next.orly.dev/pkg/utils/apputil/apputil.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
}