52 lines
1.0 KiB
Go
52 lines
1.0 KiB
Go
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"
|
|
}
|