Files
go-fiber-template/config/env.go

52 lines
1.0 KiB
Go
Raw Normal View History

2024-01-10 21:20:45 +01:00
package config
import (
"fmt"
"os"
"strings"
"github.com/joho/godotenv"
)
var DotenvLoaded bool = false
// Getenv tries to get an environment variable
// and fails if it isn't set
func Getenv(key string) string {
if !DotenvLoaded {
err := godotenv.Load()
if err != nil && os.Getenv(key) == "" {
panic(fmt.Errorf("environment variable does not exist or is not set: %s", key))
}
DotenvLoaded = true
}
if val := os.Getenv(key); val != "" {
return val
}
panic(fmt.Errorf("environment variable does not exist or is not set: %s", key))
}
func GetenvDefault(key string, fallback string) string {
if !DotenvLoaded {
err := godotenv.Load()
if err != nil && os.Getenv(key) == "" {
return fallback
}
DotenvLoaded = true
}
if val := os.Getenv(key); val != "" {
return val
}
return fallback
}
func GetenvDefaultLowercase(key string, fallback string) string {
return strings.ToLower(GetenvDefault(key, fallback))
}
func DebugActive() bool {
return strings.ToLower(GetenvDefault("DEBUG", "false")) == "true"
}