Merge branch 'move-internal-packages' into 'main'

Move internal packages

See merge request whom/bingobot!4
This commit is contained in:
piper pentagram 2024-11-07 00:02:58 +00:00
commit 39fe90d016
5 changed files with 62 additions and 38 deletions

View file

@ -1,4 +1,4 @@
package main package config
import ( import (
"fmt" "fmt"
@ -6,8 +6,6 @@ import (
"github.com/spf13/viper" "github.com/spf13/viper"
) )
var appConfig *AppConfig
type AppConfig struct { type AppConfig struct {
LogFile string `yaml:"log_file"` LogFile string `yaml:"log_file"`
LogDir string `yaml:"log_dir"` LogDir string `yaml:"log_dir"`
@ -18,7 +16,9 @@ type AppConfig struct {
LogAddSource bool `yaml:"log_add_source"` LogAddSource bool `yaml:"log_add_source"`
} }
func parseConfigs() error { func Parse() (*AppConfig, error) {
var appConfig *AppConfig
setDefaults() setDefaults()
// automatically populate config with any matching environment vars // automatically populate config with any matching environment vars
@ -31,15 +31,15 @@ func parseConfigs() error {
err := viper.ReadInConfig() err := viper.ReadInConfig()
if err != nil { if err != nil {
return fmt.Errorf("error reading configs: %s", err) return nil, fmt.Errorf("error reading configs: %s", err)
} }
err = viper.Unmarshal(&appConfig) err = viper.Unmarshal(&appConfig)
if err != nil { 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() { func setDefaults() {

View file

@ -1,4 +1,4 @@
package main package config
import ( import (
"testing" "testing"
@ -17,6 +17,8 @@ log_max_backups: 3
log_max_age_days: 365 log_max_age_days: 365
log_compression: false log_compression: false
` `
// the config file is stored in the project root
viper.AddConfigPath("../..")
} }
// test that default configs are working // test that default configs are working
@ -26,7 +28,7 @@ func TestDefaultConfigs(t *testing.T) {
viper.SetDefault(k, v) viper.SetDefault(k, v)
err := parseConfigs() _, err := Parse()
if err != nil { if err != nil {
t.Error(err) t.Error(err)

View 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
View file

@ -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
View file

@ -7,12 +7,17 @@ import (
"os/signal" "os/signal"
"github.com/bwmarrin/discordgo" "github.com/bwmarrin/discordgo"
"gitlab.com/whom/bingobot/internal/config"
"gitlab.com/whom/bingobot/internal/logging"
) )
var ( var (
Token = flag.String("token", "", "Bot authentication token") Token = flag.String("token", "", "Bot authentication token")
App = flag.String("app", "", "Application ID") App = flag.String("app", "", "Application ID")
Guild = flag.String("guild", "", "Guild ID") // Do we want it to be tied to one server? Guild = flag.String("guild", "", "Guild ID") // Do we want it to be tied to one server?
appConfig *config.AppConfig
Log logging.Logger
) )
func main() { func main() {
@ -21,13 +26,15 @@ func main() {
log.Fatal("application id is not set") log.Fatal("application id is not set")
} }
err := parseConfigs() var err error
appConfig, err = config.Parse()
if err != nil { if err != nil {
log.Fatal(err) log.Fatal(err)
} }
initLogger() Log = logging.InitLogger(appConfig)
err = startBot() err = startBot()