54 lines
1.1 KiB
Go
54 lines
1.1 KiB
Go
package main
|
|
|
|
import (
|
|
"context"
|
|
"log/slog"
|
|
"os"
|
|
"os/signal"
|
|
"strings"
|
|
"syscall"
|
|
|
|
"git.dcntrlized.org/Dcntrlized/license-bot/internal/bot"
|
|
"git.dcntrlized.org/Dcntrlized/license-bot/internal/config"
|
|
)
|
|
|
|
// version is overridden at build time with -ldflags "-X main.version=...".
|
|
var version = "0.0.1"
|
|
|
|
func main() {
|
|
log := slog.New(slog.NewTextHandler(os.Stderr, &slog.HandlerOptions{Level: logLevel()}))
|
|
|
|
cfg, err := config.FromEnv()
|
|
if err != nil {
|
|
log.Error("invalid configuration", "err", err)
|
|
os.Exit(2)
|
|
}
|
|
log.Info("starting license-bot",
|
|
"version", version,
|
|
"repos", strings.Join(cfg.Repos, ","),
|
|
"listen", cfg.Listen,
|
|
"dry_run", cfg.DryRun,
|
|
)
|
|
|
|
ctx, stop := signal.NotifyContext(context.Background(), os.Interrupt, syscall.SIGTERM)
|
|
defer stop()
|
|
|
|
if err := bot.New(cfg, log).Run(ctx); err != nil {
|
|
log.Error("license-bot stopped", "err", err)
|
|
os.Exit(1)
|
|
}
|
|
}
|
|
|
|
func logLevel() slog.Level {
|
|
switch strings.ToLower(os.Getenv("LOG_LEVEL")) {
|
|
case "debug":
|
|
return slog.LevelDebug
|
|
case "warn", "warning":
|
|
return slog.LevelWarn
|
|
case "error":
|
|
return slog.LevelError
|
|
default:
|
|
return slog.LevelInfo
|
|
}
|
|
}
|