feat: Add label display to bd show and bd list
- Populate labels in bd list human-readable output (direct mode) - Populate labels in bd list JSON output (direct and daemon modes) - Populate labels in daemon RPC handlers (handleList, handleShow) - handleShow now returns full IssueDetails with labels/deps/dependents - Labels displayed with 'Labels: [label1, label2]' format Closes bd-164 Amp-Thread-ID: https://ampcode.com/threads/T-30cd607d-c509-4a8c-9cac-c2aea2ad75c6 Co-authored-by: Amp <amp@ampcode.com>
This commit is contained in:
@@ -90,6 +90,9 @@ var listCmd = &cobra.Command{
|
||||
if issue.Assignee != "" {
|
||||
fmt.Printf(" Assignee: %s\n", issue.Assignee)
|
||||
}
|
||||
if len(issue.Labels) > 0 {
|
||||
fmt.Printf(" Labels: %v\n", issue.Labels)
|
||||
}
|
||||
fmt.Println()
|
||||
}
|
||||
}
|
||||
@@ -114,17 +117,27 @@ var listCmd = &cobra.Command{
|
||||
}
|
||||
|
||||
if jsonOutput {
|
||||
// Populate labels for JSON output
|
||||
for _, issue := range issues {
|
||||
issue.Labels, _ = store.GetLabels(ctx, issue.ID)
|
||||
}
|
||||
outputJSON(issues)
|
||||
return
|
||||
}
|
||||
|
||||
fmt.Printf("\nFound %d issues:\n\n", len(issues))
|
||||
for _, issue := range issues {
|
||||
// Load labels for display
|
||||
labels, _ := store.GetLabels(ctx, issue.ID)
|
||||
|
||||
fmt.Printf("%s [P%d] [%s] %s\n", issue.ID, issue.Priority, issue.IssueType, issue.Status)
|
||||
fmt.Printf(" %s\n", issue.Title)
|
||||
if issue.Assignee != "" {
|
||||
fmt.Printf(" Assignee: %s\n", issue.Assignee)
|
||||
}
|
||||
if len(labels) > 0 {
|
||||
fmt.Printf(" Labels: %v\n", labels)
|
||||
}
|
||||
fmt.Println()
|
||||
}
|
||||
},
|
||||
|
||||
@@ -909,6 +909,12 @@ func (s *Server) handleList(req *Request) Response {
|
||||
}
|
||||
}
|
||||
|
||||
// Populate labels for each issue
|
||||
for _, issue := range issues {
|
||||
labels, _ := store.GetLabels(ctx, issue.ID)
|
||||
issue.Labels = labels
|
||||
}
|
||||
|
||||
data, _ := json.Marshal(issues)
|
||||
return Response{
|
||||
Success: true,
|
||||
@@ -942,7 +948,27 @@ func (s *Server) handleShow(req *Request) Response {
|
||||
}
|
||||
}
|
||||
|
||||
data, _ := json.Marshal(issue)
|
||||
// Populate labels, dependencies, and dependents
|
||||
labels, _ := store.GetLabels(ctx, issue.ID)
|
||||
deps, _ := store.GetDependencies(ctx, issue.ID)
|
||||
dependents, _ := store.GetDependents(ctx, issue.ID)
|
||||
|
||||
// Create detailed response with related data
|
||||
type IssueDetails struct {
|
||||
*types.Issue
|
||||
Labels []string `json:"labels,omitempty"`
|
||||
Dependencies []*types.Issue `json:"dependencies,omitempty"`
|
||||
Dependents []*types.Issue `json:"dependents,omitempty"`
|
||||
}
|
||||
|
||||
details := &IssueDetails{
|
||||
Issue: issue,
|
||||
Labels: labels,
|
||||
Dependencies: deps,
|
||||
Dependents: dependents,
|
||||
}
|
||||
|
||||
data, _ := json.Marshal(details)
|
||||
return Response{
|
||||
Success: true,
|
||||
Data: data,
|
||||
|
||||
Reference in New Issue
Block a user