48 lines
1.1 KiB
Go
48 lines
1.1 KiB
Go
package env
|
|
|
|
import (
|
|
"log"
|
|
"net/url"
|
|
"os"
|
|
)
|
|
|
|
func GuaranteeEnv(key string) string {
|
|
variable, ok := os.LookupEnv(key)
|
|
if !ok || variable == "" {
|
|
log.Fatalln("Missing environment variable:", key)
|
|
}
|
|
return variable
|
|
}
|
|
|
|
type Config struct {
|
|
DatabaseFile string
|
|
SessionSecret string
|
|
HostRootUrl string
|
|
HostPort string
|
|
ServePort string
|
|
InDev bool
|
|
HostUrl string
|
|
}
|
|
|
|
var Configuration Config
|
|
|
|
func init() {
|
|
Configuration.DatabaseFile = GuaranteeEnv("LISHWIST_DATABASE_FILE")
|
|
Configuration.SessionSecret = GuaranteeEnv("LISHWIST_SESSION_SECRET")
|
|
Configuration.HostRootUrl = GuaranteeEnv("LISHWIST_HOST_ROOT_URL")
|
|
Configuration.HostPort = os.Getenv("LISHWIST_HOST_PORT")
|
|
Configuration.ServePort = GuaranteeEnv("LISHWIST_SERVE_PORT")
|
|
Configuration.InDev = os.Getenv("LISHWIST_IN_DEV") != ""
|
|
Configuration.HostUrl = func() string {
|
|
rawUrl := Configuration.HostRootUrl
|
|
if Configuration.HostPort != "" {
|
|
rawUrl += ":" + Configuration.HostPort
|
|
}
|
|
u, err := url.Parse(rawUrl)
|
|
if err != nil {
|
|
log.Fatalln("Couldn't parse host url:", err)
|
|
}
|
|
return u.String()
|
|
}()
|
|
}
|