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
|
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") {
|
if cmd.Flags().Changed("add-label") {
|
||||||
addLabels, _ := cmd.Flags().GetStringSlice("add-label")
|
addLabels, _ := cmd.Flags().GetStringSlice("add-label")
|
||||||
updates["add_labels"] = addLabels
|
updates["add_labels"] = addLabels
|
||||||
@@ -597,6 +606,9 @@ var updateCmd = &cobra.Command{
|
|||||||
if estimate, ok := updates["estimated_minutes"].(int); ok {
|
if estimate, ok := updates["estimated_minutes"].(int); ok {
|
||||||
updateArgs.EstimatedMinutes = &estimate
|
updateArgs.EstimatedMinutes = &estimate
|
||||||
}
|
}
|
||||||
|
if issueType, ok := updates["issue_type"].(string); ok {
|
||||||
|
updateArgs.IssueType = &issueType
|
||||||
|
}
|
||||||
if addLabels, ok := updates["add_labels"].([]string); ok {
|
if addLabels, ok := updates["add_labels"].([]string); ok {
|
||||||
updateArgs.AddLabels = addLabels
|
updateArgs.AddLabels = addLabels
|
||||||
}
|
}
|
||||||
@@ -1024,6 +1036,7 @@ func init() {
|
|||||||
updateCmd.Flags().String("acceptance-criteria", "", "DEPRECATED: use --acceptance")
|
updateCmd.Flags().String("acceptance-criteria", "", "DEPRECATED: use --acceptance")
|
||||||
_ = updateCmd.Flags().MarkHidden("acceptance-criteria")
|
_ = updateCmd.Flags().MarkHidden("acceptance-criteria")
|
||||||
updateCmd.Flags().IntP("estimate", "e", 0, "Time estimate in minutes (e.g., 60 for 1 hour)")
|
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("add-label", nil, "Add labels (repeatable)")
|
||||||
updateCmd.Flags().StringSlice("remove-label", nil, "Remove labels (repeatable)")
|
updateCmd.Flags().StringSlice("remove-label", nil, "Remove labels (repeatable)")
|
||||||
updateCmd.Flags().StringSlice("set-labels", nil, "Set labels, replacing all existing (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"`
|
Assignee *string `json:"assignee,omitempty"`
|
||||||
ExternalRef *string `json:"external_ref,omitempty"` // Link to external issue trackers
|
ExternalRef *string `json:"external_ref,omitempty"` // Link to external issue trackers
|
||||||
EstimatedMinutes *int `json:"estimated_minutes,omitempty"` // Time estimate in minutes
|
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"`
|
AddLabels []string `json:"add_labels,omitempty"`
|
||||||
RemoveLabels []string `json:"remove_labels,omitempty"`
|
RemoveLabels []string `json:"remove_labels,omitempty"`
|
||||||
SetLabels []string `json:"set_labels,omitempty"`
|
SetLabels []string `json:"set_labels,omitempty"`
|
||||||
|
|||||||
@@ -73,6 +73,9 @@ func updatesFromArgs(a UpdateArgs) map[string]interface{} {
|
|||||||
if a.EstimatedMinutes != nil {
|
if a.EstimatedMinutes != nil {
|
||||||
u["estimated_minutes"] = *a.EstimatedMinutes
|
u["estimated_minutes"] = *a.EstimatedMinutes
|
||||||
}
|
}
|
||||||
|
if a.IssueType != nil {
|
||||||
|
u["issue_type"] = *a.IssueType
|
||||||
|
}
|
||||||
return u
|
return u
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user