package main import ( "fmt" "os" "github.com/spf13/cobra" "gitea.oblak.solutions/dimitar/gitFlow/internal/app" "gitea.oblak.solutions/dimitar/gitFlow/internal/config" "gitea.oblak.solutions/dimitar/gitFlow/internal/presenter" ) // newScanCmd runs a single scan pass and renders the result. func newScanCmd() *cobra.Command { cmd := &cobra.Command{ Use: "scan", Short: "Scan repositories under a directory once", Args: cobra.NoArgs, RunE: func(cmd *cobra.Command, _ []string) error { cfg, err := config.Load(cmd.Flags()) if err != nil { return err } // The README asks for the parent directory interactively; // prompt only when nothing was provided and stdin is a TTY. if !cmd.Flags().Changed("dir") && isTerminal(os.Stdin) { if d, err := promptDir(cfg.Dir); err == nil { cfg.Dir = d } } ctx, stop := signalContext() defer stop() a, err := app.New(cfg) if err != nil { return err } result, err := a.ScanOnce(ctx) if err != nil { return err } opts := presenter.Options{Color: presenter.ParseColorMode(cfg.Color)} return presenter.Present(os.Stdout, cfg.Format, result, opts) }, } config.RegisterFlags(cmd.Flags()) return cmd } // newConfigCmd prints the effective configuration. func newConfigCmd() *cobra.Command { cmd := &cobra.Command{ Use: "config", Short: "Show the effective configuration", Args: cobra.NoArgs, RunE: func(cmd *cobra.Command, _ []string) error { cfg, err := config.Load(cmd.Flags()) if err != nil { return err } out, err := cfg.Dump() if err != nil { return err } fmt.Print(out) return nil }, } config.RegisterFlags(cmd.Flags()) return cmd }