From 9436cf4b8983699ef7a164f4036686dd83d345d4 Mon Sep 17 00:00:00 2001 From: vince Date: Tue, 21 Jul 2020 11:41:46 +0800 Subject: Move args parsing out of repo cache --- cache/repo_cache_bug.go | 12 ++++-------- cache/repo_cache_test.go | 2 +- commands/rm.go | 12 +++++++++++- 3 files changed, 16 insertions(+), 10 deletions(-) diff --git a/cache/repo_cache_bug.go b/cache/repo_cache_bug.go index 0c26cb38..c7e2ed34 100644 --- a/cache/repo_cache_bug.go +++ b/cache/repo_cache_bug.go @@ -363,21 +363,17 @@ 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(args []string) error { - if len(args) == 0 { - return fmt.Errorf("you must provide a bug prefix to remove") - } - - b, err := c.ResolveBugPrefix(args[0]) +func (c *RepoCache) RemoveBug(prefix string, remote string) error { + b, err := c.ResolveBugPrefix(prefix) if err != nil { return err } - if len(args) == 1 { + if remote == "" { err = bug.RemoveLocalBug(c.repo, b.Id()) } else { - err = bug.RemoveRemoteBug(c.repo, args[1], b.Id()) + err = bug.RemoveRemoteBug(c.repo, remote, b.Id()) } if err != nil { return err diff --git a/cache/repo_cache_test.go b/cache/repo_cache_test.go index 276da4be..e5f8a037 100644 --- a/cache/repo_cache_test.go +++ b/cache/repo_cache_test.go @@ -103,7 +103,7 @@ func TestCache(t *testing.T) { require.NoError(t, err) // Possible to delete a bug - err = cache.RemoveBug([]string{bug1.Id().Human()}) + err = cache.RemoveBug(bug1.Id().Human(), "") require.NoError(t, err) require.Equal(t, len(cache.AllBugsIds()), 1) } diff --git a/commands/rm.go b/commands/rm.go index 718fb4a3..800f16e1 100644 --- a/commands/rm.go +++ b/commands/rm.go @@ -1,6 +1,8 @@ package commands import ( + "errors" + "github.com/spf13/cobra" ) @@ -25,7 +27,15 @@ func newRmCommand() *cobra.Command { } func runRm(env *Env, args []string) (err error) { - err = env.backend.RemoveBug(args) + 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 err != nil { return -- cgit