package main

import (
	"log/slog"
	"os"
	"os/signal"
	"syscall"

	"github.com/joho/godotenv"

	"github.com/pingcap/agent-git-service/config"
	applog "github.com/pingcap/agent-git-service/internal/logging"
	"github.com/pingcap/agent-git-service/server"
)

func main() {
	_ = godotenv.Load()
	cfg, err := config.New()
	if err != nil {
		applog.Init()
		slog.Error("bootstrap failed", "error", err)
		os.Exit(1)
	}
	applog.InitForEnvironment(cfg.Environment)

	if len(os.Args) > 1 && os.Args[1] == "wiki-reindex" {
		if err := server.RunWikiReindexWithConfig(cfg, os.Args[2:]); err != nil {
			slog.Error("wiki reindex failed", "error", err)
			os.Exit(1)
		}
		return
	}

	sigCh := make(chan os.Signal, 1)
	signal.Notify(sigCh, syscall.SIGINT, syscall.SIGTERM)
	defer signal.Stop(sigCh)

	done := make(chan struct{})
	go func() {
		<-sigCh
		close(done)
	}()

	if err := server.RunWithConfig(done, cfg); err != nil {
		slog.Error("bootstrap failed", "error", err)
		os.Exit(1)
	}
}
