Files
apex-public/internal/tui/paths.go
T
2026-07-06 11:05:50 -04:00

34 lines
802 B
Go

package tui
import (
"os"
"path/filepath"
)
// findRepoRoot walks up from the executable's location (then cwd) looking for
// internal/scan/adapters.yaml. Returns "." as fallback so the error surfaces
// through LoadConfig rather than here.
func findRepoRoot() string {
candidates := []string{}
if exe, err := os.Executable(); err == nil {
candidates = append(candidates, filepath.Dir(exe), filepath.Dir(filepath.Dir(exe)))
}
if wd, err := os.Getwd(); err == nil {
candidates = append(candidates, wd)
}
for _, start := range candidates {
d := start
for i := 0; i < 6; i++ {
if _, err := os.Stat(filepath.Join(d, "internal", "scan", "adapters.yaml")); err == nil {
return d
}
parent := filepath.Dir(d)
if parent == d {
break
}
d = parent
}
}
return "."
}