Initial QSfera import
This commit is contained in:
+112
@@ -0,0 +1,112 @@
|
||||
package fsutil
|
||||
|
||||
import (
|
||||
"os"
|
||||
"path/filepath"
|
||||
"strings"
|
||||
|
||||
"github.com/gookit/goutil/internal/comfunc"
|
||||
)
|
||||
|
||||
// DirPath get dir path from filepath, without a last name.
|
||||
// eg: "/foo/bar/baz.js" => "/foo/bar"
|
||||
func DirPath(fPath string) string { return filepath.Dir(fPath) }
|
||||
|
||||
// Dir get dir path from filepath, without a last name.
|
||||
// eg: "/foo/bar/baz.js" => "/foo/bar"
|
||||
func Dir(fPath string) string { return filepath.Dir(fPath) }
|
||||
|
||||
// PathName get file/dir name from a full path.
|
||||
// eg: "/foo/bar/baz.js" => "baz.js"
|
||||
func PathName(fPath string) string { return filepath.Base(fPath) }
|
||||
|
||||
// PathNoExt get path from full path, without ext.
|
||||
//
|
||||
// eg: path/to/main.go => "path/to/main"
|
||||
func PathNoExt(fPath string) string {
|
||||
ext := filepath.Ext(fPath)
|
||||
if el := len(ext); el > 0 {
|
||||
return fPath[:len(fPath)-el]
|
||||
}
|
||||
return fPath
|
||||
}
|
||||
|
||||
// Name get file/dir name from full path.
|
||||
//
|
||||
// eg:
|
||||
// "path/to/main.go" => "main.go"
|
||||
// "/foo/bar/baz" => "baz"
|
||||
func Name(fPath string) string {
|
||||
if fPath == "" {
|
||||
return ""
|
||||
}
|
||||
return filepath.Base(fPath)
|
||||
}
|
||||
|
||||
// NameNoExt get file name from a full path, without an ext.
|
||||
//
|
||||
// eg: path/to/main.go => "main"
|
||||
func NameNoExt(fPath string) string {
|
||||
if fPath == "" {
|
||||
return ""
|
||||
}
|
||||
|
||||
fName := filepath.Base(fPath)
|
||||
if pos := strings.LastIndexByte(fName, '.'); pos > 0 {
|
||||
return fName[:pos]
|
||||
}
|
||||
return fName
|
||||
}
|
||||
|
||||
// FileExt get filename ext. alias of filepath.Ext()
|
||||
//
|
||||
// eg: path/to/main.go => ".go"
|
||||
func FileExt(fPath string) string { return filepath.Ext(fPath) }
|
||||
|
||||
// Extname get filename ext. alias of filepath.Ext()
|
||||
//
|
||||
// eg: path/to/main.go => "go"
|
||||
func Extname(fPath string) string {
|
||||
if ext := filepath.Ext(fPath); len(ext) > 0 {
|
||||
return ext[1:]
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
// Suffix get filename ext. alias of filepath.Ext()
|
||||
//
|
||||
// eg: path/to/main.go => ".go"
|
||||
func Suffix(fPath string) string { return filepath.Ext(fPath) }
|
||||
|
||||
// Expand will parse first `~` to user home dir path.
|
||||
func Expand(pathStr string) string { return comfunc.ExpandHome(pathStr) }
|
||||
|
||||
// ExpandHome will parse first `~` to user home dir path.
|
||||
func ExpandHome(pathStr string) string { return comfunc.ExpandHome(pathStr) }
|
||||
|
||||
// ExpandPath will parse `~` to user home dir path.
|
||||
func ExpandPath(pathStr string) string { return comfunc.ExpandHome(pathStr) }
|
||||
|
||||
// ResolvePath will parse `~` and ENV var in path
|
||||
func ResolvePath(pathStr string) string {
|
||||
pathStr = comfunc.ExpandHome(pathStr)
|
||||
// return comfunc.ParseEnvVar()
|
||||
return os.ExpandEnv(pathStr)
|
||||
}
|
||||
|
||||
// SplitPath splits path immediately following the final Separator, separating it into a directory and file name component
|
||||
func SplitPath(pathStr string) (dir, name string) { return filepath.Split(pathStr) }
|
||||
|
||||
// homeDir cache
|
||||
var _homeDir string
|
||||
|
||||
// UserHomeDir is alias of os.UserHomeDir, but ignore error.(by os.UserHomeDir)
|
||||
func UserHomeDir() string {
|
||||
if _homeDir == "" {
|
||||
_homeDir, _ = os.UserHomeDir()
|
||||
}
|
||||
return _homeDir
|
||||
}
|
||||
|
||||
// HomeDir get user home dir path.
|
||||
func HomeDir() string { return UserHomeDir() }
|
||||
Reference in New Issue
Block a user