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