Project root of binary not file

This commit is contained in:
George Suntres
2026-04-13 08:47:03 -04:00
parent e7791197a1
commit 5c4fbcf698

39
fs.go
View File

@@ -1,18 +1,41 @@
package sys package sys
import ( import (
"runtime" "log"
"os"
"path/filepath" "path/filepath"
) )
func Rootify(path string) string { func Rootify(path string) string {
return filepath.Join(GetProjectRoot(), path) root, err := GetProjectRoot()
if err != nil {
log.Fatal(err)
}
return filepath.Join(root, path)
} }
func GetProjectRoot() string { // func GetProjectRoot() string {
_, b, _, _ := runtime.Caller(0) // _, b, _, _ := runtime.Caller(0)
// b is the absolute path to this specific .go file // // b is the absolute path to this specific .go file
// 1st Dir() gets the folder containing the file // // 1st Dir() gets the folder containing the file
// 2nd Dir() gets the parent of that folder // // 2nd Dir() gets the parent of that folder
return filepath.Dir(filepath.Dir(b)) // 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
} }