Jonathan Bernard
587e3c4509
`pit_api` cannot be built for Nim 2.x without a non-trivial refactor due to the enforcement of gc-safety. See the `pit_api.nim` source for details. |
||
---|---|---|
src | ||
tests | ||
.gitignore | ||
.hgignore | ||
.tool-versions | ||
pit.nimble | ||
README.md |
Personal Issue Tracker
This is Jonathan Bernard's personal issue tracker. In it's current form it is essentially a way to keep an curated list of TODO's, organizing them by workflow category (todo, todo-today, dormant, etc.) and context (Personal, Work, etc.).
Categories
pit
organizes issues into the following workflow categories:
current
- actively in progresstodo
- to be addressed in the futuretodo-today
- chosen to be addressed todaypending
- blocked by some third partydormant
- long-term things I don't want to forget but don't need in front of me every day.done
In my typical workflow the todo
category serves as a collection point for
things I want to keep track of. Then on a a daily basis I review issues in the
todo
category and move a selection to the todo-today
category. I also try
to keep the total number of issues in the todo
below about a dozen. If there
are more than a dozen things in my todo
category I will identify the lowest
priority items and move them to the dormant
category.
Issue Properties
pit
allows arbitrary properties to be attached to issues in the form of
key-value pairs. On the command line these can be provided via the -p
or
--properties
parameter in the form
-p <prop1Name>:<prop1Value>;<prop2Name>:<prop2Value>[;...]
There are a couple of properties that pit will recognize automatically:
context
: the context organization feature is implemented using issue properties.created
:pit
uses this property to timestamp an issue when it is created.completed
:pit
uses this property to timestamp an issue when it is moved to thedone
category.pending
:pit
looks to this property to provide extra information about issues in thepending
category. Typically I use this to note who or what is blocking the issue and why.
Some other common properties I use are:
resolution
: for short notes about why an issue was moved todone
, especially if it the action wasn't taken or if it is not completely clear that this issue was completed.
Configuration Options
pit
allows configuration via command-line options and via a configuration
file. There is some overlap between the two methods of configuring pit
, but
it is not a complete mapping.
Config File
pit
looks for a JSON configuration file in the following places (in order):
- From a file path passed on the command line via the
--config <cfgFile>
parameter, ./.pitrc
, in the current working directory,- From a file path set in the
PITRC
environment variable. $HOME/.pitrc
, in the user's home directory.
Sample Config File
This example illustrates all of the possible configuration options.
{
"api": {
"apiKeys": [
"50cdcb660554e2d50fd88bd40b6579717bf00643f6ff57f108baf16c8c083f77",
"e4fc1aac49fc1f2f7f4ca6b1f04d41a4ccdd58e13bb53b41da97703d47267ceb",
]
},
"cli": {
"defaultContext": "personal",
"verbose": false,
"termWidth": 120,
"triggerPtk": true
},
"contexts": {
"nla-music": "New Life Music",
"nla-youth-band": "New Life Youth Band",
"acn": "Accenture",
"hff": "Hope Family Fellowship"
},
"tasksDir": "/mnt/c/Users/Jonathan Bernard/synced/tasks"
}
Explanation of configurable options.
In general, options supplied on the CLI directly will override options supplied in the configuration file. All options are optional unless stated otherwise.
-
api
: configuration options specific to the API service.apiKeys
: a list of Bearer tokens accepted by the API for the purpose of authenticating API requests.
-
cli
: configuration options specific to the CLI.-
defaultContext
: if present all invokations to the CLI will be in this context. This is like adding a--context <defaultContext>
parameter to every CLI invocation. Any actual--context
parameter will override this value. -
verbose
: Show issue details when listing issues (same as--verbose
flag). -
termWidth
: Set the expected width of the terminal (for wrapping text). -
triggerPtk
: If set totrue
, invoke theptk
command to start and stop timers when issues move to thecurrent
anddone
categories respectively.
-
-
contexts
:pit
allows issues to be organized into different contexts via acontext
property on the issue. The CLI groups issues according to context. When printing contexts the CLI will take the value from the issues'context
properties and capatalize it. In some cases you may wish to have a different display value for a context. I like to use abbreviations for long context names to reduce the need to type,hff
for "Hope Family Fellowship", for example. Thecontexts
config option allows you to provide a map of context values to context display names See the sample file below for an example.Note that this mapping does not have to have entries for all contexts, only those you wish to provide with an alternate display form. For example, in the configuration sample above the default context is
personal
, a value not present in thecontexts
configuration.personal
will be displayed as "Personal"; it does not need an alternate display name. -
tasksDir
required: a file path to the root directory for the issue repository (same as--tasks-dir
CLI parameter).