# doing CLI A CLI for a What Was I Doing system *v1.0.90* ## Global Options ### `--config_file` arg Use a specific configuration file *Default Value:* `~/.doingrc` ### `-f` | `--doing_file` arg Specify a different doing_file ### `--help` Show this message ### `--[no-]notes` Output notes if included in the template ### `--stdout` Send results report to STDOUT instead of STDERR ### `--version` Display the program version ### `-x`|`--[no-]noauto` Exclude auto tags and default tags ## Commands ### `$ doing` `add_section` `SECTION_NAME` *Add a new section to the "doing" file* * * * * * * ### `$ doing` `again|resume` `` *Repeat last entry as new entry* #### Options ##### `--bool` BOOLEAN Boolean used to combine multiple tags *Default Value:* `AND` *Must Match:* `(?i-mx:and|all|any|or|not|none)` ##### `--in` SECTION_NAME Add new entry to section (default: same section as repeated entry) ##### `-n` | `--note` TEXT Note ##### `-s` | `--section` NAME Section *Default Value:* `All` ##### `--search` QUERY Repeat last entry matching search. Surround with slashes for regex (e.g. "/query/"). ##### `--tag` TAG Repeat last entry matching tags. Combine multiple tags with a comma. * * * * * * ### `$ doing` `archive` `SECTION_NAME` *Move entries between sections* #### Options ##### `--before` DATE_STRING Archive entries older than date (Flexible date format, e.g. 1/27/2021, 2020-07-19, or Monday 3pm) ##### `--bool` BOOLEAN Tag boolean (AND|OR|NOT) *Default Value:* `AND` *Must Match:* `(?i-mx:and|all|any|or|not|none)` ##### `-k` | `--keep` X How many items to keep (ignored if archiving by tag or search) *Must Match:* `(?-mix:^\d+$)` ##### `--search` QUERY Search filter ##### `-t` | `--to` SECTION_NAME Move entries to *Default Value:* `Archive` ##### `--tag` TAG Tag filter, combine multiple tags with a comma. Added for compatibility with other commands. ##### `--[no-]label` Label moved items with @from(SECTION_NAME) * * * * * * ### `$ doing` `cancel` `COUNT` *End last X entries with no time tracked* > Adds @done tag without datestamp so no elapsed time is recorded. Alias for `doing finish --no-date`. #### Options ##### `--bool` BOOLEAN Boolean (AND|OR|NOT) with which to combine multiple tag filters *Default Value:* `AND` *Must Match:* `(?i-mx:and|all|any|or|not|none)` ##### `-s` | `--section` NAME Section ##### `--tag` TAG Cancel the last X entries containing TAG. Separate multiple tags with comma (--tag=tag1,tag2) ##### `-a`|`--archive` Archive entries ##### `-u`|`--unfinished` Cancel last entry (or entries) not already marked @done * * * * * * ### `$ doing` `choose` `` *Select a section to display from a menu* * * * * * * ### `$ doing` `colors` `` *List available color variables for configuration templates and views* * * * * * * ### `$ doing` `config` `` *Edit the configuration file* #### Options ##### `-a` APP_NAME Application to use ##### `-b` BUNDLE_ID Application bundle id to use ##### `-e` | `--editor` EDITOR Editor to use ##### `-x` Use the config_editor_app defined in ~/.doingrc (Sublime Text) * * * * * * ### `$ doing` `done|did` `ENTRY` *Add a completed item with @done(date). No argument finishes last entry.* #### Options ##### `--at` DATE_STRING Set finish date to specific date/time (natural language parsed, e.g. --at=1:30pm). If used, ignores --back. Used with --took, backdates start date ##### `-b` | `--back` DATE_STRING Backdate start date by interval [4pm|20m|2h|yesterday noon] ##### `-s` | `--section` NAME Section ##### `-t` | `--took` INTERVAL Set completion date to start date plus interval (XX[mhd] or HH:MM). If used without the --back option, the start date will be moved back to allow the completion date to be the current time. ##### `-a`|`--archive` Immediately archive the entry ##### `--[no-]date` Include date ##### `-e`|`--editor` Edit entry with $EDITOR ##### `-r`|`--remove` Remove @done tag * * * * * * ### `$ doing` `finish` `COUNT` *Mark last X entries as @done* > Marks the last X entries with a @done tag and current date. Does not alter already completed entries. #### Options ##### `--at` DATE_STRING Set finish date to specific date/time (natural language parsed, e.g. --at=1:30pm). If used, ignores --back. ##### `-b` | `--back` DATE_STRING Backdate completed date to date string [4pm|20m|2h|yesterday noon] ##### `--bool` BOOLEAN Boolean (AND|OR|NOT) with which to combine multiple tag filters *Default Value:* `AND` *Must Match:* `(?i-mx:and|all|any|or|not|none)` ##### `-s` | `--section` NAME Section ##### `--search` QUERY Finish the last X entries matching search filter, surround with slashes for regex (e.g. "/query.*/") ##### `-t` | `--took` INTERVAL Set the completed date to the start date plus XX[hmd] ##### `--tag` TAG Finish the last X entries containing TAG. Separate multiple tags with comma (--tag=tag1,tag2), combine with --bool ##### `-a`|`--archive` Archive entries ##### `--auto` Auto-generate finish dates from next entry's start time. Automatically generate completion dates 1 minute before next item (in any section) began. --auto overrides the --date and --back parameters. ##### `--[no-]date` Include date ##### `-u`|`--unfinished` Finish last entry (or entries) not already marked @done * * * * * * ### `$ doing` `grep|search` `SEARCH_PATTERN` *Search for entries* > Search all sections (or limit to a single section) for entries matching text or regular expression. Normal strings are fuzzy matched. > > To search with regular expressions, single quote the string and surround with slashes: `doing search '/\bm.*?x\b/'` #### Options ##### `--after` DATE_STRING Constrain search to entries newer than date ##### `--before` DATE_STRING Constrain search to entries older than date ##### `-o` | `--output` FORMAT Output to export format (csv|html|json|template|timeline) *Must Match:* `(?i-mx:^(?:template|html|csv|json|timeline)$)` ##### `-s` | `--section` NAME Section *Default Value:* `All` ##### `--tag_sort` KEY Sort tags by (name|time) *Default Value:* `name` *Must Match:* `(?i-mx:^(?:name|time)$)` ##### `--only_timed` Only show items with recorded time intervals ##### `-t`|`--[no-]times` Show time intervals on @done tasks ##### `--totals` Show intervals with totals at the end of output * * * * * * ### `$ doing` `help` `command` *Shows a list of commands or help for one command* > Gets help for the application or its commands. Can also list the commands in a way helpful to creating a bash-style completion function #### Options ##### `-c` List commands one per line, to assist with shell completion * * * * * * ### `$ doing` `import` `PATH` *Import entries from an external source* > Imports entries from other sources. Currently only handles JSON reports exported from Timing.app. #### Options ##### `--prefix` PREFIX Prefix entries with ##### `-s` | `--section` NAME Target section ##### `--tag` TAGS Tag all imported entries ##### `--type` TYPE Import type *Default Value:* `timing` ##### `--[no-]autotag` Autotag entries ##### `--[no-]overlap` Allow entries that overlap existing times * * * * * * ### `$ doing` `last` `` *Show the last entry, optionally edit* #### Options ##### `--bool` BOOLEAN Tag boolean *Default Value:* `AND` *Must Match:* `(?i-mx:and|all|any|or|not|none)` ##### `-s` | `--section` NAME Specify a section *Default Value:* `All` ##### `--search` QUERY Search filter, surround with slashes for regex (/query/) ##### `--tag` TAG Tag filter, combine multiple tags with a comma. ##### `-e`|`--editor` Edit entry with $EDITOR * * * * * * ### `$ doing` `later` `ENTRY` *Add an item to the Later section* #### Options ##### `-b` | `--back` DATE_STRING Backdate start time to date string [4pm|20m|2h|yesterday noon] ##### `-n` | `--note` TEXT Note ##### `-e`|`--editor` Edit entry with $EDITOR * * * * * * ### `$ doing` `mark|flag` `` *Mark last entry as highlighted* #### Options ##### `-s` | `--section` NAME Section ##### `-r`|`--remove` Remove mark ##### `-u`|`--unfinished` Mark last entry not marked @done * * * * * * ### `$ doing` `meanwhile` `ENTRY` *Finish any running @meanwhile tasks and optionally create a new one* #### Options ##### `-b` | `--back` DATE_STRING Backdate start date for new entry to date string [4pm|20m|2h|yesterday noon] ##### `-n` | `--note` TEXT Note ##### `-s` | `--section` NAME Section ##### `-a`|`--[no-]archive` Archive previous @meanwhile entry ##### `-e`|`--editor` Edit entry with $EDITOR * * * * * * ### `$ doing` `note` `NOTE_TEXT` *Add a note to the last entry* > If -r is provided with no other arguments, the last note is removed. If new content is specified through arguments or STDIN, any previous note will be replaced with the new one. > > Use -e to load the last entry in a text editor where you can append a note. #### Options ##### `-s` | `--section` NAME Section *Default Value:* `All` ##### `-e`|`--editor` Edit entry with $EDITOR ##### `-r`|`--remove` Replace/Remove last entry's note (default append) * * * * * * ### `$ doing` `now|next` `ENTRY` *Add an entry* #### Options ##### `-b` | `--back` DATE_STRING Backdate start time [4pm|20m|2h|yesterday noon] ##### `-n` | `--note` TEXT Note ##### `-s` | `--section` NAME Section ##### `-e`|`--editor` Edit entry with $EDITOR ##### `-f`|`--finish_last` Timed entry, marks last entry in section as @done * * * * * * ### `$ doing` `on` `DATE_STRING` *List entries for a date* > Date argument can be natural language. "thursday" would be interpreted as "last thursday," > and "2d" would be interpreted as "two days ago." If you use "to" or "through" between two dates, > it will create a range. #### Options ##### `-o` | `--output` FORMAT Output to export format (csv|html|json|template|timeline) *Must Match:* `(?i-mx:^(?:template|html|csv|json|timeline)$)` ##### `-s` | `--section` NAME Section *Default Value:* `All` ##### `--tag_sort` KEY Sort tags by (name|time) *Default Value:* `name` *Must Match:* `(?i-mx:^(?:name|time)$)` ##### `-t`|`--[no-]times` Show time intervals on @done tasks ##### `--totals` Show time totals at the end of output * * * * * * ### `$ doing` `open` `` *Open the "doing" file in an editor* > `doing open` defaults to using the editor_app setting in ~/.doingrc (TaskPaper) #### Options ##### `-a` | `--app` APP_NAME Open with app name ##### `-b` | `--bundle_id` BUNDLE_ID Open with app bundle id ##### `-e`|`--editor` Open with $EDITOR ($EDITOR) * * * * * * ### `$ doing` `recent` `COUNT` *List recent entries* #### Options ##### `-s` | `--section` NAME Section *Default Value:* `All` ##### `--tag_sort` KEY Sort tags by (name|time) *Default Value:* `name` *Must Match:* `(?i-mx:^(?:name|time)$)` ##### `-t`|`--[no-]times` Show time intervals on @done tasks ##### `--totals` Show intervals with totals at the end of output * * * * * * ### `$ doing` `rotate` `` *Move entries to archive file* #### Options ##### `--before` DATE_STRING Rotate entries older than date (Flexible date format, e.g. 1/27/2021, 2020-07-19, or Monday 3pm) ##### `--bool` BOOLEAN Tag boolean (AND|OR|NOT) *Default Value:* `AND` *Must Match:* `(?i-mx:and|all|any|or|not|none)` ##### `-k` | `--keep` X How many items to keep in each section (most recent) *Must Match:* `(?-mix:^\d+$)` ##### `-s` | `--section` SECTION_NAME Section to rotate *Default Value:* `All` ##### `--search` QUERY Search filter ##### `--tag` TAG Tag filter, combine multiple tags with a comma. Added for compatibility with other commands. * * * * * * ### `$ doing` `sections` `` *List sections* #### Options ##### `-c`|`--[no-]column` List in single column * * * * * * ### `$ doing` `select` `` *Display an interactive menu to perform operations (requires fzf)* > List all entries and select with type-ahead fuzzy matching. > > Multiple selections are allowed, hit tab to add the highlighted entry to the selection. Return processes the selected entries. #### Options ##### `-m` | `--move` SECTION Move selected items to section ##### `-o` | `--output` FORMAT Output entries to format (doing|taskpaper|csv|html|json|template|timeline) *Must Match:* `(?i-mx:^(?:doing|taskpaper|html|csv|json|template|timeline)$)` ##### `-q` | `--query` QUERY Initial search query for filtering. Matching is fuzzy. For exact matching, start query with a single quote, e.g. `--query "'search" ##### `-s` | `--section` SECTION Select from a specific section ##### `--save_to` FILE Save selected entries to file using --output format ##### `-t` | `--tag` TAG Tag selected entries ##### `-a`|`--archive` Archive selected items ##### `-c`|`--cancel` Cancel selected items (add @done without timestamp) ##### `-d`|`--delete` Delete selected items ##### `-e`|`--editor` Edit selected item(s) ##### `-f`|`--finish` Add @done with current time to selected item(s) ##### `--flag` Add flag to selected item(s) ##### `--force` Perform action without confirmation. ##### `--[no-]menu` Use --no-menu to skip the interactive menu. Use with --query to filter items and act on results automatically. Test with `--output doing` to preview matches. ##### `-r`|`--remove` Reverse -c, -f, --flag, and -t (remove instead of adding) * * * * * * ### `$ doing` `show` `[SECTION|@TAGS]` *List all entries* > The argument can be a section name, @tag(s) or both. > "pick" or "choose" as an argument will offer a section menu. #### Options ##### `-a` | `--age` AGE Age (oldest|newest) *Default Value:* `newest` ##### `--after` DATE_STRING View entries newer than date ##### `-b` | `--bool` BOOLEAN Tag boolean (AND,OR,NOT) *Default Value:* `OR` *Must Match:* `(?i-mx:and|all|any|or|not|none)` ##### `--before` DATE_STRING View entries older than date ##### `-c` | `--count` MAX Max count to show *Default Value:* `0` ##### `-f` | `--from` DATE_OR_RANGE Date range to show, or a single day to filter date on. Date range argument should be quoted. Date specifications can be natural language. To specify a range, use "to" or "through": `doing show --from "monday to friday"` ##### `-o` | `--output` FORMAT Output to export format (csv|html|json|template|timeline) *Must Match:* `(?i-mx:^(?:template|html|csv|json|timeline)$)` ##### `-s` | `--sort` ORDER Sort order (asc/desc) *Default Value:* `ASC` *Must Match:* `(?i-mx:^[ad].*)` ##### `--search` QUERY Search filter, surround with slashes for regex (/query/) ##### `--tag` TAG Tag filter, combine multiple tags with a comma. Added for compatibility with other commands. ##### `--tag_order` DIRECTION Tag sort direction (asc|desc) *Must Match:* `(?i-mx:^(?:a(?:sc)?|d(?:esc)?)$)` ##### `--tag_sort` KEY Sort tags by (name|time) *Default Value:* `name` *Must Match:* `(?i-mx:^(?:name|time))` ##### `--only_timed` Only show items with recorded time intervals ##### `-t`|`--[no-]times` Show time intervals on @done tasks ##### `--totals` Show intervals with totals at the end of output * * * * * * ### `$ doing` `since` `DATE_STRING` *List entries since a date* > Date argument can be natural language and are always interpreted as being in the past. "thursday" would be interpreted as "last thursday," > and "2d" would be interpreted as "two days ago." #### Options ##### `-o` | `--output` FORMAT Output to export format (csv|html|json|template|timeline) *Must Match:* `(?i-mx:^(?:template|html|csv|json|timeline)$)` ##### `-s` | `--section` NAME Section *Default Value:* `All` ##### `--tag_sort` KEY Sort tags by (name|time) *Default Value:* `name` *Must Match:* `(?i-mx:^(?:name|time)$)` ##### `-t`|`--[no-]times` Show time intervals on @done tasks ##### `--totals` Show time totals at the end of output * * * * * * ### `$ doing` `tag` `TAG...` *Add tag(s) to last entry* #### Options ##### `--bool` BOOLEAN Boolean (AND|OR|NOT) with which to combine multiple tag filters *Default Value:* `AND` *Must Match:* `(?i-mx:and|all|any|or|not|none)` ##### `-c` | `--count` COUNT How many recent entries to tag (0 for all) *Default Value:* `1` ##### `-s` | `--section` SECTION_NAME Section *Default Value:* `All` ##### `--search` QUERY Tag entries matching search filter, surround with slashes for regex (e.g. "/query.*/") ##### `--tag` TAG Tag the last X entries containing TAG. Separate multiple tags with comma (--tag=tag1,tag2), combine with --bool ##### `-a`|`--autotag` Autotag entries based on autotag configuration in ~/.doingrc ##### `-d`|`--date` Include current date/time with tag ##### `--force` Don't ask permission to tag all entries when count is 0 ##### `-r`|`--remove` Remove given tag(s) ##### `-u`|`--unfinished` Tag last entry (or entries) not marked @done * * * * * * ### `$ doing` `template` `TYPE` *Output HTML and CSS templates for customization* > Templates are printed to STDOUT for piping to a file. > Save them and use them in the configuration file under html_template. > > Example `doing template HAML > ~/styles/my_doing.haml` * * * * * * ### `$ doing` `today` `` *List entries from today* #### Options ##### `--after` TIME_STRING View entries after specified time (e.g. 8am, 12:30pm, 15:00) ##### `--before` TIME_STRING View entries before specified time (e.g. 8am, 12:30pm, 15:00) ##### `-o` | `--output` FORMAT Output to export format (csv|html|json|template|timeline) *Must Match:* `(?i-mx:^(?:template|html|csv|json|timeline)$)` ##### `-s` | `--section` NAME Specify a section *Default Value:* `All` ##### `--tag_sort` KEY Sort tags by (name|time) *Default Value:* `name` *Must Match:* `(?i-mx:^(?:name|time)$)` ##### `-t`|`--[no-]times` Show time intervals on @done tasks ##### `--totals` Show time totals at the end of output * * * * * * ### `$ doing` `undo` `` *Undo the last change to the doing_file* #### Options ##### `-f` | `--file` PATH Specify alternate doing file * * * * * * ### `$ doing` `view` `VIEW_NAME` *Display a user-created view* > Command line options override view configuration #### Options ##### `--after` DATE_STRING View entries newer than date ##### `-b` | `--bool` BOOLEAN Tag boolean (AND,OR,NOT) *Default Value:* `OR` *Must Match:* `(?i-mx:and|all|any|or|not|none)` ##### `--before` DATE_STRING View entries older than date ##### `-c` | `--count` COUNT Count to display *Must Match:* `(?-mix:^\d+$)` ##### `-o` | `--output` FORMAT Output to export format (csv|html|json|template|timeline) *Must Match:* `(?i-mx:^(?:template|html|csv|json|timeline)$)` ##### `-s` | `--section` NAME Section ##### `--search` QUERY Search filter, surround with slashes for regex (/query/) ##### `--tag` TAG Tag filter, combine multiple tags with a comma. ##### `--tag_order` DIRECTION Tag sort direction (asc|desc) *Must Match:* `(?i-mx:^(?:a(?:sc)?|d(?:esc)?)$)` ##### `--tag_sort` KEY Sort tags by (name|time) *Must Match:* `(?i-mx:^(?:name|time)$)` ##### `--[no-]color` Include colors in output ##### `--only_timed` Only show items with recorded time intervals (override view settings) ##### `-t`|`--[no-]times` Show time intervals on @done tasks ##### `--totals` Show intervals with totals at the end of output * * * * * * ### `$ doing` `views` `` *List available custom views* #### Options ##### `-c`|`--[no-]column` List in single column * * * * * * ### `$ doing` `yesterday` `` *List entries from yesterday* #### Options ##### `--after` TIME_STRING View entries after specified time (e.g. 8am, 12:30pm, 15:00) ##### `--before` TIME_STRING View entries before specified time (e.g. 8am, 12:30pm, 15:00) ##### `-o` | `--output` FORMAT Output to export format (csv|html|json|template|timeline) *Must Match:* `(?i-mx:^(?:template|html|csv|json|timeline)$)` ##### `-s` | `--section` NAME Specify a section *Default Value:* `All` ##### `--tag_order` DIRECTION Tag sort direction (asc|desc) *Must Match:* `(?i-mx:^(?:a(?:sc)?|d(?:esc)?)$)` ##### `--tag_sort` KEY Sort tags by (name|time) *Default Value:* `name` *Must Match:* `(?i-mx:^(?:name|time)$)` ##### `-t`|`--[no-]times` Show time intervals on @done tasks ##### `--totals` Show time totals at the end of output * * * * * * #### [Default Command] recent Documentation generated 2021-10-15 05:03