1package bugcmd
2
3import (
4 "github.com/spf13/cobra"
5
6 "github.com/MichaelMure/git-bug/commands/bug/select"
7 "github.com/MichaelMure/git-bug/commands/completion"
8 "github.com/MichaelMure/git-bug/commands/execenv"
9 "github.com/MichaelMure/git-bug/util/text"
10)
11
12func newBugLabelRmCommand() *cobra.Command {
13 env := execenv.NewEnv()
14
15 cmd := &cobra.Command{
16 Use: "rm [BUG_ID] LABEL...",
17 Short: "Remove a label from a bug",
18 PreRunE: execenv.LoadBackend(env),
19 RunE: execenv.CloseBackend(env, func(cmd *cobra.Command, args []string) error {
20 return runBugLabelRm(env, args)
21 }),
22 ValidArgsFunction: completion.BugAndLabels(env, false),
23 }
24
25 return cmd
26}
27
28func runBugLabelRm(env *execenv.Env, args []string) error {
29 b, args, err := _select.ResolveBug(env.Backend, args)
30 if err != nil {
31 return err
32 }
33
34 removed := args
35
36 changes, _, err := b.ChangeLabels(nil, text.CleanupOneLineArray(removed))
37
38 for _, change := range changes {
39 env.Out.Println(change)
40 }
41
42 if err != nil {
43 return err
44 }
45
46 return b.Commit()
47}