46 lines
1.1 KiB
Go
46 lines
1.1 KiB
Go
package main
|
||
|
||
import (
|
||
"fmt"
|
||
"os"
|
||
"path/filepath"
|
||
"strings"
|
||
|
||
"github.com/joho/godotenv"
|
||
)
|
||
|
||
func loadEnv() {
|
||
exePath, _ := os.Executable()
|
||
exeDir := filepath.Dir(exePath)
|
||
|
||
// Normalize both to lowercase absolute paths for Windows safety
|
||
exePathLower := strings.ToLower(exePath)
|
||
tempDirLower := strings.ToLower(filepath.Clean(os.TempDir()))
|
||
|
||
// Heuristic: if exe lives *inside* the system temp dir → assume go run
|
||
if strings.HasPrefix(exePathLower, tempDirLower) {
|
||
fmt.Println("Detected go run – loading ../.env")
|
||
err := godotenv.Load("../.env")
|
||
if err != nil {
|
||
fmt.Println("ERROR loading .env:", err)
|
||
} else {
|
||
fmt.Println(".env successfully loaded")
|
||
}
|
||
|
||
return
|
||
}
|
||
|
||
// Otherwise → normal compiled exe
|
||
fmt.Println("Detected compiled exe – loading exeDir/.env")
|
||
if err := godotenv.Load(filepath.Join(exeDir, ".env")); err != nil {
|
||
fmt.Println("Didn't find exeDir/.env – trying ../.env as fallback")
|
||
err := godotenv.Load("../.env")
|
||
if err != nil {
|
||
fmt.Println("ERROR loading .env:", err)
|
||
} else {
|
||
fmt.Println(".env successfully loaded")
|
||
}
|
||
}
|
||
|
||
}
|