Re-design output to make skimming easier.

- We now always protect the left margin when printing task details
  (including tags) to make it easier to skim down that line.
- Also made the actual summary always follow immediately after the ID,
  to align to that skimmable line.
- Moved the information about the delegatee to the end of the summary,
  next to the tags, and changed the color of the delegatee to make it
  easier to distinguish.
- Added the `-G` option, to allow filtering out issues matching any of
  the provided tags.
- We now allow options to be passed to both the `delegate` and `help`
  command. Any options are ignored, but this allows the use of tools
  like `cmd_shell` which always wrap commands with the pre-given
  options.
This commit is contained in:
2022-07-31 20:01:39 -05:00
parent c7891de310
commit 7215b4969b
4 changed files with 88 additions and 45 deletions

View File

@ -1,5 +1,6 @@
import cliutils, docopt, json, logging, langutils, options, os,
sequtils, strformat, strutils, tables, times, timeutils, uuids
import std/json, std/logging, std/options, std/os, std/sequtils, std/strformat,
std/strutils, std/tables, std/times
import cliutils, docopt, langutils, timeutils, uuids
import nre except toSeq
@ -23,6 +24,7 @@ type
completedRange*: Option[tuple[b, e: DateTime]]
fullMatch*, summaryMatch*: Option[Regex]
hasTags*: seq[string]
exclTags*: seq[string]
properties*: TableRef[string, string]
exclProperties*: TableRef[string, seq[string]]
@ -115,6 +117,7 @@ proc initFilter*(): IssueFilter =
fullMatch: none(Regex),
summaryMatch: none(Regex),
hasTags: @[],
exclTags: @[],
properties: newTable[string, string](),
exclProperties: newTable[string,seq[string]]())
@ -372,6 +375,9 @@ proc filter*(issues: seq[Issue], filter: IssueFilter): seq[Issue] =
for tag in filter.hasTags:
result = result.filterIt(it.tags.find(tag) >= 0)
for exclTag in filter.exclTags:
result = result.filterIt(it.tags.find(exclTag) < 0)
### Configuration utilities
proc loadConfig*(args: Table[string, Value] = initTable[string, Value]()): PitConfig =
let pitrcLocations = @[