mirror of
https://github.com/rcourtman/Pulse.git
synced 2026-04-29 20:10:21 +00:00
37 lines
860 B
Go
37 lines
860 B
Go
package config
|
|
|
|
import (
|
|
"os"
|
|
"path/filepath"
|
|
"strings"
|
|
)
|
|
|
|
// detectAppRoot attempts to find the application root directory
|
|
func detectAppRoot() string {
|
|
// 1. Check environment variable
|
|
if root := os.Getenv("PULSE_APP_ROOT"); root != "" {
|
|
return root
|
|
}
|
|
|
|
// 2. Get executable path
|
|
exe, err := os.Executable()
|
|
if err == nil {
|
|
// If running via "go run", executable is in /tmp, which isn't helpful for finding source files
|
|
// But in production, it's correct.
|
|
// Check if we are in a temp dir (go run)
|
|
if strings.Contains(exe, os.TempDir()) || strings.Contains(exe, "/var/folders/") {
|
|
// Fallback to current working directory
|
|
if cwd, err := os.Getwd(); err == nil {
|
|
return cwd
|
|
}
|
|
}
|
|
return filepath.Dir(exe)
|
|
}
|
|
|
|
// 3. Fallback to current working directory
|
|
if cwd, err := os.Getwd(); err == nil {
|
|
return cwd
|
|
}
|
|
|
|
return "."
|
|
}
|