package config import ( "os" "path/filepath" "sync" ) var ( instance *Config once sync.Once ) type Config struct { ServerPort string DatabasePath string JWTSecret string DataDir string KubeDir string } func GetConfig() *Config { once.Do(func() { dataDir := getEnv("DATA_DIR", "./data") instance = &Config{ ServerPort: getEnv("SERVER_PORT", "8080"), DatabasePath: filepath.Join(dataDir, "lokideploy.json"), JWTSecret: getEnv("JWT_SECRET", "lokideploy-secret-key-change-in-production"), DataDir: dataDir, KubeDir: filepath.Join(dataDir, "kubeconfigs"), } _ = os.MkdirAll(instance.KubeDir, 0755) }) return instance } func getEnv(key, defaultVal string) string { if val := os.Getenv(key); val != "" { return val } return defaultVal }