Files
sys/fs.go
2026-04-13 08:47:03 -04:00

42 lines
800 B
Go

package sys
import (
"log"
"os"
"path/filepath"
)
func Rootify(path string) string {
root, err := GetProjectRoot()
if err != nil {
log.Fatal(err)
}
return filepath.Join(root, path)
}
// func GetProjectRoot() string {
// _, b, _, _ := runtime.Caller(0)
// // b is the absolute path to this specific .go file
// // 1st Dir() gets the folder containing the file
// // 2nd Dir() gets the parent of that folder
// return filepath.Dir(filepath.Dir(b))
// }
func GetProjectRoot() (string, error) {
exePath, err := os.Executable()
if err != nil {
return "", err
}
exeDir := filepath.Dir(exePath)
// adjust depending on your structure
// e.g. binary is in /project/bin/app → go up one level
root := filepath.Dir(exeDir)
return root, nil
}