diff --git a/pit.nimble b/pit.nimble index 12df4b7..93faeb3 100644 --- a/pit.nimble +++ b/pit.nimble @@ -1,6 +1,6 @@ # Package -version = "4.9.4" +version = "4.10.0" author = "Jonathan Bernard" description = "Personal issue tracker." license = "MIT" @@ -22,4 +22,4 @@ requires @[ ] task updateVersion, "Update the version of this package.": - exec "update_nim_package_version pit 'src/pitpkg/version.nim'" + exec "update_nim_package_version pit 'src/pitpkg/version.nim'" \ No newline at end of file diff --git a/src/pit.nim b/src/pit.nim index 8bfb0d7..15e7aa0 100644 --- a/src/pit.nim +++ b/src/pit.nim @@ -466,6 +466,10 @@ Options: filter.properties["context"] = ctx.defaultContext.get filterOption = some(filter) + if args["--tags"]: + filter.hasTags = ($args["--tags"]).split(',') + filterOption = some(filter) + # Finally, if the "context" is "all", don't filter on context if filter.properties.hasKey("context") and filter.properties["context"] == "all": diff --git a/src/pitpkg/private/libpit.nim b/src/pitpkg/private/libpit.nim index 61ecd3b..5131b7b 100644 --- a/src/pitpkg/private/libpit.nim +++ b/src/pitpkg/private/libpit.nim @@ -22,6 +22,7 @@ type IssueFilter* = ref object completedRange*: Option[tuple[b, e: DateTime]] fullMatch*, summaryMatch*: Option[Regex] + hasTags*: seq[string] properties*: TableRef[string, string] PitConfig* = ref object @@ -69,6 +70,7 @@ proc initFilter*(): IssueFilter = completedRange: none(tuple[b, e: DateTime]), fullMatch: none(Regex), summaryMatch: none(Regex), + hasTags: @[], properties: newTable[string, string]()) proc propsFilter*(props: TableRef[string, string]): IssueFilter = @@ -91,6 +93,10 @@ proc fullMatchFilter*(pattern: string): IssueFilter = result = initFilter() result.fullMatch = some(re("(?i)" & pattern)) +proc hasTagsFilter*(tags: seq[string]): IssueFilter = + result = initFilter() + result.hasTags = tags + proc groupBy*(issues: seq[Issue], propertyKey: string): TableRef[string, seq[Issue]] = result = newTable[string, seq[Issue]]() for i in issues: @@ -259,6 +265,9 @@ proc filter*(issues: seq[Issue], filter: IssueFilter): seq[Issue] = let p = filter.fullMatch.get result = result.filterIt( it.summary.find(p).isSome or it.details.find(p).isSome) + for tag in filter.hasTags: + result = result.filterIt(it.tags.find(tag) >= 0) + ### Configuration utilities proc loadConfig*(args: Table[string, Value] = initTable[string, Value]()): PitConfig = let pitrcLocations = @[ diff --git a/src/pitpkg/version.nim b/src/pitpkg/version.nim index a76a5fc..8aa308c 100644 --- a/src/pitpkg/version.nim +++ b/src/pitpkg/version.nim @@ -1 +1 @@ -const PIT_VERSION* = "4.9.4" \ No newline at end of file +const PIT_VERSION* = "4.10.0" \ No newline at end of file