1package commands
2
3import (
4 "github.com/spf13/cobra"
5
6 "github.com/MichaelMure/git-bug/cache"
7 "github.com/MichaelMure/git-bug/commands/select"
8 "github.com/MichaelMure/git-bug/util/interrupt"
9)
10
11func newLabelAddCommand() *cobra.Command {
12 env := newEnv()
13
14 cmd := &cobra.Command{
15 Use: "add [<id>] <label>[...]",
16 Short: "Add a label to a bug.",
17 PreRunE: loadRepoEnsureUser(env),
18 RunE: func(cmd *cobra.Command, args []string) error {
19 return runLabelAdd(env, args)
20 },
21 }
22
23 return cmd
24}
25
26func runLabelAdd(env *Env, args []string) error {
27 backend, err := cache.NewRepoCache(env.repo)
28 if err != nil {
29 return err
30 }
31 defer backend.Close()
32 interrupt.RegisterCleaner(backend.Close)
33
34 b, args, err := _select.ResolveBug(backend, args)
35 if err != nil {
36 return err
37 }
38
39 changes, _, err := b.ChangeLabels(args, nil)
40
41 for _, change := range changes {
42 env.out.Println(change)
43 }
44
45 if err != nil {
46 return err
47 }
48
49 return b.Commit()
50}