Compare commits

...

2 Commits
4.5.0 ... 4.6.1

4 changed files with 33 additions and 5 deletions

View File

@ -11,5 +11,8 @@ bin = @["pit", "pit_api"]
# Dependencies # Dependencies
requires @[ "nim >= 0.19.0", "cliutils 0.6.1", "docopt 0.6.8", "jester 0.4.1", requires @[ "nim >= 0.19.0", "docopt 0.6.8", "jester 0.4.1", "uuids 0.1.10" ]
"langutils >= 0.4.0", "timeutils 0.4.0", "uuids 0.1.10" ]
requires "https://git.jdb-labs.com/jdb/nim-cli-utils.git >= 0.6.1"
requires "https://git.jdb-labs.com/jdb/nim-lang-utils.git >= 0.4.0"
requires "https://git.jdb-labs.com/jdb/nim-time-utils.git >= 0.4.0"

View File

@ -5,7 +5,7 @@ import cliutils, docopt, json, logging, options, os, ospaths, sequtils,
tables, terminal, times, timeutils, unicode, uuids tables, terminal, times, timeutils, unicode, uuids
from nre import re from nre import re
import strutils except capitalize, toUpper, toLower import strutils except capitalize, strip, toUpper, toLower
import pitpkg/private/libpit import pitpkg/private/libpit
export libpit export libpit
@ -244,6 +244,8 @@ Usage:
pit list [<listable>] [options] pit list [<listable>] [options]
pit ( start | done | pending | todo-today | todo | suspend ) <id>... [options] pit ( start | done | pending | todo-today | todo | suspend ) <id>... [options]
pit edit <ref>... pit edit <ref>...
pit tag <id>... [options]
pit untag <id>... [options]
pit reorder <state> pit reorder <state>
pit delegate <id> <delegated-to> pit delegate <id> <delegated-to>
pit ( delete | rm ) <id>... pit ( delete | rm ) <id>...
@ -357,6 +359,29 @@ Options:
else: edit(ctx.tasksDir.loadIssueById(editRef)) else: edit(ctx.tasksDir.loadIssueById(editRef))
elif args["tag"]:
if not args["--tags"]: raise newException(Exception, "no tags given")
let newTags = ($args["--tags"]).split(",").mapIt(it.strip)
for id in @(args["<id>"]):
var issue = ctx.tasksDir.loadIssueById(id)
issue.tags = deduplicate(issue.tags & newTags)
issue.store()
elif args["untag"]:
let tagsToRemove: seq[string] =
if args["--tags"]: ($args["--tags"]).split(",").mapIt(it.strip)
else: @[]
for id in @(args["<id>"]):
var issue = ctx.tasksDir.loadIssueById(id)
if tagsToRemove.len > 0:
issue.tags = issue.tags.filter(
proc (tag: string): bool = not tagsToRemove.anyIt(it == tag))
else: issue.tags = @[]
issue.store()
elif args["start"] or args["todo-today"] or args["done"] or elif args["start"] or args["todo-today"] or args["done"] or
args["pending"] or args["todo"] or args["suspend"]: args["pending"] or args["todo"] or args["suspend"]:

View File

@ -179,7 +179,7 @@ proc store*(tasksDir: string, issue: Issue, state: IssueState, withComments = fa
else: else:
issue.filepath = stateDir / filename issue.filepath = stateDir / filename
issue.store() issue.store(withComments)
proc storeOrder*(issues: seq[Issue], path: string) = proc storeOrder*(issues: seq[Issue], path: string) =
var orderLines = newSeq[string]() var orderLines = newSeq[string]()

View File

@ -1 +1 @@
const PIT_VERSION* = "4.5.0" const PIT_VERSION* = "4.6.1"