From a5f907854f29e1c267ad30d1dfe85c2c47f5ac48 Mon Sep 17 00:00:00 2001 From: sinner Date: Wed, 15 Apr 2026 15:16:02 -0400 Subject: feat: add stdin support and retry logic for all search commands --- cmd/moon.go | 68 +++++++++++++++++++++++++++++++++---------------------------- 1 file changed, 37 insertions(+), 31 deletions(-) (limited to 'cmd/moon.go') diff --git a/cmd/moon.go b/cmd/moon.go index 931f64c..f749435 100644 --- a/cmd/moon.go +++ b/cmd/moon.go @@ -13,7 +13,7 @@ var moonCmd = &cobra.Command{ Aliases: []string{"mn"}, Short: "Search moon logs", Long: `Search moon logs with various filters. Requires admin API key.`, - Args: cobra.ExactArgs(1), + Args: argsOrStdin(1), RunE: runMoon, } @@ -36,40 +36,46 @@ func runMoon(cmd *cobra.Command, args []string) error { return err } - params := &models.MoonParams{ - Query: args[0], - } - params.Filename, _ = cmd.Flags().GetString("filename") - params.MaxHits, _ = cmd.Flags().GetInt("max_hits") + filename, _ := cmd.Flags().GetString("filename") + maxHits, _ := cmd.Flags().GetInt("max_hits") sortBy, _ := cmd.Flags().GetString("sort_by") if sortBy != "" && sortBy != "ingest_timestamp" && sortBy != "date_posted" { return fmt.Errorf("invalid sort_by value: must be 'ingest_timestamp' or 'date_posted'") } - params.SortBy = sortBy - params.IngestStartDate, _ = cmd.Flags().GetString("ingest_start_date") - params.IngestEndDate, _ = cmd.Flags().GetString("ingest_end_date") - params.PostedStartDate, _ = cmd.Flags().GetString("posted_start_date") - params.PostedEndDate, _ = cmd.Flags().GetString("posted_end_date") - params.Format, _ = cmd.Flags().GetString("format") + ingestStart, _ := cmd.Flags().GetString("ingest_start_date") + ingestEnd, _ := cmd.Flags().GetString("ingest_end_date") + postedStart, _ := cmd.Flags().GetString("posted_start_date") + postedEnd, _ := cmd.Flags().GetString("posted_end_date") + format, _ := cmd.Flags().GetString("format") - response, err := c.SearchMoonLogs(params) - if err != nil { - return err - } - - if err := checkError(response.Error); err != nil { - return err - } - - if params.Format != "json" { - fmt.Println(response.Message) + return forEachQuery(args, func(query string) error { + params := &models.MoonParams{ + Query: query, + Filename: filename, + MaxHits: maxHits, + SortBy: sortBy, + IngestStartDate: ingestStart, + IngestEndDate: ingestEnd, + PostedStartDate: postedStart, + PostedEndDate: postedEnd, + Format: format, + } + response, err := c.SearchMoonLogs(params) + if err != nil { + return err + } + if err := checkError(response.Error); err != nil { + return err + } + if params.Format != "json" { + fmt.Println(response.Message) + return nil + } + output, err := formatter.FormatMoonResults(response, IsJSONOutput()) + if err != nil { + return err + } + printOutput(output) return nil - } - - output, err := formatter.FormatMoonResults(response, IsJSONOutput()) - if err != nil { - return err - } - printOutput(output) - return nil + }) } -- cgit v1.2.3