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("repository sync worker bootstrap failed", "error", err)
		os.Exit(1)
	}
	applog.InitForEnvironment(cfg.Environment)

	signals := make(chan os.Signal, 1)
	signal.Notify(signals, syscall.SIGINT, syscall.SIGTERM)
	defer signal.Stop(signals)
	done := make(chan struct{})
	go func() {
		<-signals
		close(done)
	}()
	if err := server.RunRepositorySyncWorkerWithConfig(done, cfg); err != nil {
		slog.Error("repository sync worker stopped", "error", err)
		os.Exit(1)
	}
}
