package env import ( "fmt" "os" "strconv" "time" ) func GetDuration(k string) (time.Duration, error) { v, ok := os.LookupEnv(k) if !ok { return 0, fmt.Errorf("environment variable %q not set", k) } t, err := time.ParseDuration(v) if err != nil { return 0, err } return t, nil } func mustGet(k string) string { v, ok := os.LookupEnv(k) if !ok { panic("Could not find " + k + " in env") } return v } func mustGetDuration(k string) time.Duration { t, err := GetDuration(k) if err != nil { panic("Could not get duration: " + err.Error()) } return t } func GetInt(k string) (int, error) { v, ok := os.LookupEnv(k) if !ok { return 0, fmt.Errorf("environment variable %q not set", k) } i, err := strconv.Atoi(v) if err != nil { return 0, err } return i, nil } func mustGetInt(k string) int { i, err := GetInt(k) if err != nil { panic("Could not get int for " + k + ": " + err.Error()) } return i } func GetFloat(k string) (float64, error) { v, ok := os.LookupEnv(k) if !ok { return 0, fmt.Errorf("environment variable %q not set", k) } f, err := strconv.ParseFloat(v, 64) if err != nil { return 0, err } return f, nil } func mustGetFloat(k string) float64 { f, err := GetFloat(k) if err != nil { panic("Could not get float for " + k + ": " + err.Error()) } return f }