commands: add a "label rm" command to remove labels from a bug

Michael Muré created

Change summary

commands/label add.go        |  7 ++--
commands/label rm.go         | 51 ++++++++++++++++++++++++++++++++++++++
doc/man/git-bug-label-rm.1   | 29 +++++++++++++++++++++
doc/man/git-bug-label.1      |  2 
doc/md/git-bug_label.md      |  1 
doc/md/git-bug_label_rm.md   | 22 ++++++++++++++++
misc/bash_completion/git-bug | 21 +++++++++++++++
misc/zsh_completion/git-bug  |  2 
8 files changed, 130 insertions(+), 5 deletions(-)

Detailed changes

commands/label add.go 🔗

@@ -28,14 +28,15 @@ func runLabelAdd(cmd *cobra.Command, args []string) error {
 	}
 
 	changes, err := b.ChangeLabels(add, nil)
-	if err != nil {
-		return err
-	}
 
 	for _, change := range changes {
 		fmt.Println(change)
 	}
 
+	if err != nil {
+		return err
+	}
+
 	return b.Commit()
 }
 

commands/label rm.go 🔗

@@ -0,0 +1,51 @@
+package commands
+
+import (
+	"errors"
+	"fmt"
+
+	"github.com/MichaelMure/git-bug/cache"
+	"github.com/spf13/cobra"
+)
+
+func runLabelRm(cmd *cobra.Command, args []string) error {
+	if len(args) == 0 {
+		return errors.New("You must provide a bug id")
+	}
+
+	backend, err := cache.NewRepoCache(repo)
+	if err != nil {
+		return err
+	}
+	defer backend.Close()
+
+	prefix := args[0]
+	remove := args[1:]
+
+	b, err := backend.ResolveBugPrefix(prefix)
+	if err != nil {
+		return err
+	}
+
+	changes, err := b.ChangeLabels(nil, remove)
+
+	for _, change := range changes {
+		fmt.Println(change)
+	}
+
+	if err != nil {
+		return err
+	}
+
+	return b.Commit()
+}
+
+var labelRmCmd = &cobra.Command{
+	Use:   "rm <id> [<label>...]",
+	Short: "Remove a label from a bug",
+	RunE:  runLabelRm,
+}
+
+func init() {
+	labelCmd.AddCommand(labelRmCmd)
+}

doc/man/git-bug-label-rm.1 🔗

@@ -0,0 +1,29 @@
+.TH "GIT-BUG" "1" "Sep 2018" "Generated from git-bug's source code" "" 
+.nh
+.ad l
+
+
+.SH NAME
+.PP
+git\-bug\-label\-rm \- Remove a label from a bug
+
+
+.SH SYNOPSIS
+.PP
+\fBgit\-bug label rm <id> [<label>\&...] [flags]\fP
+
+
+.SH DESCRIPTION
+.PP
+Remove a label from a bug
+
+
+.SH OPTIONS
+.PP
+\fB\-h\fP, \fB\-\-help\fP[=false]
+    help for rm
+
+
+.SH SEE ALSO
+.PP
+\fBgit\-bug\-label(1)\fP

doc/man/git-bug-label.1 🔗

@@ -26,4 +26,4 @@ Display a bug labels
 
 .SH SEE ALSO
 .PP
-\fBgit\-bug(1)\fP, \fBgit\-bug\-label\-add(1)\fP
+\fBgit\-bug(1)\fP, \fBgit\-bug\-label\-add(1)\fP, \fBgit\-bug\-label\-rm(1)\fP

doc/md/git-bug_label.md 🔗

@@ -20,4 +20,5 @@ git-bug label <id> [flags]
 
 * [git-bug](git-bug.md)	 - A bugtracker embedded in Git
 * [git-bug label add](git-bug_label_add.md)	 - Add a label to a bug
+* [git-bug label rm](git-bug_label_rm.md)	 - Remove a label from a bug
 

doc/md/git-bug_label_rm.md 🔗

@@ -0,0 +1,22 @@
+## git-bug label rm
+
+Remove a label from a bug
+
+### Synopsis
+
+Remove a label from a bug
+
+```
+git-bug label rm <id> [<label>...] [flags]
+```
+
+### Options
+
+```
+  -h, --help   help for rm
+```
+
+### SEE ALSO
+
+* [git-bug label](git-bug_label.md)	 - Display a bug labels
+

misc/bash_completion/git-bug 🔗

@@ -367,6 +367,26 @@ _git-bug_label_add()
     noun_aliases=()
 }
 
+_git-bug_label_rm()
+{
+    last_command="git-bug_label_rm"
+
+    command_aliases=()
+
+    commands=()
+
+    flags=()
+    two_word_flags=()
+    local_nonpersistent_flags=()
+    flags_with_completion=()
+    flags_completion=()
+
+
+    must_have_one_flag=()
+    must_have_one_noun=()
+    noun_aliases=()
+}
+
 _git-bug_label()
 {
     last_command="git-bug_label"
@@ -375,6 +395,7 @@ _git-bug_label()
 
     commands=()
     commands+=("add")
+    commands+=("rm")
 
     flags=()
     two_word_flags=()

misc/zsh_completion/git-bug 🔗

@@ -21,7 +21,7 @@ case $state in
         _arguments '2: :(add)'
       ;;
       label)
-        _arguments '2: :(add)'
+        _arguments '2: :(add rm)'
       ;;
       status)
         _arguments '2: :(close open)'