aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Muré <batolettre@gmail.com>2019-02-26 22:25:52 +0100
committerMichael Muré <batolettre@gmail.com>2019-03-01 22:52:54 +0100
commitbad05a4f3d24eb092724f667ee33bb1956457dd3 (patch)
treeebffb166f1a9f63d56459b0ffee7c3a09ae1042f
parentc235d89d36500e58e3bcadda94e9cab06023dd55 (diff)
downloadgit-bug-bad05a4f3d24eb092724f667ee33bb1956457dd3.tar.gz
cache: better API to access excerpts
-rw-r--r--cache/repo_cache.go32
-rw-r--r--commands/user_list.go7
-rw-r--r--misc/zsh_completion/git-bug18
3 files changed, 35 insertions, 22 deletions
diff --git a/cache/repo_cache.go b/cache/repo_cache.go
index 7423ee73..2b0fa360 100644
--- a/cache/repo_cache.go
+++ b/cache/repo_cache.go
@@ -387,6 +387,16 @@ func (c *RepoCache) ResolveBug(id string) (*BugCache, error) {
return cached, nil
}
+// ResolveBugExcerpt retrieve a BugExcerpt matching the exact given id
+func (c *RepoCache) ResolveBugExcerpt(id string) (*BugExcerpt, error) {
+ e, ok := c.bugExcerpts[id]
+ if !ok {
+ return nil, bug.ErrBugNotExist
+ }
+
+ return e, nil
+}
+
// ResolveBugPrefix retrieve a bug matching an id prefix. It fails if multiple
// bugs match.
func (c *RepoCache) ResolveBugPrefix(prefix string) (*BugCache, error) {
@@ -489,12 +499,6 @@ func (c *RepoCache) AllBugsIds() []string {
return result
}
-// AllBugExcerpt return all known bug excerpt.
-// This maps is read-only.
-func (c *RepoCache) AllBugExcerpt() map[string]*BugExcerpt {
- return c.bugExcerpts
-}
-
// ValidLabels list valid labels
//
// Note: in the future, a proper label policy could be implemented where valid
@@ -708,6 +712,16 @@ func (c *RepoCache) ResolveIdentity(id string) (*IdentityCache, error) {
return cached, nil
}
+// ResolveIdentityExcerpt retrieve a IdentityExcerpt matching the exact given id
+func (c *RepoCache) ResolveIdentityExcerpt(id string) (*IdentityExcerpt, error) {
+ e, ok := c.identitiesExcerpts[id]
+ if !ok {
+ return nil, identity.ErrIdentityNotExist
+ }
+
+ return e, nil
+}
+
// ResolveIdentityPrefix retrieve an Identity matching an id prefix.
// It fails if multiple identities match.
func (c *RepoCache) ResolveIdentityPrefix(prefix string) (*IdentityCache, error) {
@@ -767,12 +781,6 @@ func (c *RepoCache) AllIdentityIds() []string {
return result
}
-// AllIdentityExcerpt return all known identities excerpt.
-// This maps is read-only.
-func (c *RepoCache) AllIdentityExcerpt() map[string]*IdentityExcerpt {
- return c.identitiesExcerpts
-}
-
func (c *RepoCache) SetUserIdentity(i *IdentityCache) error {
err := identity.SetUserIdentity(c.repo, i.Identity)
if err != nil {
diff --git a/commands/user_list.go b/commands/user_list.go
index 19be7628..23ecea73 100644
--- a/commands/user_list.go
+++ b/commands/user_list.go
@@ -17,7 +17,12 @@ func runUserLs(cmd *cobra.Command, args []string) error {
defer backend.Close()
interrupt.RegisterCleaner(backend.Close)
- for _, i := range backend.AllIdentityExcerpt() {
+ for _, id := range backend.AllIdentityIds() {
+ i, err := backend.ResolveIdentityExcerpt(id)
+ if err != nil {
+ return err
+ }
+
fmt.Printf("%s %s\n",
colors.Cyan(i.HumanId()),
i.DisplayName(),
diff --git a/misc/zsh_completion/git-bug b/misc/zsh_completion/git-bug
index 9f7e84dc..232cd3c1 100644
--- a/misc/zsh_completion/git-bug
+++ b/misc/zsh_completion/git-bug
@@ -17,15 +17,6 @@ case $state in
;;
level2)
case $words[2] in
- status)
- _arguments '2: :(close open)'
- ;;
- title)
- _arguments '2: :(edit)'
- ;;
- user)
- _arguments '2: :(adopt create ls)'
- ;;
bridge)
_arguments '2: :(configure pull rm)'
;;
@@ -35,6 +26,15 @@ case $state in
label)
_arguments '2: :(add rm)'
;;
+ status)
+ _arguments '2: :(close open)'
+ ;;
+ title)
+ _arguments '2: :(edit)'
+ ;;
+ user)
+ _arguments '2: :(adopt create ls)'
+ ;;
*)
_arguments '*: :_files'
;;