package cmd import ( "encoding/json" "fmt" "git.db.org.ai/dborg/internal/formatter" "git.db.org.ai/dborg/internal/models" "github.com/spf13/cobra" ) var usernameCmd = &cobra.Command{ Use: "username [username]", Aliases: []string{"un"}, Short: "Check username availability across websites", Long: `Check username availability across hundreds of websites using WhatsMyName dataset`, Args: argsOrStdin(1), RunE: runUsernameCheck, } func init() { rootCmd.AddCommand(usernameCmd) usernameCmd.Flags().StringSliceP("sites", "s", []string{}, "Specific sites to check (comma-separated)") usernameCmd.Flags().BoolP("fuzzy", "f", false, "Enable fuzzy validation mode") usernameCmd.Flags().IntP("max_tasks", "m", 50, "Maximum concurrent tasks") } func runUsernameCheck(cmd *cobra.Command, args []string) error { c, err := newUnauthenticatedClient() if err != nil { return err } sites, _ := cmd.Flags().GetStringSlice("sites") fuzzy, _ := cmd.Flags().GetBool("fuzzy") maxTasks, _ := cmd.Flags().GetInt("max_tasks") return forEachQuery(args, func(username string) error { params := &models.USRSXParams{ Username: username, Sites: sites, Fuzzy: fuzzy, MaxTasks: maxTasks, } return c.CheckUsernameStream(params, func(result json.RawMessage) error { if IsJSONOutput() { fmt.Println(string(result)) return nil } var siteResult models.SiteResult if err := json.Unmarshal(result, &siteResult); err != nil { return err } return formatter.FormatUsernameSiteResult(&siteResult) }) }) }