mirror of
https://github.com/mickael-kerjean/filestash.git
synced 2025-11-03 04:50:14 +08:00
68 lines
1.1 KiB
Go
68 lines
1.1 KiB
Go
package common
|
|
|
|
import (
|
|
"os"
|
|
"path/filepath"
|
|
"strings"
|
|
)
|
|
|
|
var MOCK_CURRENT_DIR string
|
|
|
|
func GetCurrentDir() string {
|
|
if MOCK_CURRENT_DIR != "" {
|
|
return MOCK_CURRENT_DIR
|
|
}
|
|
if os.Getenv("WORK_DIR") != "" {
|
|
return os.Getenv("WORK_DIR")
|
|
}
|
|
ex, _ := os.Executable()
|
|
return filepath.Dir(ex)
|
|
}
|
|
|
|
func GetAbsolutePath(p string) string {
|
|
return filepath.Join(GetCurrentDir(), p)
|
|
}
|
|
|
|
func IsDirectory(path string) bool {
|
|
if path == "" {
|
|
return false
|
|
}
|
|
if path[len(path)-1:] != "/" {
|
|
return false
|
|
}
|
|
return true
|
|
}
|
|
|
|
/*
|
|
* Join 2 path together, result has a file
|
|
*/
|
|
func JoinPath(base, file string) string {
|
|
filePath := filepath.Join(base, file)
|
|
if strings.HasPrefix(filePath, base) == false {
|
|
return base
|
|
}
|
|
return filePath
|
|
}
|
|
|
|
func EnforceDirectory(path string) string {
|
|
if path == "" {
|
|
return "/"
|
|
} else if path[len(path)-1:] == "/" {
|
|
return path
|
|
}
|
|
return path + "/"
|
|
}
|
|
|
|
func SplitPath(path string) (root string, filename string) {
|
|
if path == "" {
|
|
path = "/"
|
|
}
|
|
if IsDirectory(path) == false {
|
|
filename = filepath.Base(path)
|
|
}
|
|
if root = strings.TrimSuffix(path, filename); root == "" {
|
|
root = "/"
|
|
}
|
|
return root, filename
|
|
}
|