Compare commits

..

4 Commits
4.9.1 ... 4.9.4

5 changed files with 21 additions and 25 deletions

View File

@ -136,6 +136,3 @@ in the configuration file. All options are optional unless stated otherwise.
* `tasksDir` **required**: a file path to the root directory for the issue * `tasksDir` **required**: a file path to the root directory for the issue
repository (same as `--tasks-dir` CLI parameter). repository (same as `--tasks-dir` CLI parameter).
- CLI parameter: *cannot be specified via CLI*
- config file key: `contexts`

View File

@ -1,6 +1,6 @@
# Package # Package
version = "4.9.1" version = "4.9.4"
author = "Jonathan Bernard" author = "Jonathan Bernard"
description = "Personal issue tracker." description = "Personal issue tracker."
license = "MIT" license = "MIT"
@ -10,9 +10,9 @@ bin = @["pit", "pit_api"]
# Dependencies # Dependencies
requires @[ requires @[
"nim >= 0.19.0", "nim >= 1.4.0",
"docopt 0.6.8", "docopt 0.6.8",
"jester 0.4.1", "jester 0.5.0",
"uuids 0.1.10", "uuids 0.1.10",
"https://git.jdb-labs.com/jdb/nim-cli-utils.git >= 0.6.4", "https://git.jdb-labs.com/jdb/nim-cli-utils.git >= 0.6.4",

View File

@ -1,7 +1,7 @@
## Personal Issue Tracker CLI interface ## Personal Issue Tracker CLI interface
## ==================================== ## ====================================
import cliutils, docopt, json, logging, options, os, sequtils, import algorithm, cliutils, docopt, json, logging, options, os, sequtils,
std/wordwrap, tables, terminal, times, timeutils, unicode, uuids std/wordwrap, tables, terminal, times, timeutils, unicode, uuids
from nre import re from nre import re
@ -242,7 +242,8 @@ when isMainModule:
let doc = """ let doc = """
Usage: Usage:
pit ( new | add) <summary> [<state>] [options] pit ( new | add) <summary> [<state>] [options]
pit list [<listable>] [options] pit list contexts
pit list [<stateOrId>] [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 tag <id>... [options]
@ -475,11 +476,10 @@ Options:
var stateOption = none(IssueState) var stateOption = none(IssueState)
var issueIdOption = none(string) var issueIdOption = none(string)
if args["<listable>"]: if args["contexts"]: listContexts = true
if $args["<listable>"] == "contexts": listContexts = true elif args["<stateOrId>"]:
else: try: stateOption = some(parseEnum[IssueState]($args["<stateOrId>"]))
try: stateOption = some(parseEnum[IssueState]($args["<listable>"])) except: issueIdOption = some($args["<stateOrId>"])
except: issueIdOption = some($args["<listable>"])
# List the known contexts # List the known contexts
if listContexts: if listContexts:
@ -495,7 +495,7 @@ Options:
else: b else: b
).len ).len
for c in uniqContexts: for c in uniqContexts.sorted:
stdout.writeLine(c.alignLeft(maxLen+2) & ctx.getIssueContextDisplayName(c)) stdout.writeLine(c.alignLeft(maxLen+2) & ctx.getIssueContextDisplayName(c))
# List a specific issue # List a specific issue

View File

@ -170,6 +170,7 @@ proc loadIssueById*(tasksDir, id: string): Issue =
raise newException(KeyError, "cannot find issue for id: " & id) raise newException(KeyError, "cannot find issue for id: " & id)
proc store*(issue: Issue, withComments = false) = proc store*(issue: Issue, withComments = false) =
discard existsOrCreateDir(issue.filePath.parentDir)
writeFile(issue.filepath, toStorageFormat(issue, withComments)) writeFile(issue.filepath, toStorageFormat(issue, withComments))
proc store*(tasksDir: string, issue: Issue, state: IssueState, withComments = false) = proc store*(tasksDir: string, issue: Issue, state: IssueState, withComments = false) =
@ -265,9 +266,9 @@ proc loadConfig*(args: Table[string, Value] = initTable[string, Value]()): PitCo
".pitrc", $getEnv("PITRC"), $getEnv("HOME") & "/.pitrc"] ".pitrc", $getEnv("PITRC"), $getEnv("HOME") & "/.pitrc"]
var pitrcFilename: string = var pitrcFilename: string =
foldl(pitrcLocations, if len(a) > 0: a elif existsFile(b): b else: "") foldl(pitrcLocations, if len(a) > 0: a elif fileExists(b): b else: "")
if not existsFile(pitrcFilename): if not fileExists(pitrcFilename):
warn "pit: could not find .pitrc file: " & pitrcFilename warn "pit: could not find .pitrc file: " & pitrcFilename
if isEmptyOrWhitespace(pitrcFilename): if isEmptyOrWhitespace(pitrcFilename):
pitrcFilename = $getEnv("HOME") & "/.pitrc" pitrcFilename = $getEnv("HOME") & "/.pitrc"
@ -298,12 +299,10 @@ proc loadConfig*(args: Table[string, Value] = initTable[string, Value]()): PitCo
if isEmptyOrWhitespace(result.tasksDir): if isEmptyOrWhitespace(result.tasksDir):
raise newException(Exception, "no tasks directory configured") raise newException(Exception, "no tasks directory configured")
if not existsDir(result.tasksDir): if not dirExists(result.tasksDir):
raise newException(Exception, "cannot find tasks dir: " & result.tasksDir) raise newException(Exception, "cannot find tasks dir: " & result.tasksDir)
# Create our tasks directory structure if needed # Create our tasks directory structure if needed
for s in IssueState: for s in IssueState:
if not existsDir(result.tasksDir / $s): if not dirExists(result.tasksDir / $s):
(result.tasksDir / $s).createDir (result.tasksDir / $s).createDir

View File

@ -1 +1 @@
const PIT_VERSION* = "4.9.1" const PIT_VERSION* = "4.9.4"