gopackagebase/gopackagebase.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
}