Documentation
¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
View Source
var ListCmd = &cobra.Command{ Use: "list [flags]", Short: "List CANARY tokens with filtering and ordering", Long: `List tokens from the database with priority ordering and filtering. Supports filtering by status, aspect, phase, owner, and spec status. Results are ordered by priority (1=highest) and updated date by default. By default, hides requirements from: - Test files (*_test.go, /tests/, /test/) - Template directories (.canary/templates/, /base/, /embedded/) - Documentation examples (IMPLEMENTATION_SUMMARY, FINAL_SUMMARY, etc.) - AI agent directories (.claude/, .cursor/, .github/prompts/, etc.) Use --include-hidden to show all requirements including hidden ones.`, RunE: func(cmd *cobra.Command, args []string) error { prompt, _ := cmd.Flags().GetString("prompt") if prompt != "" { if _, err := utils.LoadPrompt(prompt); err != nil { return err } } dbPath, _ := cmd.Flags().GetString("db") filterStatus, _ := cmd.Flags().GetString("status") filterAspect, _ := cmd.Flags().GetString("aspect") filterPhase, _ := cmd.Flags().GetString("phase") filterOwner, _ := cmd.Flags().GetString("owner") filterSpecStatus, _ := cmd.Flags().GetString("spec-status") priorityMin, _ := cmd.Flags().GetInt("priority-min") priorityMax, _ := cmd.Flags().GetInt("priority-max") orderBy, _ := cmd.Flags().GetString("order-by") limit, _ := cmd.Flags().GetInt("limit") effLimit := utils.EffectiveLimit(limit, defaultListLimit) jsonOutput, _ := cmd.Flags().GetBool("json") includeHidden, _ := cmd.Flags().GetBool("include-hidden") if !isKnownOrderKey(orderBy) { return utils.FailInvalidOrderBy(cmd) } projectID := utils.ReadProjectID(cmd) db, err := utils.OpenIndexRO(cmd, dbPath) if err != nil { return err } defer db.Close() cfg, err := utils.LoadProjectConfig() if err != nil { fmt.Fprintf(os.Stderr, "Warning: could not load project config: %v\n", err) } idPattern := "" if cfg != nil && cfg.Requirements.IDPattern != "" { idPattern = cfg.Requirements.IDPattern } filters := make(map[string]any) if filterStatus != "" { filters["status"] = filterStatus } if filterAspect != "" { filters["aspect"] = filterAspect } if filterPhase != "" { filters["phase"] = filterPhase } if filterOwner != "" { filters["owner"] = filterOwner } if filterSpecStatus != "" { filters["spec_status"] = filterSpecStatus } if priorityMin > 0 { filters["priority_min"] = priorityMin } if priorityMax > 0 { filters["priority_max"] = priorityMax } if includeHidden { filters["include_hidden"] = "true" } tokens, err := db.ListTokens(projectID, filters, idPattern, orderBy, effLimit) if err != nil { return utils.GuardContract(cmd, err) } if jsonOutput { if tokens == nil { tokens = []*storage.Token{} } enc := json.NewEncoder(os.Stdout) return enc.Encode(tokens) } if len(tokens) == 0 { fmt.Println("No tokens found") return nil } fmt.Printf("Found %d tokens:\n\n", len(tokens)) for _, token := range tokens { fmt.Printf("📌 %s - %s\n", token.ReqID, token.Feature) fmt.Printf(" Status: %s | Aspect: %s | Priority: %d", token.Status, token.Aspect, token.Priority) if token.Phase != "" { fmt.Printf(" | Phase: %s", token.Phase) } fmt.Println() fmt.Printf(" Location: %s:%d\n", token.FilePath, token.LineNumber) if token.Test != "" { fmt.Printf(" Test: %s\n", token.Test) } if token.Owner != "" { fmt.Printf(" Owner: %s\n", token.Owner) } if token.Keywords != "" { fmt.Printf(" Keywords: %s\n", token.Keywords) } fmt.Println() } if effLimit > 0 && len(tokens) == effLimit { fmt.Printf("(showing %d; use --limit -1 for all)\n", effLimit) } return nil }, }
CANARY: REQ=ENG-4308; FEATURE="ListCmd"; ASPECT=CLI; STATUS=IMPL; OWNER=canary; UPDATED=2025-10-16
Functions ¶
This section is empty.
Types ¶
This section is empty.
Click to show internal directories.
Click to hide internal directories.