Merge branch 'move-internal-packages' into 'main'
Move internal packages See merge request whom/bingobot!4
This commit is contained in:
commit
39fe90d016
5 changed files with 62 additions and 38 deletions
|
|
@ -1,4 +1,4 @@
|
|||
package main
|
||||
package config
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
|
|
@ -6,8 +6,6 @@ import (
|
|||
"github.com/spf13/viper"
|
||||
)
|
||||
|
||||
var appConfig *AppConfig
|
||||
|
||||
type AppConfig struct {
|
||||
LogFile string `yaml:"log_file"`
|
||||
LogDir string `yaml:"log_dir"`
|
||||
|
|
@ -18,7 +16,9 @@ type AppConfig struct {
|
|||
LogAddSource bool `yaml:"log_add_source"`
|
||||
}
|
||||
|
||||
func parseConfigs() error {
|
||||
func Parse() (*AppConfig, error) {
|
||||
var appConfig *AppConfig
|
||||
|
||||
setDefaults()
|
||||
|
||||
// automatically populate config with any matching environment vars
|
||||
|
|
@ -31,15 +31,15 @@ func parseConfigs() error {
|
|||
|
||||
err := viper.ReadInConfig()
|
||||
if err != nil {
|
||||
return fmt.Errorf("error reading configs: %s", err)
|
||||
return nil, fmt.Errorf("error reading configs: %s", err)
|
||||
}
|
||||
|
||||
err = viper.Unmarshal(&appConfig)
|
||||
if err != nil {
|
||||
return fmt.Errorf("error unmarshaling configs: %s", err)
|
||||
return nil, fmt.Errorf("error unmarshaling configs: %s", err)
|
||||
}
|
||||
|
||||
return nil
|
||||
return appConfig, nil
|
||||
}
|
||||
|
||||
func setDefaults() {
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package main
|
||||
package config
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
|
@ -17,6 +17,8 @@ log_max_backups: 3
|
|||
log_max_age_days: 365
|
||||
log_compression: false
|
||||
`
|
||||
// the config file is stored in the project root
|
||||
viper.AddConfigPath("../..")
|
||||
}
|
||||
|
||||
// test that default configs are working
|
||||
|
|
@ -26,7 +28,7 @@ func TestDefaultConfigs(t *testing.T) {
|
|||
|
||||
viper.SetDefault(k, v)
|
||||
|
||||
err := parseConfigs()
|
||||
_, err := Parse()
|
||||
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
42
internal/logging/logging.go
Normal file
42
internal/logging/logging.go
Normal file
|
|
@ -0,0 +1,42 @@
|
|||
package logging
|
||||
|
||||
import (
|
||||
"log/slog"
|
||||
"path/filepath"
|
||||
|
||||
"gitlab.com/whom/bingobot/internal/config"
|
||||
"gopkg.in/natefinch/lumberjack.v2"
|
||||
)
|
||||
|
||||
type Logger struct {
|
||||
*slog.Logger
|
||||
}
|
||||
|
||||
var (
|
||||
logger Logger
|
||||
)
|
||||
|
||||
func InitLogger(appConfig *config.AppConfig) Logger {
|
||||
|
||||
lj := &lumberjack.Logger{
|
||||
Filename: filepath.Join(appConfig.LogDir, appConfig.LogFile),
|
||||
MaxSize: appConfig.LogMaxSizeMB,
|
||||
MaxBackups: appConfig.LogMaxBackups,
|
||||
MaxAge: appConfig.LogMaxAgeDays,
|
||||
Compress: appConfig.LogCompression,
|
||||
}
|
||||
|
||||
logger = Logger{
|
||||
slog.New(
|
||||
slog.NewJSONHandler(lj, &slog.HandlerOptions{
|
||||
AddSource: appConfig.LogAddSource,
|
||||
}),
|
||||
),
|
||||
}
|
||||
|
||||
return logger
|
||||
}
|
||||
|
||||
func GetLogger() Logger {
|
||||
return logger
|
||||
}
|
||||
27
log.go
27
log.go
|
|
@ -1,27 +0,0 @@
|
|||
package main
|
||||
|
||||
import (
|
||||
"log/slog"
|
||||
"path/filepath"
|
||||
|
||||
"gopkg.in/natefinch/lumberjack.v2"
|
||||
)
|
||||
|
||||
var (
|
||||
Log *slog.Logger
|
||||
)
|
||||
|
||||
func initLogger() {
|
||||
|
||||
lj := &lumberjack.Logger{
|
||||
Filename: filepath.Join(appConfig.LogDir, appConfig.LogFile),
|
||||
MaxSize: appConfig.LogMaxSizeMB,
|
||||
MaxBackups: appConfig.LogMaxBackups,
|
||||
MaxAge: appConfig.LogMaxAgeDays,
|
||||
Compress: appConfig.LogCompression,
|
||||
}
|
||||
|
||||
Log = slog.New(slog.NewJSONHandler(lj, &slog.HandlerOptions{
|
||||
AddSource: true,
|
||||
}))
|
||||
}
|
||||
11
main.go
11
main.go
|
|
@ -7,12 +7,17 @@ import (
|
|||
"os/signal"
|
||||
|
||||
"github.com/bwmarrin/discordgo"
|
||||
"gitlab.com/whom/bingobot/internal/config"
|
||||
"gitlab.com/whom/bingobot/internal/logging"
|
||||
)
|
||||
|
||||
var (
|
||||
Token = flag.String("token", "", "Bot authentication token")
|
||||
App = flag.String("app", "", "Application ID")
|
||||
Guild = flag.String("guild", "", "Guild ID") // Do we want it to be tied to one server?
|
||||
|
||||
appConfig *config.AppConfig
|
||||
Log logging.Logger
|
||||
)
|
||||
|
||||
func main() {
|
||||
|
|
@ -21,13 +26,15 @@ func main() {
|
|||
log.Fatal("application id is not set")
|
||||
}
|
||||
|
||||
err := parseConfigs()
|
||||
var err error
|
||||
|
||||
appConfig, err = config.Parse()
|
||||
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
|
||||
initLogger()
|
||||
Log = logging.InitLogger(appConfig)
|
||||
|
||||
err = startBot()
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue