package cmd import ( "git.db.org.ai/dborg/internal/formatter" "git.db.org.ai/dborg/internal/models" "github.com/spf13/cobra" ) var bucketsCmd = &cobra.Command{ Use: "buckets", Short: "List public buckets", Long: `List public S3, Azure, GCP, and DigitalOcean buckets with file counts`, RunE: runBucketsSearch, } var bucketFilesCmd = &cobra.Command{ Use: "bucket-files", Short: "Search public bucket files", Long: `Search public S3, Azure, GCP, and DigitalOcean buckets for exposed files`, RunE: runBucketFilesSearch, } func init() { rootCmd.AddCommand(bucketsCmd) rootCmd.AddCommand(bucketFilesCmd) bucketsCmd.Flags().IntP("limit", "l", 1000, "Number of results to return") bucketsCmd.Flags().IntP("start", "t", 0, "Starting offset for pagination") bucketFilesCmd.Flags().StringP("keywords", "w", "", "Search keywords") bucketFilesCmd.Flags().StringP("extensions", "e", "", "File extensions (comma-separated, e.g. 'sql,db,xlsx')") bucketFilesCmd.Flags().StringP("buckets", "b", "", "Filter by bucket names (comma-separated)") bucketFilesCmd.Flags().IntP("limit", "l", 1000, "Number of results to return") bucketFilesCmd.Flags().IntP("start", "t", 0, "Starting offset for pagination") } func runBucketsSearch(cmd *cobra.Command, args []string) error { c, err := newClient() if err != nil { return err } params := &models.BucketsSearchParams{} params.Limit, _ = cmd.Flags().GetInt("limit") params.Start, _ = cmd.Flags().GetInt("start") response, err := c.SearchBuckets(params) if err != nil { return err } return formatter.FormatBucketsResults(response, IsJSONOutput()) } func runBucketFilesSearch(cmd *cobra.Command, args []string) error { c, err := newClient() if err != nil { return err } params := &models.BucketsFilesSearchParams{} params.Keywords, _ = cmd.Flags().GetString("keywords") params.Extensions, _ = cmd.Flags().GetString("extensions") params.Buckets, _ = cmd.Flags().GetString("buckets") params.Limit, _ = cmd.Flags().GetInt("limit") params.Start, _ = cmd.Flags().GetInt("start") response, err := c.SearchBucketFiles(params) if err != nil { return err } return formatter.FormatBucketFilesResults(response, IsJSONOutput()) }