package config import ( "os" "strconv" gocnjhelper "git.clickandjoin.umbach.dev/ClickandJoin/go-cnj-helper" "github.com/joho/godotenv" ) var Cfg Config type Config struct { ServiceName uint8 ServiceType uint8 Debug bool DefaultLanguageCode string RabbitMq RabbitMq Mail Mail Templates Templates } type RabbitMq struct { Host string Username string Password string } type Mail struct { Host string Username string Password string Port string From string } type Templates struct { FolderPath string `yaml:"folderPath"` ConfigPath string `yaml:"configPath"` } 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) } serviceName, err := strconv.Atoi(os.Getenv("SERVICE_NAME")) if err != nil { gocnjhelper.LogFatalf("Failed to parse int, err: %s", err) } serviceType, err := strconv.Atoi(os.Getenv("SERVICE_TYPE")) if err != nil { gocnjhelper.LogFatalf("Failed to parse int, err: %s", err) } cfg := Config{ ServiceName: uint8(serviceName), ServiceType: uint8(serviceType), Debug: debug, RabbitMq: RabbitMq{ Host: os.Getenv("RABBITMQ_HOST"), Username: os.Getenv("RABBITMQ_USERNAME"), Password: os.Getenv("RABBITMQ_PASSWORD"), }, Mail: Mail{ Host: os.Getenv("MAIL_HOST"), Username: os.Getenv("MAIL_USERNAME"), Password: os.Getenv("MAIL_PASSWORD"), Port: os.Getenv("MAIL_PORT"), From: os.Getenv("MAIL_FROM"), }, Templates: Templates{ FolderPath: os.Getenv("TEMPLATES_FOLDER_PATH"), ConfigPath: os.Getenv("TEMPLATES_CONFIG_PATH"), }, } Cfg = cfg }