package cmd import ( "fmt" "strings" "github.com/spf13/cobra" ) func init() { searchCmd := &cobra.Command{ Use: "search", Short: "Search rickub", } reposCmd := &cobra.Command{ Use: "repos ", Short: "Search repositories", Args: cobra.MinimumNArgs(1), RunE: runSearchRepos, } addPaging(reposCmd) searchCmd.AddCommand(reposCmd) rootCmd.AddCommand(searchCmd) } func runSearchRepos(cmd *cobra.Command, args []string) error { client, err := newClient() if err != nil { return err } q := strings.Join(args, " ") page, err := client.SearchRepos(cmd.Context(), q, pageFlag, perPageFlag) if err != nil { return err } if flagJSON { return printJSON(cmd.OutOrStdout(), page) } if len(page.Items) == 0 { fmt.Fprintln(cmd.OutOrStdout(), "No repositories matched.") return nil } tw := newTabw(cmd.OutOrStdout()) fmt.Fprintln(tw, "NAME\tVISIBILITY\tDESCRIPTION") for _, r := range page.Items { fmt.Fprintf(tw, "%s\t%s\t%s\n", r.FullName, r.Visibility, dash(r.Description)) } tw.Flush() printPageFooter(cmd, page.Page) return nil }