Files
infra/license-bot/main.go
T
2026-10-20 02:43:27 +01:00

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
}
}