package config import ( "os" "strconv" gocnjhelper "git.clickandjoin.umbach.dev/ClickandJoin/go-cnj-helper" "github.com/joho/godotenv" ) var Cfg Config type Config struct { Debug bool Host string Port string ManagementSystemApiKey string ScyllaDB ScyllaDB RabbitMq RabbitMq } type ScyllaDB struct { Host string Username string Password string Keyspace string } type RabbitMq struct { Host string Username string Password string } func LoadConfig() { // argument to start the server locally for development if len(os.Args) > 1 { if os.Args[1] == "--local" || os.Args[1] == "-l" { if err := godotenv.Load("local.env"); err != nil { gocnjhelper.LogFatalf("Failed to load env, err: %s", err) } } } debug, err := strconv.ParseBool(os.Getenv("DEBUG")) if err != nil { gocnjhelper.LogFatalf("Failed to parse boolean, err: %s", err) } cfg := Config{ Debug: debug, Host: os.Getenv("HOST"), Port: os.Getenv("PORT"), ManagementSystemApiKey: os.Getenv("MANAGEMENTSYSTEM_API_KEY"), ScyllaDB: ScyllaDB{ Host: os.Getenv("SCYLLADB_HOST"), Username: os.Getenv("SCYLLADB_USERNAME"), Password: os.Getenv("SCYLLADB_PASSWORD"), Keyspace: os.Getenv("SCYLLADB_KEYSPACE"), }, RabbitMq: RabbitMq{ Host: os.Getenv("RABBITMQ_HOST"), Username: os.Getenv("RABBITMQ_USERNAME"), Password: os.Getenv("RABBITMQ_PASSWORD"), }, } Cfg = cfg }