I started my doing project late last week and it’s turned into my “productive procrastination” project. It’s a simple CLI that helps you keep track of what you’re doing and provides a record of what you’ve done.

I just pushed doing v0.2.4. It’s a big update and I don’t have time to elaborate on everything, but if you’re interested, the docs are updated and the help system is complete. You can install or update with gem install doing, or gem update doing if you already have it.

In brief, doing can now tag, filter, colorize and more. It has fuzzy matching for section and view names, and even basic time tracking.

You can use doing help to see all the commands, and doing help COMMAND to see additional details for any command. Details on the custom view templates, additional configuration and time tracking are in the docs.

See the project page for full details.

Here are my rough notes I made as I coded:

  • doing done without argument tags last entry done
    • -a archives them
  • doing finish or doing finish X marks last X entries done
    • -a archives them
  • doing tag tag1 [tag2] tags last entry or -c X entries
    • doing tag -r tag1 [tag2] removes said tag(s)
  • custom views additions
    • custom views can include tags and tags_bool
      • tags is a space separated list of tags to filter the results by
      • tags_bool defines AND (all tags must exist), OR (any tag exists), or NONE (none of the tags exist)
    • order key (asc or desc) defines output sort order by date
    • section key can be set to “All” to combine sections
  • doing show updates
    • accepts “all” as a section
    • arguments following section name are tags to filter by
      • -b sets boolean (AND, OR, NONE) or (ALL, ANY, NONE) (default OR/ANY)
    • use -c X to limit results
    • use -s to set sort order (asc or desc)
    • use -a to set age (newest or oldest)
    • CSV output for show command (--csv)
  • fuzzy section guessing when specified section isn’t found
  • fuzzy view guessing for doing view command
  • fuzzy searching for all commands that specify a view.
    • On the terminal you’ll see “Assume you meant XXX” to show what match it found, but this is output to STDERR and won’t show up if you’re redirecting the output or using it in GeekTool, etc.
  • tags_color in view config to highlight tags at the end of the lines. Can be set to any of the %colors.
  • Basic time tracking.
    • -t on show and view will turn on time calculations
    • Intervals between timestamps and dated @done tags are calculated for each line, if the tag exists.
    • You must include a %interval token in the appropriate template for it to show
    • @start(date) tags can optionally be used to override the time stamp in the calculation
    • Any other tags in the line have that line’s total added to them
    • Totals for tags can be displayed at the end of output with --totals