package gopackagebase import ( "context" "log" "git.wisellama.rocks/Wisellama/gosimpleconf" ) type BaseConfig struct { Ctx context.Context Cancel func() ConfigMap gosimpleconf.ConfigMap } // Initialize will configure all of the base stuff that we want // commonly set up at the beginning of a Go project. func Initialize(configFile string, defaultConfig gosimpleconf.ConfigMap) (*BaseConfig, error) { var err error ctx, cancel := InitSignalHandler() err = InitRNG() if err != nil { return nil, err } configMap, err := gosimpleconf.ConfigureWithDefaults(configFile, defaultConfig) if err != nil { log.Fatalf("error during configure: %v\n", err) } utcTime := gosimpleconf.Bool(configMap["log.utcTime"]) writeToFile := gosimpleconf.Bool(configMap["log.writeToFile"]) logFilename := configMap["log.file"] logWriter, err := SetupLogging(writeToFile, utcTime, logFilename) if err != nil { return nil, err } fullCancel := func() { logWriter.Cleanup() cancel() } baseConfig := BaseConfig{ Ctx: ctx, Cancel: fullCancel, ConfigMap: configMap, } return &baseConfig, nil }