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 newLabelCommand() *cobra.Command {
12 env := newEnv()
13
14 cmd := &cobra.Command{
15 Use: "label [<id>]",
16 Short: "Display, add or remove labels to/from a bug.",
17 PreRunE: loadRepo(env),
18 RunE: func(cmd *cobra.Command, args []string) error {
19 return runLabel(env, args)
20 },
21 }
22
23 cmd.AddCommand(newLabelAddCommand())
24 cmd.AddCommand(newLabelRmCommand())
25
26 return cmd
27}
28
29func runLabel(env *Env, args []string) error {
30 backend, err := cache.NewRepoCache(env.repo)
31 if err != nil {
32 return err
33 }
34 defer backend.Close()
35 interrupt.RegisterCleaner(backend.Close)
36
37 b, args, err := _select.ResolveBug(backend, args)
38 if err != nil {
39 return err
40 }
41
42 snap := b.Snapshot()
43
44 for _, l := range snap.Labels {
45 env.out.Println(l)
46 }
47
48 return nil
49}