From bf37ac9a69fd03af16e2b0bf90b3ac09c783cd0c Mon Sep 17 00:00:00 2001 From: Aryan Bhosale <36108149+aryanbhosale@users.noreply.github.com> Date: Mon, 10 Feb 2025 16:42:15 +0530 Subject: [PATCH] Support setting project item number to 0 --- pkg/cmd/project/item-edit/item_edit.go | 12 +++++++++--- pkg/cmd/project/item-edit/item_edit_test.go | 17 +++++++++++++---- 2 files changed, 22 insertions(+), 7 deletions(-) diff --git a/pkg/cmd/project/item-edit/item_edit.go b/pkg/cmd/project/item-edit/item_edit.go index c4acaaea9..87d8c91d3 100644 --- a/pkg/cmd/project/item-edit/item_edit.go +++ b/pkg/cmd/project/item-edit/item_edit.go @@ -28,6 +28,7 @@ type editItemOpts struct { singleSelectOptionID string iterationID string clear bool + numberChanged bool // format exporter cmdutil.Exporter } @@ -76,10 +77,11 @@ func NewCmdEditItem(f *cmdutil.Factory, runF func(config editItemConfig) error) gh project item-edit --id --field-id --project-id --clear `), RunE: func(cmd *cobra.Command, args []string) error { + opts.numberChanged = cmd.Flags().Changed("number") if err := cmdutil.MutuallyExclusive( "only one of `--text`, `--number`, `--date`, `--single-select-option-id` or `--iteration-id` may be used", opts.text != "", - opts.number != 0, + opts.numberChanged, opts.date != "", opts.singleSelectOptionID != "", opts.iterationID != "", @@ -89,7 +91,7 @@ func NewCmdEditItem(f *cmdutil.Factory, runF func(config editItemConfig) error) if err := cmdutil.MutuallyExclusive( "cannot use `--text`, `--number`, `--date`, `--single-select-option-id` or `--iteration-id` in conjunction with `--clear`", - opts.text != "" || opts.number != 0 || opts.date != "" || opts.singleSelectOptionID != "" || opts.iterationID != "", + opts.text != "" || opts.numberChanged || opts.date != "" || opts.singleSelectOptionID != "" || opts.iterationID != "", opts.clear, ); err != nil { return err @@ -146,7 +148,7 @@ func runEditItem(config editItemConfig) error { } // update item values - if config.opts.text != "" || config.opts.number != 0 || config.opts.date != "" || config.opts.singleSelectOptionID != "" || config.opts.iterationID != "" { + if config.opts.text != "" || config.opts.numberChanged || config.opts.date != "" || config.opts.singleSelectOptionID != "" || config.opts.iterationID != "" { return updateItemValues(config) } @@ -176,6 +178,10 @@ func buildUpdateItem(config editItemConfig, date time.Time) (*UpdateProjectV2Fie value = githubv4.ProjectV2FieldValue{ Number: githubv4.NewFloat(githubv4.Float(config.opts.number)), } + } else if config.opts.numberChanged { + value = githubv4.ProjectV2FieldValue{ + Number: githubv4.NewFloat(githubv4.Float(config.opts.number)), + } } else if config.opts.date != "" { value = githubv4.ProjectV2FieldValue{ Date: githubv4.NewDate(githubv4.Date{Time: date}), diff --git a/pkg/cmd/project/item-edit/item_edit_test.go b/pkg/cmd/project/item-edit/item_edit_test.go index 2f9a16df6..cfa00dc46 100644 --- a/pkg/cmd/project/item-edit/item_edit_test.go +++ b/pkg/cmd/project/item-edit/item_edit_test.go @@ -55,6 +55,14 @@ func TestNewCmdeditItem(t *testing.T) { itemID: "123", }, }, + { + name: "number zero", + cli: "--number 0 --id 123", + wants: editItemOpts{ + number: 0, + itemID: "123", + }, + }, { name: "field-id", cli: "--field-id FIELD_ID --id 123", @@ -292,10 +300,11 @@ func TestRunItemEdit_Number(t *testing.T) { config := editItemConfig{ io: ios, opts: editItemOpts{ - number: 123.45, - itemID: "item_id", - projectID: "project_id", - fieldID: "field_id", + number: 123.45, + numberChanged: true, + itemID: "item_id", + projectID: "project_id", + fieldID: "field_id", }, client: client, }