55 lines
1.1 KiB
Go
55 lines
1.1 KiB
Go
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
|
|
}
|