53 lines
1.1 KiB
Go
53 lines
1.1 KiB
Go
package config
|
|
|
|
import (
|
|
"flag"
|
|
"os"
|
|
"os/user"
|
|
"strconv"
|
|
)
|
|
|
|
type TConfig struct {
|
|
Port int
|
|
Environment Environment
|
|
DatabaseDsn string
|
|
}
|
|
|
|
var Config *TConfig
|
|
|
|
func init() {
|
|
currUser, err := user.Current()
|
|
if err != nil {
|
|
currUser = &user.User{Username: ""}
|
|
}
|
|
defaultDsn := currUser.Username + "@/web43"
|
|
|
|
port := flag.Int("port", getEnvAsInt("APP_PORT", 8080), "Port for the web-server to listen on")
|
|
environment := flag.String("env", getEnv("APP_ENVIRONMENT", "PRODUCTION"), "Environment (DEVELOPMENT|PRODUCTION)")
|
|
dbUsn := flag.String("dsn", getEnv("DATABASE_DSN", defaultDsn), "Database connection Data Source Name ([username[:password]@][protocol[(address)]]/dbname)")
|
|
|
|
flag.Parse()
|
|
|
|
Config = &TConfig{
|
|
Port: *port,
|
|
Environment: EnvironmentFromString(*environment),
|
|
DatabaseDsn: *dbUsn,
|
|
}
|
|
}
|
|
|
|
func getEnv(key string, defaultValue string) string {
|
|
value, exists := os.LookupEnv(key)
|
|
if !exists {
|
|
return defaultValue
|
|
}
|
|
return value
|
|
}
|
|
|
|
func getEnvAsInt(key string, defaultValue int) int {
|
|
valueStr := getEnv(key, "")
|
|
if value, err := strconv.Atoi(valueStr); err == nil {
|
|
return value
|
|
}
|
|
return defaultValue
|
|
}
|