diff options
author | vince <vincetiu8@gmail.com> | 2020-07-24 11:25:38 +0800 |
---|---|---|
committer | Michael Muré <batolettre@gmail.com> | 2020-07-28 14:30:06 +0200 |
commit | 4e5f377d75824e31a058313cad2d2e478f348c28 (patch) | |
tree | cb2066a1b528a691589478a2260c1fbfbd681c96 | |
parent | 9436cf4b8983699ef7a164f4036686dd83d345d4 (diff) | |
download | git-bug-4e5f377d75824e31a058313cad2d2e478f348c28.tar.gz |
Remove need to specify remote
This commit makes the removeBug command use the listRefs repo command to search for the bug, eliminating the need to input the remote the bug came from.
-rw-r--r-- | bug/bug.go | 21 | ||||
-rw-r--r-- | cache/repo_cache_bug.go | 13 | ||||
-rw-r--r-- | commands/rm.go | 14 |
3 files changed, 19 insertions, 29 deletions
@@ -243,15 +243,18 @@ func readBug(repo repository.ClockedRepo, ref string) (*Bug, error) { } // RemoveLocalBug will remove a local bug from its hash -func RemoveLocalBug(repo repository.ClockedRepo, id entity.Id) error { - ref := bugsRefPattern + id.String() - return repo.RemoveRef(ref) -} - -// RemoveRemoteBug will remove a remote bug locally from its hash -func RemoveRemoteBug(repo repository.ClockedRepo, remote string, id entity.Id) error { - ref := fmt.Sprintf(bugsRemoteRefPattern, remote) + id.String() - return repo.RemoveRef(ref) +func RemoveBug(repo repository.ClockedRepo, id entity.Id) error { + refs, err := repo.ListRefs(id.String()) + if err != nil { + return err + } + for _, ref := range refs { + err = repo.RemoveRef(ref) + if err != nil { + return err + } + } + return nil } type StreamedBug struct { diff --git a/cache/repo_cache_bug.go b/cache/repo_cache_bug.go index c7e2ed34..34e2a144 100644 --- a/cache/repo_cache_bug.go +++ b/cache/repo_cache_bug.go @@ -361,23 +361,14 @@ func (c *RepoCache) NewBugRaw(author *IdentityCache, unixTime int64, title strin } // RemoveBug removes a bug from the cache and repo -// args[0] specifies the bug prefix to remove -// args[1] (if present) specifies the remote the bug was imported from -func (c *RepoCache) RemoveBug(prefix string, remote string) error { +func (c *RepoCache) RemoveBug(prefix string) error { b, err := c.ResolveBugPrefix(prefix) if err != nil { return err } - if remote == "" { - err = bug.RemoveLocalBug(c.repo, b.Id()) - } else { - err = bug.RemoveRemoteBug(c.repo, remote, b.Id()) - } - if err != nil { - return err - } + err = bug.RemoveBug(c.repo, b.Id()) delete(c.bugs, b.Id()) delete(c.bugExcerpts, b.Id()) diff --git a/commands/rm.go b/commands/rm.go index 800f16e1..90a79539 100644 --- a/commands/rm.go +++ b/commands/rm.go @@ -10,7 +10,7 @@ func newRmCommand() *cobra.Command { env := newEnv() cmd := &cobra.Command{ - Use: "rm <id> [<remote>]", + Use: "rm <id>", Short: "Remove an existing bug.", Long: "Remove an existing bug in the local repository. If the bug was imported from a bridge, specify the remote name to remove it from. Note removing bugs that were imported from bridges will not remove the bug remote, and will only remove the local copy of the bug.", PreRunE: loadBackendEnsureUser(env), @@ -27,16 +27,12 @@ func newRmCommand() *cobra.Command { } func runRm(env *Env, args []string) (err error) { - switch len(args) { - case 1: - err = env.backend.RemoveBug(args[0], "") - break - case 2: - err = env.backend.RemoveBug(args[0], args[1]) - default: - return errors.New("invalid number of arguments for rm command") + if len(args) == 0 { + return errors.New("you must provide a bug prefix to remove") } + err = env.backend.RemoveBug(args[0]) + if err != nil { return } |