package config import ( l "log" "os" "time" "example.com/golang-base/internal/log" ) func Init() Config { cfg := New() // parse config structure cfgInfo, err := getStructInfo(&cfg) if err != nil { l.Fatalf("Unable to initialize program: %v", err) } // get command line flags if err := cfg.parseFlags(cfgInfo); err != nil { l.Fatalf("Unable to initialize program: %v", err) } // set logging Level log.Init("text") log.SetNumericLevel(cfg.LogLevel) // set timezone & time format cfg.TZUTC, _ = time.LoadLocation("UTC") cfg.TZLocal, err = time.LoadLocation(cfg.TimeZoneLocal) if err != nil { log.Error("Unable to parse timezone string", "error", err) os.Exit(1) } // print running config printRunningConfig(&cfg, cfgInfo) // return configuration return cfg }