package cmd import ( "fmt" "os" "github.com/olekukonko/tablewriter" "github.com/spf13/cobra" ) var listCmd = &cobra.Command{ Use: "list", Short: "List or search parts", RunE: func(cmd *cobra.Command, args []string) error { query, _ := cmd.Flags().GetString("query") partType, _ := cmd.Flags().GetString("type") category, _ := cmd.Flags().GetString("category") result, err := GetClient().ListParts(query, partType, category) if err != nil { return fmt.Errorf("failed to list parts: %w", err) } if len(result.Parts) == 0 { fmt.Println("No parts found.") return nil } table := tablewriter.NewWriter(os.Stdout) table.SetHeader([]string{"ID", "Title", "Type", "Category", "Qty", "Location"}) table.SetBorder(false) table.SetHeaderAlignment(tablewriter.ALIGN_LEFT) table.SetAlignment(tablewriter.ALIGN_LEFT) for _, p := range result.Parts { id := p.ID if len(id) > 8 { id = id[:8] } table.Append([]string{ id, p.Title, p.Type, p.Category, fmt.Sprintf("%d", p.Quantity), p.Location, }) } table.Render() fmt.Printf("Total: %d\n", result.Total) return nil }, } func init() { listCmd.Flags().StringP("query", "q", "", "Fuzzy search query") listCmd.Flags().StringP("type", "t", "", "Filter by type") listCmd.Flags().StringP("category", "c", "", "Filter by category") rootCmd.AddCommand(listCmd) }