diff --git a/pit.nimble b/pit.nimble index b5963b4..e6f5bb5 100644 --- a/pit.nimble +++ b/pit.nimble @@ -1,6 +1,6 @@ # Package -version = "4.18.0" +version = "4.18.1" author = "Jonathan Bernard" description = "Personal issue tracker." license = "MIT" @@ -19,8 +19,8 @@ requires @[ "https://git.jdb-software.com/jdb/nim-lang-utils.git >= 0.4.0", "https://git.jdb-software.com/jdb/nim-time-utils.git >= 0.4.0", "https://git.jdb-software.com/jdb/nim-data-uri.git >= 1.0.0", - "https://git.jdb-software.com/jdb/update-nim-package-version" + "https://git.jdb-software.com/jdb/update-nim-package-version >= 0.2.0" ] task updateVersion, "Update the version of this package.": - exec "update_nim_package_version pit 'src/pitpkg/version.nim'" \ No newline at end of file + exec "update_nim_package_version pit 'src/pitpkg/cliconstants.nim'" \ No newline at end of file diff --git a/src/pit.nim b/src/pit.nim index e5ef608..65b53e0 100644 --- a/src/pit.nim +++ b/src/pit.nim @@ -7,10 +7,9 @@ import algorithm, cliutils, data_uri, docopt, json, logging, options, os, from nre import re import strutils except alignLeft, capitalize, strip, toUpper, toLower import pitpkg/private/libpit +import pitpkg/cliconstants export libpit -include "pitpkg/version.nim" - type CliContext = ref object cfg*: PitConfig @@ -267,8 +266,6 @@ proc list( when isMainModule: try: - const usage = readFile("src/usage.txt") - const onlineHelp = readFile("src/online-help.txt") let consoleLogger = newConsoleLogger( levelThreshold=lvlInfo, @@ -276,7 +273,7 @@ when isMainModule: logging.addHandler(consoleLogger) # Parse arguments - let args = docopt(usage, version = PIT_VERSION) + let args = docopt(USAGE, version = PIT_VERSION) if args["--debug"]: consoleLogger.levelThreshold = lvlDebug @@ -284,8 +281,8 @@ when isMainModule: if args["--echo-args"]: stderr.writeLine($args) if args["help"]: - stderr.writeLine(usage & "\n") - stderr.writeLine(onlineHelp) + stderr.writeLine(USAGE & "\n") + stderr.writeLine(ONLINE_HELP) quit() let ctx = initContext(args) diff --git a/src/pit_api.nim b/src/pit_api.nim index 4602d37..4690d6a 100644 --- a/src/pit_api.nim +++ b/src/pit_api.nim @@ -5,8 +5,7 @@ import asyncdispatch, cliutils, docopt, jester, json, logging, options, sequtils import nre except toSeq import pitpkg/private/libpit - -include "pitpkg/version.nim" +import pitpkg/cliconstants type PitApiCfg* = object diff --git a/src/pitpkg/cliconstants.nim b/src/pitpkg/cliconstants.nim new file mode 100644 index 0000000..8755897 --- /dev/null +++ b/src/pitpkg/cliconstants.nim @@ -0,0 +1,158 @@ +const PIT_VERSION* = "4.18.1" + +const USAGE* = """Usage: + pit ( new | add) [] [options] + pit list contexts [options] + pit list [...] [options] + pit ( start | done | pending | todo-today | todo | suspend ) ... [options] + pit edit ... [options] + pit tag ... [options] + pit untag ... [options] + pit reorder [options] + pit delegate + pit hide-until [options] + pit ( delete | rm ) ... [options] + pit add-binary-property [options] + pit get-binary-property [options] + pit help + +Options: + + -h, --help Print this usage and help information. + + -p, --properties Specify properties. Formatted as "key:val;key:val" + When used with the list command this option applies + a filter to the issues listed, only allowing those + which have all of the given properties. + + -c, --context Shorthand for '-p context:' + + -g, --tags Specify tags for an issue. + + -T, --today Limit to today's issues. + + -F, --future Limit to future issues. + + -H, --show-hidden Show all matching issues, ignoring any 'hide-until' + properties set. + + -m, --match Limit to issues whose summaries match the given + pattern (PCRE regex supported). + + -M, --match-all Limit to the issues whose summaries or details + match the given pattern (PCRE regex supported). + + -v, --verbose Show issue details when listing issues. + + -q, --quiet Suppress verbose output. + + -y, --yes Automatically answer "yes" to any prompts. + + -C, --config Location of the config file (defaults to $HOME/.pitrc) + + -E, --echo-args Echo arguments (for debug purposes). + + -d, --tasks-dir Path to the tasks directory (defaults to the value + configured in the .pitrc file) + + --term-width Manually set the terminal width to use. + + --ptk Enable PTK integration for this command. + + --debug Enable debug-level log output. +""" + +const ONLINE_HELP* = """Issue States: + + PIT organizes issues around their state, which is one of: + + current - issues actively being worked + todo-today - issues planned for today + pending - issues that are blocked by some third-party + done - issues that have been completely resolved + todo - issues that need to be done in the future + dormant - issues that are low-priority, to be tracked, but hidden + by default + +Issue Properties: + + PIT supports adding arbitrary properties to any issue to track any metadata + about the issue the user may wish. There are several properties that have + special behavior attached to them. They are: + + created + + If present, expected to be an ISO 8601-formatted date that represents the + time when the issue was created. + + completed + + If present, expected to be an ISO 8601-formatted date that represents the + time when the issue moved to the "done" state. PIT will add this + property automatically when you use the "done" command, and can filter on + this value. + + context + + Allows issues to be organized into contexts. The -c option is short-hand + for '-p context:' and the 'list contexts' command will show + all values of 'context' set in existing issues. + + delegated-to + + When an issue now belongs to someone else, but needs to be monitored for + completion, this allows you to keep the issue in its current state but + note how it has been delegated. When present PIT will prepend this value + to the issue summary with an accent color. + + hide-until + + When present, expected to be an ISO 8601-formatted date and used to + supress the display of the issue until on or after the given date. + + pending + + When an issue is blocked by a third party, this property can be used to + capture details about the dependency When present PIT will display this + value after the issue summary. + + recurrence + + When an issue is moved to the "done" state, if the issue has a valid + "recurrence" property, PIT will create a new issue and set the + "hide-until" property for that new issue depending on the recurrence + definition. + + A valid recurrence value has a time value and optionally has an source + issue ID. For example: + + every 5 days, 10a544 + + The first word, "every", is expected to be either "every" or "after". + + The second portion is expected to be a time period. Supported time units + are "hour", "day", "week", "month", an "year", along with the plural + forms (e.g. "5 days", "8 hours", etc.). + + The final portion is the source issue ID. This is optional. When a source + issue ID is given, the new issue is created as a clone of the given + issue. When not given, the issue being closed is used for cloning. + + The "every" and "after" keywords allow the user to choose whether the new + issue is created based on the creation time ("every") or the completion + time ("after") of the issue being closed based. + + Examples: + + every day + every 2 days + after 2 days + every week + after 12 hours + every 2 weeks, 10a544 + + tags + + If present, expected to be a comma-delimited list of text tags. The -g + option is a short-hand for '-p tags:'. +""" \ No newline at end of file diff --git a/src/pitpkg/version.nim b/src/pitpkg/version.nim deleted file mode 100644 index 182f223..0000000 --- a/src/pitpkg/version.nim +++ /dev/null @@ -1 +0,0 @@ -const PIT_VERSION* = "4.18.0" \ No newline at end of file diff --git a/src/usage.txt b/src/usage.txt index f0dcc71..20d0633 100644 --- a/src/usage.txt +++ b/src/usage.txt @@ -1,3 +1,4 @@ +const USAGE* ="""\ Usage: pit ( new | add) [] [options] pit list contexts [options] @@ -58,3 +59,4 @@ Options: --ptk Enable PTK integration for this command. --debug Enable debug-level log output. +"""