diff options
-rw-r--r-- | cache/filter.go | 6 | ||||
-rw-r--r-- | cache/query.go | 2 | ||||
-rw-r--r-- | cache/query_test.go | 5 | ||||
-rw-r--r-- | cache/repo_cache.go | 4 |
4 files changed, 12 insertions, 5 deletions
diff --git a/cache/filter.go b/cache/filter.go index 91ab20c0..3bcfe13e 100644 --- a/cache/filter.go +++ b/cache/filter.go @@ -6,8 +6,10 @@ import ( "github.com/MichaelMure/git-bug/bug" ) +// Filter is a functor that match a subset of bugs type Filter func(excerpt *BugExcerpt) bool +// StatusFilter return a Filter that match a bug status func StatusFilter(query string) (Filter, error) { status, err := bug.StatusFromString(query) if err != nil { @@ -19,6 +21,7 @@ func StatusFilter(query string) (Filter, error) { }, nil } +// AuthorFilter return a Filter that match a bug author func AuthorFilter(query string) Filter { cleaned := strings.TrimFunc(query, func(r rune) bool { return r == '"' || r == '\'' @@ -29,6 +32,7 @@ func AuthorFilter(query string) Filter { } } +// LabelFilter return a Filter that match a label func LabelFilter(label string) Filter { return func(excerpt *BugExcerpt) bool { for _, l := range excerpt.Labels { @@ -40,12 +44,14 @@ func LabelFilter(label string) Filter { } } +// NoLabelFilter return a Filter that match the absence of labels func NoLabelFilter() Filter { return func(excerpt *BugExcerpt) bool { return len(excerpt.Labels) == 0 } } +// Filters is a collection of Filter that implement a complex filter type Filters struct { Status []Filter Author []Filter diff --git a/cache/query.go b/cache/query.go index 14ef0bae..5be8f43d 100644 --- a/cache/query.go +++ b/cache/query.go @@ -16,7 +16,7 @@ type Query struct { // // Ex: "status:open author:descartes sort:edit-asc" // -// Supported filter fields and syntax are described in docs/queries.md +// Supported filter qualifiers and syntax are described in docs/queries.md func ParseQuery(query string) (*Query, error) { fields := splitQuery(query) diff --git a/cache/query_test.go b/cache/query_test.go index 646a6d73..29d2f585 100644 --- a/cache/query_test.go +++ b/cache/query_test.go @@ -3,6 +3,7 @@ package cache import "testing" func TestQueryParse(t *testing.T) { + var tests = []struct { input string ok bool @@ -16,10 +17,10 @@ func TestQueryParse(t *testing.T) { {"status:unknown", false}, {"author:rene", true}, - {"author:\"René Descartes\"", true}, + {`author:"René Descartes"`, true}, {"label:hello", true}, - {"label:\"Good first issue\"", true}, + {`label:"Good first issue"`, true}, {"sort:edit", true}, {"sort:unknown", false}, diff --git a/cache/repo_cache.go b/cache/repo_cache.go index af9c5070..f0c9ac4a 100644 --- a/cache/repo_cache.go +++ b/cache/repo_cache.go @@ -387,7 +387,7 @@ func repoIsAvailable(repo repository.Repo) error { return err } if len(buf) == 10 { - return fmt.Errorf("The lock file should be < 10 bytes") + return fmt.Errorf("the lock file should be < 10 bytes") } pid, err := strconv.Atoi(string(buf)) @@ -396,7 +396,7 @@ func repoIsAvailable(repo repository.Repo) error { } if util.ProcessIsRunning(pid) { - return fmt.Errorf("The repository you want to access is already locked by the process pid %d", pid) + return fmt.Errorf("the repository you want to access is already locked by the process pid %d", pid) } // The lock file is just laying there after a crash, clean it |