package main

import (
	"context"
	"flag"
	"fmt"
	"os"
	"os/signal"
	"syscall"

	"leadb2b.org/internal/sitemapgen"
)

func main() {
	var (
		reset  = flag.Bool("reset", false, "apaga state.json e recomeça do zero")
		limit  = flag.Int("limit", 0, "máximo de URLs (0 = sem limite, útil para teste)")
		source = flag.String("source", "", "mysql ou api (sobrescreve SITEMAP_SOURCE)")
		workers = flag.Int("workers", 0, "workers para fonte api")
	)
	flag.Parse()

	cfg, err := sitemapgen.LoadConfigFromEnv()
	if err != nil {
		fmt.Fprintf(os.Stderr, "config: %v\n", err)
		os.Exit(1)
	}
	if *reset {
		cfg.Reset = true
	}
	if *limit > 0 {
		cfg.Limit = *limit
	}
	if *source != "" {
		cfg.Source = *source
	}
	if *workers > 0 {
		cfg.Workers = *workers
	}

	ctx, stop := signal.NotifyContext(context.Background(), os.Interrupt, syscall.SIGTERM)
	defer stop()

	gen := sitemapgen.NewGenerator(cfg)
	fmt.Printf("Gerando sitemaps (%s) → %s\n", cfg.Source, cfg.OutputDir)
	if err := gen.Run(ctx); err != nil {
		fmt.Fprintf(os.Stderr, "erro: %v\n", err)
		os.Exit(1)
	}
	fmt.Printf("Concluído. Índice local: %s\n", gen.OutputIndexPath())
	fmt.Println("Arquivos apenas locais — envie manualmente ao Google Search Console (não são publicados no servidor).")
}
