summaryrefslogtreecommitdiff
path: root/internal/cli/showcase_handler.go
blob: 642313fb0b523eb4d91fb4003bb651a41392c44f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
package cli

import (
	"fmt"
	"log"

	"codeberg.org/snonux/gitsyncer/internal/config"
	"codeberg.org/snonux/gitsyncer/internal/showcase"
)

// HandleShowcase handles the showcase generation after syncing
func HandleShowcase(cfg *config.Config, flags *Flags) int {
	// Determine which repositories to process
	var repoFilter []string
	if flags.SyncRepo != "" {
		// Only process the specific repository that was synced
		repoFilter = []string{flags.SyncRepo}
		fmt.Printf("\nGenerating showcase for %s...\n", flags.SyncRepo)
	} else {
		// Process all repositories for --sync-all or public sync operations
		fmt.Println("\nGenerating project showcase for all repositories...")
	}

	// Create showcase generator
	generator := showcase.New(cfg, flags.WorkDir)

	// Set AI tool if specified
	if flags.AITool != "" {
		generator.SetAITool(flags.AITool)
	}

	// Generate showcase with optional filter
	if err := generator.GenerateShowcase(repoFilter, flags.Force); err != nil {
		log.Printf("ERROR: Failed to generate showcase: %v\n", err)
		return 1
	}

	fmt.Println("Showcase generated successfully!")
	return 0
}