bug_label_rm.go

 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}