Skip to content

Latest commit

 

History

History
1181 lines (603 loc) · 20.4 KB

COMMANDS.md

File metadata and controls

1181 lines (603 loc) · 20.4 KB

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