package cmd import ( "encoding/json" "git.db.org.ai/dborg/internal/formatter" "git.db.org.ai/dborg/internal/models" "github.com/spf13/cobra" ) var githubCmd = &cobra.Command{ Use: "github", Short: "GitHub leads scanner", Long: `Scans GitHub repositories for commit author information based on search query`, } var githubLeadsCmd = &cobra.Command{ Use: "leads [query]", Short: "Search GitHub repositories for commit authors", Long: `Scans GitHub repositories for commit author information based on search query and streams results as NDJSON. If no query is provided, returns random leads.`, Args: cobra.MaximumNArgs(1), RunE: runGitHubLeads, } func init() { rootCmd.AddCommand(githubCmd) githubCmd.AddCommand(githubLeadsCmd) githubLeadsCmd.Flags().String("sort", "stars", "Sort method (stars, forks, updated)") githubLeadsCmd.Flags().String("exclude", "", "Comma-separated terms to exclude from search") githubLeadsCmd.Flags().String("format", "json", "Output format (json, csv)") githubLeadsCmd.Flags().String("bio", "false", "Include bio info (true/false) - adds company, location, website, twitter, pfp") } func runGitHubLeads(cmd *cobra.Command, args []string) error { query := "" if len(args) > 0 { query = args[0] } sort, _ := cmd.Flags().GetString("sort") exclude, _ := cmd.Flags().GetString("exclude") format, _ := cmd.Flags().GetString("format") bio, _ := cmd.Flags().GetString("bio") c, err := newClient() if err != nil { return err } err = c.SearchGitHubLeadsWithParams(query, sort, exclude, format, bio, func(result json.RawMessage) error { var lead models.GitHubLead if err := json.Unmarshal(result, &lead); err != nil { return err } output, err := formatter.FormatGitHubLeads(&lead, IsJSONOutput()) if err != nil { return err } printOutput(output) return nil }) if err != nil { return err } return nil }