1package commands
2
3import (
4 "errors"
5 "os"
6
7 "github.com/MichaelMure/git-bug/cache"
8 "github.com/spf13/cobra"
9)
10
11var labelRemove bool
12
13func runLabel(cmd *cobra.Command, args []string) error {
14 if len(args) == 0 {
15 return errors.New("You must provide a bug id")
16 }
17
18 if len(args) == 1 {
19 return errors.New("You must provide a label")
20 }
21
22 backend, err := cache.NewRepoCache(repo)
23 if err != nil {
24 return err
25 }
26 defer backend.Close()
27
28 prefix := args[0]
29
30 var add, remove []string
31
32 if labelRemove {
33 remove = args[1:]
34 } else {
35 add = args[1:]
36 }
37
38 b, err := backend.ResolveBugPrefix(prefix)
39 if err != nil {
40 return err
41 }
42
43 err = b.ChangeLabels(os.Stdout, add, remove)
44 if err != nil {
45 return err
46 }
47
48 return b.Commit()
49}
50
51var labelCmd = &cobra.Command{
52 Use: "label <id> [<label>...]",
53 Short: "Manipulate bug's label",
54 RunE: runLabel,
55}
56
57func init() {
58 RootCmd.AddCommand(labelCmd)
59
60 labelCmd.Flags().BoolVarP(&labelRemove, "remove", "r", false,
61 "Remove a label",
62 )
63}