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 }