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().SortFlags = false
61
62	labelCmd.Flags().BoolVarP(&labelRemove, "remove", "r", false,
63		"Remove a label",
64	)
65}