Change summary
cache/repo_cache_bug.go | 18 +++++++++++++++++
commands/rm.go | 45 +++++++++++++++++++++++++++++++++++++++++++
commands/root.go | 1
3 files changed, 64 insertions(+)
Detailed changes
@@ -359,3 +359,21 @@ func (c *RepoCache) NewBugRaw(author *IdentityCache, unixTime int64, title strin
return cached, op, nil
}
+
+// RemoveBug removes a bug from the cache and repo
+func (c *RepoCache) RemoveBug(prefix string) error {
+ b, err := c.ResolveBugPrefix(prefix)
+ if err != nil {
+ return err
+ }
+
+ err = bug.RemoveLocalBug(c.repo, b.Id())
+ if err != nil {
+ return err
+ }
+
+ delete(c.bugs, b.Id())
+ delete(c.bugExcerpts, b.Id())
+
+ return c.writeBugCache()
+}
@@ -0,0 +1,45 @@
+package commands
+
+import (
+ "fmt"
+
+ "github.com/spf13/cobra"
+)
+
+type rmOptions struct {
+}
+
+func newRmCommand() *cobra.Command {
+ env := newEnv()
+ options := rmOptions{}
+
+ cmd := &cobra.Command{
+ Use: "rm <id>",
+ Short: "Remove an existing bug.",
+ PreRunE: loadBackendEnsureUser(env),
+ PostRunE: closeBackend(env),
+ RunE: func(cmd *cobra.Command, args []string) error {
+ return runRm(env, options, args)
+ },
+ }
+
+ flags := cmd.Flags()
+ flags.SortFlags = false
+
+ return cmd
+}
+
+func runRm(env *Env, opts rmOptions, args []string) error {
+ if len(args) == 0 {
+ return fmt.Errorf("you must provide a bug id prefix to remove")
+ }
+
+ err := env.backend.RemoveBug(args[0])
+ if err != nil {
+ return err
+ }
+
+ env.out.Printf("bug %s removed\n", args[0])
+
+ return nil
+}
@@ -71,6 +71,7 @@ _git_bug() {
cmd.AddCommand(newLsLabelCommand())
cmd.AddCommand(newPullCommand())
cmd.AddCommand(newPushCommand())
+ cmd.AddCommand(newRmCommand())
cmd.AddCommand(newSelectCommand())
cmd.AddCommand(newShowCommand())
cmd.AddCommand(newStatusCommand())