feat(update): add --type flag to bd update command
Allows changing issue type (task/epic/bug/feature/chore) via bd update --type. Storage layer already supported it, this adds CLI and RPC support. Fixes GH#522. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -514,6 +514,15 @@ var updateCmd = &cobra.Command{
|
||||
}
|
||||
updates["estimated_minutes"] = estimate
|
||||
}
|
||||
if cmd.Flags().Changed("type") {
|
||||
issueType, _ := cmd.Flags().GetString("type")
|
||||
// Validate issue type
|
||||
if !types.IssueType(issueType).IsValid() {
|
||||
fmt.Fprintf(os.Stderr, "Error: invalid issue type %q. Valid types: bug, feature, task, epic, chore\n", issueType)
|
||||
os.Exit(1)
|
||||
}
|
||||
updates["issue_type"] = issueType
|
||||
}
|
||||
if cmd.Flags().Changed("add-label") {
|
||||
addLabels, _ := cmd.Flags().GetStringSlice("add-label")
|
||||
updates["add_labels"] = addLabels
|
||||
@@ -597,6 +606,9 @@ var updateCmd = &cobra.Command{
|
||||
if estimate, ok := updates["estimated_minutes"].(int); ok {
|
||||
updateArgs.EstimatedMinutes = &estimate
|
||||
}
|
||||
if issueType, ok := updates["issue_type"].(string); ok {
|
||||
updateArgs.IssueType = &issueType
|
||||
}
|
||||
if addLabels, ok := updates["add_labels"].([]string); ok {
|
||||
updateArgs.AddLabels = addLabels
|
||||
}
|
||||
@@ -1024,6 +1036,7 @@ func init() {
|
||||
updateCmd.Flags().String("acceptance-criteria", "", "DEPRECATED: use --acceptance")
|
||||
_ = updateCmd.Flags().MarkHidden("acceptance-criteria")
|
||||
updateCmd.Flags().IntP("estimate", "e", 0, "Time estimate in minutes (e.g., 60 for 1 hour)")
|
||||
updateCmd.Flags().StringP("type", "t", "", "Issue type (bug|feature|task|epic|chore)")
|
||||
updateCmd.Flags().StringSlice("add-label", nil, "Add labels (repeatable)")
|
||||
updateCmd.Flags().StringSlice("remove-label", nil, "Remove labels (repeatable)")
|
||||
updateCmd.Flags().StringSlice("set-labels", nil, "Set labels, replacing all existing (repeatable)")
|
||||
|
||||
@@ -87,6 +87,7 @@ type UpdateArgs struct {
|
||||
Assignee *string `json:"assignee,omitempty"`
|
||||
ExternalRef *string `json:"external_ref,omitempty"` // Link to external issue trackers
|
||||
EstimatedMinutes *int `json:"estimated_minutes,omitempty"` // Time estimate in minutes
|
||||
IssueType *string `json:"issue_type,omitempty"` // Issue type (bug|feature|task|epic|chore)
|
||||
AddLabels []string `json:"add_labels,omitempty"`
|
||||
RemoveLabels []string `json:"remove_labels,omitempty"`
|
||||
SetLabels []string `json:"set_labels,omitempty"`
|
||||
|
||||
@@ -73,6 +73,9 @@ func updatesFromArgs(a UpdateArgs) map[string]interface{} {
|
||||
if a.EstimatedMinutes != nil {
|
||||
u["estimated_minutes"] = *a.EstimatedMinutes
|
||||
}
|
||||
if a.IssueType != nil {
|
||||
u["issue_type"] = *a.IssueType
|
||||
}
|
||||
return u
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user