doing 2.1.26 → 2.1.30

Sign up to get free protection for your applications and to get access to all the features.
Files changed (156) hide show
  1. checksums.yaml +4 -4
  2. data/.yardoc/checksums +15 -20
  3. data/.yardoc/object_types +0 -0
  4. data/.yardoc/objects/root.dat +0 -0
  5. data/CHANGELOG.md +52 -0
  6. data/Dockerfile +5 -5
  7. data/Dockerfile-2.6 +5 -5
  8. data/Dockerfile-2.7 +5 -4
  9. data/Dockerfile-3.0 +5 -4
  10. data/Gemfile.lock +2 -1
  11. data/README.md +1 -1
  12. data/Rakefile +2 -3
  13. data/bin/commands/add_section.rb +2 -0
  14. data/bin/commands/again.rb +23 -65
  15. data/bin/commands/archive.rb +20 -61
  16. data/bin/commands/cancel.rb +27 -69
  17. data/bin/commands/changes.rb +53 -12
  18. data/bin/commands/colors.rb +4 -2
  19. data/bin/commands/commands.rb +4 -2
  20. data/bin/commands/commands_accepting.rb +62 -11
  21. data/bin/commands/completion.rb +10 -7
  22. data/bin/commands/config.rb +8 -8
  23. data/bin/commands/done.rb +3 -17
  24. data/bin/commands/finish.rb +7 -30
  25. data/bin/commands/flag.rb +15 -51
  26. data/bin/commands/grep.rb +12 -28
  27. data/bin/commands/import.rb +3 -33
  28. data/bin/commands/last.rb +3 -36
  29. data/bin/commands/meanwhile.rb +3 -13
  30. data/bin/commands/note.rb +13 -52
  31. data/bin/commands/now.rb +15 -21
  32. data/bin/commands/on.rb +3 -4
  33. data/bin/commands/open.rb +3 -3
  34. data/bin/commands/recent.rb +3 -4
  35. data/bin/commands/redo.rb +6 -2
  36. data/bin/commands/reset.rb +19 -52
  37. data/bin/commands/rotate.rb +5 -36
  38. data/bin/commands/select.rb +23 -41
  39. data/bin/commands/show.rb +28 -74
  40. data/bin/commands/since.rb +3 -4
  41. data/bin/commands/tag.rb +4 -34
  42. data/bin/commands/tags.rb +5 -32
  43. data/bin/commands/today.rb +3 -4
  44. data/bin/commands/view.rb +36 -73
  45. data/bin/commands/yesterday.rb +4 -5
  46. data/bin/doing +150 -13
  47. data/docs/doc/Array.html +3 -502
  48. data/docs/doc/BooleanTermParser/Clause.html +1 -1
  49. data/docs/doc/BooleanTermParser/Operator.html +1 -1
  50. data/docs/doc/BooleanTermParser/Query.html +1 -1
  51. data/docs/doc/BooleanTermParser/QueryParser.html +1 -1
  52. data/docs/doc/BooleanTermParser/QueryTransformer.html +1 -1
  53. data/docs/doc/BooleanTermParser.html +1 -1
  54. data/docs/doc/Doing/Color.html +62 -56
  55. data/docs/doc/Doing/Completion.html +1 -1
  56. data/docs/doc/Doing/Configuration.html +35 -1
  57. data/docs/doc/Doing/Errors/DoingNoTraceError.html +1 -1
  58. data/docs/doc/Doing/Errors/DoingRuntimeError.html +1 -1
  59. data/docs/doc/Doing/Errors/DoingStandardError.html +1 -1
  60. data/docs/doc/Doing/Errors/EmptyInput.html +1 -1
  61. data/docs/doc/Doing/Errors/NoResults.html +1 -1
  62. data/docs/doc/Doing/Errors/PluginException.html +1 -1
  63. data/docs/doc/Doing/Errors/UserCancelled.html +1 -1
  64. data/docs/doc/Doing/Errors/WrongCommand.html +1 -1
  65. data/docs/doc/Doing/Errors.html +1 -1
  66. data/docs/doc/Doing/Hooks.html +1 -1
  67. data/docs/doc/Doing/Item.html +1 -1
  68. data/docs/doc/Doing/Items.html +2 -2
  69. data/docs/doc/Doing/LogAdapter.html +1 -1
  70. data/docs/doc/Doing/Note.html +2 -2
  71. data/docs/doc/Doing/Pager.html +1 -1
  72. data/docs/doc/Doing/Plugins.html +1 -1
  73. data/docs/doc/Doing/Prompt.html +1 -1
  74. data/docs/doc/Doing/Section.html +1 -1
  75. data/docs/doc/Doing/TemplateString.html +2 -2
  76. data/docs/doc/Doing/Types.html +41 -1
  77. data/docs/doc/Doing/Util/Backup.html +1 -1
  78. data/docs/doc/Doing/Util.html +1 -1
  79. data/docs/doc/Doing/WWID.html +10 -10
  80. data/docs/doc/Doing.html +3 -3
  81. data/docs/doc/FalseClass.html +35 -1
  82. data/docs/doc/GLI/Commands/Help.html +1 -1
  83. data/docs/doc/GLI/Commands/MarkdownDocumentListener.html +1 -1
  84. data/docs/doc/GLI/Commands.html +1 -1
  85. data/docs/doc/GLI.html +1 -1
  86. data/docs/doc/Hash.html +1 -1
  87. data/docs/doc/Object.html +1 -1
  88. data/docs/doc/PhraseParser/Operator.html +1 -1
  89. data/docs/doc/PhraseParser/PhraseClause.html +1 -1
  90. data/docs/doc/PhraseParser/Query.html +1 -1
  91. data/docs/doc/PhraseParser/QueryParser.html +1 -1
  92. data/docs/doc/PhraseParser/QueryTransformer.html +1 -1
  93. data/docs/doc/PhraseParser/TermClause.html +1 -1
  94. data/docs/doc/PhraseParser.html +1 -1
  95. data/docs/doc/Status.html +1 -1
  96. data/docs/doc/String.html +287 -3155
  97. data/docs/doc/Symbol.html +40 -6
  98. data/docs/doc/Time.html +1 -1
  99. data/docs/doc/TrueClass.html +35 -1
  100. data/docs/doc/_index.html +5 -10
  101. data/docs/doc/class_list.html +1 -1
  102. data/docs/doc/file.README.html +2 -2
  103. data/docs/doc/index.html +2 -2
  104. data/docs/doc/method_list.html +278 -678
  105. data/docs/doc/top-level-namespace.html +2 -2
  106. data/doing.gemspec +1 -0
  107. data/doing.rdoc +297 -206
  108. data/lib/completion/_doing.zsh +32 -32
  109. data/lib/completion/doing.bash +30 -30
  110. data/lib/completion/doing.fish +87 -77
  111. data/lib/doing/array/array.rb +4 -0
  112. data/lib/doing/array/nested_hash.rb +17 -0
  113. data/lib/doing/{array.rb → array/tags.rb} +7 -25
  114. data/lib/doing/changelog/change.rb +26 -11
  115. data/lib/doing/changelog/changes.rb +37 -8
  116. data/lib/doing/changelog/version.rb +11 -3
  117. data/lib/doing/{array_chronify.rb → chronify/array.rb} +0 -0
  118. data/lib/doing/chronify/chronify.rb +5 -0
  119. data/lib/doing/{numeric_chronify.rb → chronify/numeric.rb} +0 -0
  120. data/lib/doing/{string_chronify.rb → chronify/string.rb} +0 -0
  121. data/lib/doing/colors.rb +115 -54
  122. data/lib/doing/completion/zsh_completion.rb +5 -0
  123. data/lib/doing/configuration.rb +9 -5
  124. data/lib/doing/good.rb +8 -0
  125. data/lib/doing/help_monkey_patch.rb +6 -5
  126. data/lib/doing/item.rb +5 -5
  127. data/lib/doing/items.rb +2 -2
  128. data/lib/doing/log_adapter.rb +35 -2
  129. data/lib/doing/normalize.rb +188 -0
  130. data/lib/doing/plugins/export/dayone_export.rb +1 -1
  131. data/lib/doing/plugins/export/html_export.rb +1 -1
  132. data/lib/doing/plugins/export/json_export.rb +1 -1
  133. data/lib/doing/plugins/export/markdown_export.rb +1 -1
  134. data/lib/doing/plugins/export/template_export.rb +3 -1
  135. data/lib/doing/prompt.rb +1 -3
  136. data/lib/doing/section.rb +1 -1
  137. data/lib/doing/string/highlight.rb +95 -0
  138. data/lib/doing/string/query.rb +129 -0
  139. data/lib/doing/string/string.rb +12 -0
  140. data/lib/doing/string/tags.rb +164 -0
  141. data/lib/doing/string/transform.rb +168 -0
  142. data/lib/doing/string/truncate.rb +75 -0
  143. data/lib/doing/string/url.rb +82 -0
  144. data/lib/doing/template_string.rb +0 -22
  145. data/lib/doing/types.rb +8 -0
  146. data/lib/doing/util.rb +13 -9
  147. data/lib/doing/version.rb +1 -1
  148. data/lib/doing/wwid.rb +54 -36
  149. data/lib/doing.rb +5 -6
  150. data/lib/examples/plugins/wiki_export/wiki_export.rb +1 -1
  151. data/lib/helpers/threaded_tests.rb +15 -2
  152. data/scripts/deploy.rb +107 -0
  153. data/scripts/runtests.sh +4 -0
  154. metadata +39 -8
  155. data/lib/doing/string.rb +0 -765
  156. data/lib/doing/symbol.rb +0 -28
data/doing.rdoc CHANGED
@@ -5,7 +5,7 @@ record of what you've been doing, complete with tag-based time tracking. The
5
5
  command line tool allows you to add entries, annotate with tags and notes, and
6
6
  view your entries with myriad options, with a focus on a "natural" language syntax.
7
7
 
8
- v2.1.26
8
+ v2.1.30
9
9
 
10
10
  === Global Options
11
11
  === --config_file arg
@@ -90,11 +90,12 @@ Add a new section to the "doing" file
90
90
  ==== Command: <tt>again|resume </tt>
91
91
  Repeat last entry as new entry
92
92
 
93
- This command is designed to allow multiple time intervals to be created for an entry by duplicating it with a new start (and end, eventually) time
93
+ This command is designed to allow multiple time intervals to be created
94
+ for an entry by duplicating it with a new start (and end, eventually) time
94
95
  ===== Options
95
96
  ===== -b|--back|--started DATE_STRING
96
97
 
97
- Backdate start date by interval or set to time [4pm|20m|2h|"yesterday noon"]
98
+ Backdate start date for new entry to date string [4pm|20m|2h|yesterday noon]
98
99
 
99
100
  [Default Value] None
100
101
 
@@ -103,7 +104,7 @@ Backdate start date by interval or set to time [4pm|20m|2h|"yesterday noon"]
103
104
 
104
105
  Boolean used to combine multiple tags. Use PATTERN to parse + and - as booleans
105
106
 
106
- [Default Value] PATTERN
107
+ [Default Value] pattern
107
108
  [Must Match] (?i-mx:^(?:and|all|any|or|not|none|p(?:at(?:tern)?)?)$)
108
109
 
109
110
 
@@ -112,7 +113,7 @@ Boolean used to combine multiple tags. Use PATTERN to parse + and - as booleans
112
113
  Case sensitivity for search string matching [(c)ase-sensitive, (i)gnore, (s)mart]
113
114
 
114
115
  [Default Value] smart
115
- [Must Match] (?-mix:^[csi])
116
+ [Must Match] (?i-mx:^[cis].*?$)
116
117
 
117
118
 
118
119
  ===== --in SECTION_NAME
@@ -124,7 +125,7 @@ Add new entry to section (default: same section as repeated entry)
124
125
 
125
126
  ===== -n|--note TEXT
126
127
 
127
- Add a note
128
+ Include a note
128
129
 
129
130
  [Default Value] None
130
131
 
@@ -138,34 +139,40 @@ Get last entry from a specific section
138
139
 
139
140
  ===== --search QUERY
140
141
 
141
- Repeat last entry matching search. Surround with
142
- slashes for regex (e.g. "/query/"), start with a single quote for exact match ("'query").
142
+ Filter entries using a search query, surround with slashes for regex (e.g. "/query.*/"),
143
+ start with single quote for exact match ("'query")
143
144
 
144
145
  [Default Value] None
145
146
 
146
147
 
147
148
  ===== --tag TAG
148
149
 
149
- Repeat last entry matching tags. Combine multiple tags with a comma. Wildcards allowed (*, ?)
150
+ Filter entries by tag. Combine multiple tags with a comma. Wildcards allowed (*, ?)
150
151
 
151
152
  [Default Value] None
152
153
 
153
154
 
154
155
  ===== --val QUERY
155
156
 
156
- Perform a tag value query ("@done > two hours ago" or "@progress < 50"). May be used multiple times, combined with --bool
157
+ Perform a tag value query ("@done > two hours ago" or "@progress < 50").
158
+ May be used multiple times, combined with --bool
157
159
 
158
160
  [Default Value] None
159
161
  [Must Match] (?-mix:^(?:!)?@?(?:\S+) +(?:!?[<>=][=*]?|[$*^]=) +(?:.*?)$)
160
162
 
161
163
 
164
+ ===== -X|--noauto
165
+ Exclude auto tags and default tags
166
+
167
+
168
+
162
169
  ===== --ask
163
170
  Prompt for note via multi-line input
164
171
 
165
172
 
166
173
 
167
174
  ===== -e|--editor
168
- Edit duplicated entry with /opt/homebrew/bin/vim before adding
175
+ Edit entry with vim
169
176
 
170
177
 
171
178
 
@@ -175,7 +182,7 @@ Select item to resume from a menu of matching entries
175
182
 
176
183
 
177
184
  ===== --not
178
- Resume items that *don't* match search/tag filters
185
+ Repeat items that *don't* match search/tag filters
179
186
 
180
187
 
181
188
 
@@ -192,19 +199,25 @@ or start with an "@" to move entries matching a tag.
192
199
 
193
200
  Default with no argument moves items from the "Currently" section to Archive.
194
201
  ===== Options
202
+ ===== --after DATE_STRING
203
+
204
+ Archive entries newer than date (natural language).
205
+
206
+ [Default Value] None
207
+
208
+
195
209
  ===== --before DATE_STRING
196
210
 
197
- Archive entries older than date
198
- (Flexible date format, e.g. 1/27/2021, 2020-07-19, or Monday 3pm)
211
+ Archive entries older than date (natural language).
199
212
 
200
213
  [Default Value] None
201
214
 
202
215
 
203
216
  ===== --bool BOOLEAN
204
217
 
205
- Tag boolean (AND|OR|NOT). Use PATTERN to parse + and - as booleans
218
+ Boolean used to combine multiple tags. Use PATTERN to parse + and - as booleans
206
219
 
207
- [Default Value] PATTERN
220
+ [Default Value] pattern
208
221
  [Must Match] (?i-mx:^(?:and|all|any|or|not|none|p(?:at(?:tern)?)?)$)
209
222
 
210
223
 
@@ -213,7 +226,14 @@ Tag boolean (AND|OR|NOT). Use PATTERN to parse + and - as booleans
213
226
  Case sensitivity for search string matching [(c)ase-sensitive, (i)gnore, (s)mart]
214
227
 
215
228
  [Default Value] smart
216
- [Must Match] (?-mix:^[csi])
229
+ [Must Match] (?i-mx:^[cis].*?$)
230
+
231
+
232
+ ===== --from DATE_OR_RANGE
233
+
234
+ Date range (natural language) to archive: `doing archive --from "1/1/21 to 12/31/21"`.
235
+
236
+ [Default Value] None
217
237
 
218
238
 
219
239
  ===== -k|--keep X
@@ -226,7 +246,8 @@ How many items to keep (ignored if archiving by tag or search)
226
246
 
227
247
  ===== --search QUERY
228
248
 
229
- Search filter
249
+ Filter entries using a search query, surround with slashes for regex (e.g. "/query.*/"),
250
+ start with single quote for exact match ("'query")
230
251
 
231
252
  [Default Value] None
232
253
 
@@ -240,14 +261,15 @@ Move entries to
240
261
 
241
262
  ===== --tag TAG
242
263
 
243
- Tag filter, combine multiple tags with a comma. Wildcards allowed (*, ?). Added for compatibility with other commands
264
+ Filter entries by tag. Combine multiple tags with a comma. Wildcards allowed (*, ?)
244
265
 
245
266
  [Default Value] None
246
267
 
247
268
 
248
269
  ===== --val QUERY
249
270
 
250
- Perform a tag value query ("@done > two hours ago" or "@progress < 50"). May be used multiple times, combined with --bool
271
+ Perform a tag value query ("@done > two hours ago" or "@progress < 50").
272
+ May be used multiple times, combined with --bool
251
273
 
252
274
  [Default Value] None
253
275
  [Must Match] (?-mix:^(?:!)?@?(?:\S+) +(?:!?[<>=][=*]?|[$*^]=) +(?:.*?)$)
@@ -259,7 +281,7 @@ Label moved items with @from(SECTION_NAME)
259
281
 
260
282
 
261
283
  ===== --not
262
- Show items that *don't* match search string
284
+ Archive items that *don't* match search/tag filters
263
285
 
264
286
 
265
287
 
@@ -331,13 +353,14 @@ Autotag last entry (or entries) not marked @done
331
353
  ==== Command: <tt>cancel COUNT</tt>
332
354
  End last X entries with no time tracked
333
355
 
334
- Adds @done tag without datestamp so no elapsed time is recorded. Alias for `doing finish --no-date`
356
+ Adds @done tag without datestamp so no elapsed time is recorded.
357
+ Alias for `doing finish --no-date`
335
358
  ===== Options
336
359
  ===== --bool BOOLEAN
337
360
 
338
- Boolean (AND|OR|NOT) with which to combine multiple tag filters. Use PATTERN to parse + and - as booleans
361
+ Boolean used to combine multiple tags. Use PATTERN to parse + and - as booleans
339
362
 
340
- [Default Value] PATTERN
363
+ [Default Value] pattern
341
364
  [Must Match] (?i-mx:^(?:and|all|any|or|not|none|p(?:at(?:tern)?)?)$)
342
365
 
343
366
 
@@ -346,7 +369,7 @@ Boolean (AND|OR|NOT) with which to combine multiple tag filters. Use PATTERN to
346
369
  Case sensitivity for search string matching [(c)ase-sensitive, (i)gnore, (s)mart]
347
370
 
348
371
  [Default Value] smart
349
- [Must Match] (?-mix:^[csi])
372
+ [Must Match] (?i-mx:^[cis].*?$)
350
373
 
351
374
 
352
375
  ===== -s|--section NAME
@@ -358,21 +381,23 @@ Section
358
381
 
359
382
  ===== --search QUERY
360
383
 
361
- Cancel the last X entries matching search filter, surround with slashes for regex (e.g. "/query.*/"), start with single quote for exact match ("'query")
384
+ Filter entries using a search query, surround with slashes for regex (e.g. "/query.*/"),
385
+ start with single quote for exact match ("'query")
362
386
 
363
387
  [Default Value] None
364
388
 
365
389
 
366
390
  ===== --tag TAG
367
391
 
368
- Cancel the last X entries containing TAG. Separate multiple tags with comma (--tag=tag1,tag2). Wildcards allowed (*, ?)
392
+ Filter entries by tag. Combine multiple tags with a comma. Wildcards allowed (*, ?)
369
393
 
370
394
  [Default Value] None
371
395
 
372
396
 
373
397
  ===== --val QUERY
374
398
 
375
- Perform a tag value query ("@done > two hours ago" or "@progress < 50"). May be used multiple times, combined with --bool
399
+ Perform a tag value query ("@done > two hours ago" or "@progress < 50").
400
+ May be used multiple times, combined with --bool
376
401
 
377
402
  [Default Value] None
378
403
  [Must Match] (?-mix:^(?:!)?@?(?:\S+) +(?:!?[<>=][=*]?|[$*^]=) +(?:.*?)$)
@@ -389,7 +414,7 @@ Select item(s) to cancel from a menu of matching entries
389
414
 
390
415
 
391
416
  ===== --not
392
- Finish items that *don't* match search/tag filters
417
+ Cancel items that *don't* match search/tag filters
393
418
 
394
419
 
395
420
 
@@ -415,10 +440,10 @@ Display a formatted list of changes in recent versions.
415
440
 
416
441
  Look up a specific version. Specify versions as "MAJ.MIN.PATCH", MIN
417
442
  and PATCH are optional. Use > or < to see all changes since or prior
418
- to a version.
443
+ to a version. Wildcards (*?) accepted unless using < or >.
419
444
 
420
445
  [Default Value] None
421
- [Must Match] (?-mix:^(?:(?:(?:[<>=]|p(?:rior)|b(?:efore)|o(?:lder)|s(?:ince)|a(?:fter)|n(?:ewer))? *[\d.*?]+ *)+|(?:[\d.]+ *-+ *[\d.]+))$)
446
+ [Must Match] (?-mix:^(?:(?:(?:[<>=]+|p(?:rior)|b(?:efore)|o(?:lder)|s(?:ince)|a(?:fter)|n(?:ewer))? *[0-9.*?]+ *)+|(?:[\d.]+ *(?:-|to)+ *[0-9.]+))$)
422
447
 
423
448
 
424
449
  ===== -s|--search arg
@@ -429,11 +454,39 @@ Show changelogs matching search terms (uses pattern-based searching).
429
454
  [Default Value] None
430
455
 
431
456
 
457
+ ===== --sort ORDER
458
+
459
+ Sort order (asc/desc)
460
+
461
+ [Default Value] desc
462
+ [Must Match] (?i-mx:^(?:a(?:sc)?|d(?:esc)?)$)
463
+
464
+
465
+ ===== -C|--changes
466
+ Only output changes, no version numbers, headers, or dates
467
+
468
+
469
+
432
470
  ===== -a|--all
433
471
  Display all versions
434
472
 
435
473
 
436
474
 
475
+ ===== -i|--interactive
476
+ Open changelog in interactive viewer
477
+
478
+
479
+
480
+ ===== -m|--md|--markdown
481
+ Output raw Markdown
482
+
483
+
484
+
485
+ ===== --render
486
+ Force rendered output
487
+
488
+
489
+
437
490
  ==== Command: <tt>colors </tt>
438
491
  List available color variables for configuration templates and views
439
492
 
@@ -455,8 +508,8 @@ Disable Doing commands
455
508
  ==== Command: <tt>completion </tt>
456
509
  Generate shell completion scripts
457
510
 
458
- Generates the necessary scripts to add command line completion to various shells, so typing 'doing' and hitting
459
- tab will offer completions of subcommands and their options.
511
+ Generates the necessary scripts to add command line completion to various shells,
512
+ so typing 'doing' and hitting tab will offer completions of subcommands and their options.
460
513
  ===== Options
461
514
  ===== -f|--file PATH
462
515
 
@@ -582,7 +635,7 @@ Set finish date to specific date/time (natural langauge parsed, e.g. --at=1:30pm
582
635
 
583
636
  ===== -b|--back|--started DATE_STRING
584
637
 
585
- Backdate start date by interval or set to time [4pm|20m|2h|"yesterday noon"]
638
+ Backdate start date for new entry to date string [4pm|20m|2h|yesterday noon]
586
639
 
587
640
  [Default Value] None
588
641
 
@@ -619,6 +672,11 @@ Set completion date to start date plus interval (XX[mhd] or HH:MM).
619
672
  [Default Value] None
620
673
 
621
674
 
675
+ ===== -X|--noauto
676
+ Exclude auto tags and default tags
677
+
678
+
679
+
622
680
  ===== -a|--archive
623
681
  Immediately archive the entry
624
682
 
@@ -635,7 +693,7 @@ Include date
635
693
 
636
694
 
637
695
  ===== -e|--editor
638
- Edit entry with /opt/homebrew/bin/vim (with no arguments, edits the last entry)
696
+ Edit entry with vim
639
697
 
640
698
 
641
699
 
@@ -670,9 +728,9 @@ Backdate completed date to date string [4pm|20m|2h|yesterday noon]
670
728
 
671
729
  ===== --bool BOOLEAN
672
730
 
673
- Boolean (AND|OR|NOT) with which to combine multiple tag filters. Use PATTERN to parse + and - as booleans
731
+ Boolean used to combine multiple tags. Use PATTERN to parse + and - as booleans
674
732
 
675
- [Default Value] PATTERN
733
+ [Default Value] pattern
676
734
  [Must Match] (?i-mx:^(?:and|all|any|or|not|none|p(?:at(?:tern)?)?)$)
677
735
 
678
736
 
@@ -681,7 +739,7 @@ Boolean (AND|OR|NOT) with which to combine multiple tag filters. Use PATTERN to
681
739
  Case sensitivity for search string matching [(c)ase-sensitive, (i)gnore, (s)mart]
682
740
 
683
741
  [Default Value] smart
684
- [Must Match] (?-mix:^[csi])
742
+ [Must Match] (?i-mx:^[cis].*?$)
685
743
 
686
744
 
687
745
  ===== -s|--section NAME
@@ -693,7 +751,8 @@ Section
693
751
 
694
752
  ===== --search QUERY
695
753
 
696
- Finish the last X entries matching search filter, surround with slashes for regex (e.g. "/query.*/"), start with single quote for exact match ("'query")
754
+ Filter entries using a search query, surround with slashes for regex (e.g. "/query.*/"),
755
+ start with single quote for exact match ("'query")
697
756
 
698
757
  [Default Value] None
699
758
 
@@ -707,15 +766,15 @@ Set the completed date to the start date plus XX[hmd]
707
766
 
708
767
  ===== --tag TAG
709
768
 
710
- Finish the last X entries containing TAG.
711
- Separate multiple tags with comma (--tag=tag1,tag2), combine with --bool. Wildcards allowed (*, ?).
769
+ Filter entries by tag. Combine multiple tags with a comma. Wildcards allowed (*, ?)
712
770
 
713
771
  [Default Value] None
714
772
 
715
773
 
716
774
  ===== --val QUERY
717
775
 
718
- Perform a tag value query ("@done > two hours ago" or "@progress < 50"). May be used multiple times, combined with --bool
776
+ Perform a tag value query ("@done > two hours ago" or "@progress < 50").
777
+ May be used multiple times, combined with --bool
719
778
 
720
779
  [Default Value] None
721
780
  [Must Match] (?-mix:^(?:!)?@?(?:\S+) +(?:!?[<>=][=*]?|[$*^]=) +(?:.*?)$)
@@ -749,7 +808,7 @@ Finish items that *don't* match search/tag filters
749
808
 
750
809
 
751
810
  ===== -r|--remove
752
- Remove done tag
811
+ Remove @done tag
753
812
 
754
813
 
755
814
 
@@ -758,6 +817,11 @@ Finish last entry (or entries) not already marked @done
758
817
 
759
818
 
760
819
 
820
+ ===== --update
821
+ Overwrite existing @done tag with new date
822
+
823
+
824
+
761
825
  ===== -x|--exact
762
826
  Force exact search string matching (case sensitive)
763
827
 
@@ -772,23 +836,25 @@ To search with regular expressions, single quote the string and surround with sl
772
836
  ===== Options
773
837
  ===== --after DATE_STRING
774
838
 
775
- Search entries newer than date. If this is only a time (8am, 1:30pm, 15:00), all dates will be included, but entries will be filtered by time of day
839
+ Search entries newer than date (natural language). If this is only a time (8am, 1:30pm, 15:00), all
840
+ dates will be included, but entries will be filtered by time of day
776
841
 
777
842
  [Default Value] None
778
843
 
779
844
 
780
845
  ===== --before DATE_STRING
781
846
 
782
- Search entries older than date. If this is only a time (8am, 1:30pm, 15:00), all dates will be included, but entries will be filtered by time of day
847
+ Search entries older than date (natural language). If this is only a time (8am, 1:30pm, 15:00), all
848
+ dates will be included, but entries will be filtered by time of day
783
849
 
784
850
  [Default Value] None
785
851
 
786
852
 
787
- ===== --bool arg
853
+ ===== --bool BOOLEAN
788
854
 
789
855
  Combine multiple tags or value queries using AND, OR, or NOT
790
856
 
791
- [Default Value] AND
857
+ [Default Value] pattern
792
858
  [Must Match] (?i-mx:^(?:and|all|any|or|not|none|p(?:at(?:tern)?)?)$)
793
859
 
794
860
 
@@ -797,7 +863,7 @@ Combine multiple tags or value queries using AND, OR, or NOT
797
863
  Case sensitivity for search string matching [(c)ase-sensitive, (i)gnore, (s)mart]
798
864
 
799
865
  [Default Value] smart
800
- [Must Match] (?-mix:^[csi])
866
+ [Must Match] (?i-mx:^[cis].*?$)
801
867
 
802
868
 
803
869
  ===== --config_template TEMPLATE_KEY
@@ -809,12 +875,11 @@ Output using a template from configuration
809
875
 
810
876
  ===== --from DATE_OR_RANGE
811
877
 
812
- Date range to show, or a single day to filter date on.
813
- Date range argument should be quoted. Date specifications can be natural language.
814
- To specify a range, use "to" or "through": `doing search --from "monday 8am to friday 5pm"`.
878
+ Date range (natural language) to search, or a single day to filter on.
879
+ To specify a range, use "to": `doing grep --from "monday 8am to friday 5pm"`.
815
880
 
816
- If values are only time(s) (6am to noon) all dates will be included, but entries will be filtered
817
- by time of day.
881
+ If values are only time(s) (6am to noon) all dates will be included, but entries will be filtered
882
+ by time of day.
818
883
 
819
884
  [Default Value] None
820
885
 
@@ -838,7 +903,7 @@ Section
838
903
  Sort tags by (name|time)
839
904
 
840
905
  [Default Value] name
841
- [Must Match] (?i-mx:^(?:name|time)$)
906
+ [Must Match] (?i-mx:^(?:n(?:ame)?|t(?:ime)?)$)
842
907
 
843
908
 
844
909
  ===== --template TEMPLATE_STRING
@@ -867,7 +932,7 @@ Show elapsed time on entries without @done tag
867
932
 
868
933
 
869
934
  ===== -e|--editor
870
- Edit matching entries with /opt/homebrew/bin/vim
935
+ Edit matching entries with vim
871
936
 
872
937
 
873
938
 
@@ -923,14 +988,16 @@ Imports entries from other sources. Available plugins: calendar, capturething, d
923
988
  ===== Options
924
989
  ===== --after DATE_STRING
925
990
 
926
- Import entries newer than date
991
+ Import entries newer than date (natural language). If this is only a time (8am, 1:30pm, 15:00), all
992
+ dates will be included, but entries will be filtered by time of day
927
993
 
928
994
  [Default Value] None
929
995
 
930
996
 
931
997
  ===== --before DATE_STRING
932
998
 
933
- Import entries older than date
999
+ Import entries older than date (natural language). If this is only a time (8am, 1:30pm, 15:00), all
1000
+ dates will be included, but entries will be filtered by time of day
934
1001
 
935
1002
  [Default Value] None
936
1003
 
@@ -940,14 +1007,16 @@ Import entries older than date
940
1007
  Case sensitivity for search string matching [(c)ase-sensitive, (i)gnore, (s)mart]
941
1008
 
942
1009
  [Default Value] smart
943
- [Must Match] (?-mix:^[csi])
1010
+ [Must Match] (?i-mx:^[cis].*?$)
944
1011
 
945
1012
 
946
- ===== -f|--from DATE_OR_RANGE
1013
+ ===== --from DATE_OR_RANGE
947
1014
 
948
- Date range to import. Date range argument should be quoted. Date specifications can be natural language.
949
- To specify a range, use "to" or "through": `--from "monday to friday"` or `--from 10/1 to 10/31`.
950
- Has no effect unless the import plugin has implemented date range filtering.
1015
+ Date range (natural language) to import, or a single day to filter on.
1016
+ To specify a range, use "to": `doing import --from "monday 8am to friday 5pm"`.
1017
+
1018
+ If values are only time(s) (6am to noon) all dates will be included, but entries will be filtered
1019
+ by time of day.
951
1020
 
952
1021
  [Default Value] None
953
1022
 
@@ -968,7 +1037,8 @@ Target section
968
1037
 
969
1038
  ===== --search QUERY
970
1039
 
971
- Only import items matching search. Surround with slashes for regex (/query/), start with single quote for exact match ("'query")
1040
+ Filter entries using a search query, surround with slashes for regex (e.g. "/query.*/"),
1041
+ start with single quote for exact match ("'query")
972
1042
 
973
1043
  [Default Value] None
974
1044
 
@@ -1020,9 +1090,9 @@ allowing `doing last` to target historical entries.
1020
1090
  ===== Options
1021
1091
  ===== --bool BOOLEAN
1022
1092
 
1023
- Tag boolean (AND|OR|NOT). Use PATTERN to parse + and - as booleans
1093
+ Boolean used to combine multiple tags. Use PATTERN to parse + and - as booleans
1024
1094
 
1025
- [Default Value] PATTERN
1095
+ [Default Value] pattern
1026
1096
  [Must Match] (?i-mx:^(?:and|all|any|or|not|none|p(?:at(?:tern)?)?)$)
1027
1097
 
1028
1098
 
@@ -1031,7 +1101,7 @@ Tag boolean (AND|OR|NOT). Use PATTERN to parse + and - as booleans
1031
1101
  Case sensitivity for search string matching [(c)ase-sensitive, (i)gnore, (s)mart]
1032
1102
 
1033
1103
  [Default Value] smart
1034
- [Must Match] (?-mix:^[csi])
1104
+ [Must Match] (?i-mx:^[cis].*?$)
1035
1105
 
1036
1106
 
1037
1107
  ===== --config_template TEMPLATE_KEY
@@ -1050,14 +1120,15 @@ Specify a section
1050
1120
 
1051
1121
  ===== --search QUERY
1052
1122
 
1053
- Search filter, surround with slashes for regex (/query/), start with single quote for exact match ("'query")
1123
+ Filter entries using a search query, surround with slashes for regex (e.g. "/query.*/"),
1124
+ start with single quote for exact match ("'query")
1054
1125
 
1055
1126
  [Default Value] None
1056
1127
 
1057
1128
 
1058
1129
  ===== --tag TAG
1059
1130
 
1060
- Tag filter, combine multiple tags with a comma. Wildcards allowed (*, ?)
1131
+ Filter entries by tag. Combine multiple tags with a comma. Wildcards allowed (*, ?)
1061
1132
 
1062
1133
  [Default Value] None
1063
1134
 
@@ -1071,7 +1142,8 @@ Override output format with a template string containing %placeholders
1071
1142
 
1072
1143
  ===== --val QUERY
1073
1144
 
1074
- Perform a tag value query ("@done > two hours ago" or "@progress < 50"). May be used multiple times, combined with --bool
1145
+ Perform a tag value query ("@done > two hours ago" or "@progress < 50").
1146
+ May be used multiple times, combined with --bool
1075
1147
 
1076
1148
  [Default Value] None
1077
1149
  [Must Match] (?-mix:^(?:!)?@?(?:\S+) +(?:!?[<>=][=*]?|[$*^]=) +(?:.*?)$)
@@ -1088,7 +1160,7 @@ Show elapsed time if entry is not tagged @done
1088
1160
 
1089
1161
 
1090
1162
  ===== -e|--editor
1091
- Edit entry with /opt/homebrew/bin/vim
1163
+ Edit entry with vim
1092
1164
 
1093
1165
 
1094
1166
 
@@ -1098,7 +1170,7 @@ Highlight search matches in output. Only affects command line output
1098
1170
 
1099
1171
 
1100
1172
  ===== --not
1101
- Show items that *don't* match search string or tag filter
1173
+ Show items that *don't* match search/tag filters
1102
1174
 
1103
1175
 
1104
1176
 
@@ -1107,35 +1179,6 @@ Force exact search string matching (case sensitive)
1107
1179
 
1108
1180
 
1109
1181
 
1110
- ==== Command: <tt>later ENTRY</tt>
1111
- Add an item to the Later section
1112
-
1113
-
1114
- ===== Options
1115
- ===== -b|--back|--started DATE_STRING
1116
-
1117
- Backdate start time to date string [4pm|20m|2h|yesterday noon]
1118
-
1119
- [Default Value] None
1120
-
1121
-
1122
- ===== -n|--note TEXT
1123
-
1124
- Note
1125
-
1126
- [Default Value] None
1127
-
1128
-
1129
- ===== --ask
1130
- Prompt for note via multi-line input
1131
-
1132
-
1133
-
1134
- ===== -e|--editor
1135
- Edit entry with /opt/homebrew/bin/vim
1136
-
1137
-
1138
-
1139
1182
  ==== Command: <tt>mark|flag </tt>
1140
1183
  Mark last entry as flagged
1141
1184
 
@@ -1143,9 +1186,9 @@ Mark last entry as flagged
1143
1186
  ===== Options
1144
1187
  ===== --bool BOOLEAN
1145
1188
 
1146
- Boolean (AND|OR|NOT) with which to combine multiple tag filters. Use PATTERN to parse + and - as booleans
1189
+ Boolean used to combine multiple tags. Use PATTERN to parse + and - as booleans
1147
1190
 
1148
- [Default Value] PATTERN
1191
+ [Default Value] pattern
1149
1192
  [Must Match] (?i-mx:^(?:and|all|any|or|not|none|p(?:at(?:tern)?)?)$)
1150
1193
 
1151
1194
 
@@ -1162,7 +1205,7 @@ How many recent entries to tag (0 for all)
1162
1205
  Case sensitivity for search string matching [(c)ase-sensitive, (i)gnore, (s)mart]
1163
1206
 
1164
1207
  [Default Value] smart
1165
- [Must Match] (?-mix:^[csi])
1208
+ [Must Match] (?i-mx:^[cis].*?$)
1166
1209
 
1167
1210
 
1168
1211
  ===== -s|--section SECTION_NAME
@@ -1174,22 +1217,23 @@ Section
1174
1217
 
1175
1218
  ===== --search QUERY
1176
1219
 
1177
- Flag the last entry matching search filter, surround with slashes for regex (e.g. "/query.*/"), start with single quote for exact match ("'query")
1220
+ Filter entries using a search query, surround with slashes for regex (e.g. "/query.*/"),
1221
+ start with single quote for exact match ("'query")
1178
1222
 
1179
1223
  [Default Value] None
1180
1224
 
1181
1225
 
1182
1226
  ===== --tag TAG
1183
1227
 
1184
- Flag the last entry containing TAG.
1185
- Separate multiple tags with comma (--tag=tag1,tag2), combine with --bool. Wildcards allowed (*, ?).
1228
+ Filter entries by tag. Combine multiple tags with a comma. Wildcards allowed (*, ?)
1186
1229
 
1187
1230
  [Default Value] None
1188
1231
 
1189
1232
 
1190
1233
  ===== --val QUERY
1191
1234
 
1192
- Perform a tag value query ("@done > two hours ago" or "@progress < 50"). May be used multiple times, combined with --bool
1235
+ Perform a tag value query ("@done > two hours ago" or "@progress < 50").
1236
+ May be used multiple times, combined with --bool
1193
1237
 
1194
1238
  [Default Value] None
1195
1239
  [Must Match] (?-mix:^(?:!)?@?(?:\S+) +(?:!?[<>=][=*]?|[$*^]=) +(?:.*?)$)
@@ -1211,7 +1255,7 @@ Select item(s) to flag from a menu of matching entries
1211
1255
 
1212
1256
 
1213
1257
  ===== --not
1214
- Flag items that *don't* match search/tag/date filters
1258
+ Flag items that *don't* match search/tag filters
1215
1259
 
1216
1260
 
1217
1261
 
@@ -1247,7 +1291,7 @@ Backdate start date for new entry to date string [4pm|20m|2h|yesterday noon]
1247
1291
 
1248
1292
  ===== -n|--note TEXT
1249
1293
 
1250
- Note
1294
+ Include a note
1251
1295
 
1252
1296
  [Default Value] None
1253
1297
 
@@ -1259,6 +1303,11 @@ Section
1259
1303
  [Default Value] None
1260
1304
 
1261
1305
 
1306
+ ===== -X|--noauto
1307
+ Exclude auto tags and default tags
1308
+
1309
+
1310
+
1262
1311
  ===== -a|--archive
1263
1312
  Archive previous @meanwhile entry
1264
1313
 
@@ -1270,7 +1319,7 @@ Prompt for note via multi-line input
1270
1319
 
1271
1320
 
1272
1321
  ===== -e|--editor
1273
- Edit entry with /opt/homebrew/bin/vim
1322
+ Edit entry with vim
1274
1323
 
1275
1324
 
1276
1325
 
@@ -1285,9 +1334,9 @@ If -r is provided with no other arguments, the last note is removed.
1285
1334
  ===== Options
1286
1335
  ===== --bool BOOLEAN
1287
1336
 
1288
- Boolean (AND|OR|NOT) with which to combine multiple tag filters. Use PATTERN to parse + and - as booleans
1337
+ Boolean used to combine multiple tags. Use PATTERN to parse + and - as booleans
1289
1338
 
1290
- [Default Value] PATTERN
1339
+ [Default Value] pattern
1291
1340
  [Must Match] (?i-mx:^(?:and|all|any|or|not|none|p(?:at(?:tern)?)?)$)
1292
1341
 
1293
1342
 
@@ -1296,7 +1345,7 @@ Boolean (AND|OR|NOT) with which to combine multiple tag filters. Use PATTERN to
1296
1345
  Case sensitivity for search string matching [(c)ase-sensitive, (i)gnore, (s)mart]
1297
1346
 
1298
1347
  [Default Value] smart
1299
- [Must Match] (?-mix:^[csi])
1348
+ [Must Match] (?i-mx:^[cis].*?$)
1300
1349
 
1301
1350
 
1302
1351
  ===== -s|--section NAME
@@ -1308,21 +1357,23 @@ Section
1308
1357
 
1309
1358
  ===== --search QUERY
1310
1359
 
1311
- Add/remove note from last entry matching search filter, surround with slashes for regex (e.g. "/query.*/"), start with single quote for exact match ("'query")
1360
+ Filter entries using a search query, surround with slashes for regex (e.g. "/query.*/"),
1361
+ start with single quote for exact match ("'query")
1312
1362
 
1313
1363
  [Default Value] None
1314
1364
 
1315
1365
 
1316
1366
  ===== --tag TAG
1317
1367
 
1318
- Add/remove note from last entry matching tag. Wildcards allowed (*, ?)
1368
+ Filter entries by tag. Combine multiple tags with a comma. Wildcards allowed (*, ?)
1319
1369
 
1320
1370
  [Default Value] None
1321
1371
 
1322
1372
 
1323
1373
  ===== --val QUERY
1324
1374
 
1325
- Perform a tag value query ("@done > two hours ago" or "@progress < 50"). May be used multiple times, combined with --bool
1375
+ Perform a tag value query ("@done > two hours ago" or "@progress < 50").
1376
+ May be used multiple times, combined with --bool
1326
1377
 
1327
1378
  [Default Value] None
1328
1379
  [Must Match] (?-mix:^(?:!)?@?(?:\S+) +(?:!?[<>=][=*]?|[$*^]=) +(?:.*?)$)
@@ -1334,7 +1385,7 @@ Prompt for note via multi-line input
1334
1385
 
1335
1386
 
1336
1387
  ===== -e|--editor
1337
- Edit entry with /opt/homebrew/bin/vim
1388
+ Edit entry with vim
1338
1389
 
1339
1390
 
1340
1391
 
@@ -1344,7 +1395,7 @@ Select item for new note from a menu of matching entries
1344
1395
 
1345
1396
 
1346
1397
  ===== --not
1347
- Add note to item that *doesn't* match search/tag filters
1398
+ Note items that *don't* match search/tag filters
1348
1399
 
1349
1400
 
1350
1401
 
@@ -1367,11 +1418,11 @@ A parenthetical at the end of the entry will be converted to a note.
1367
1418
 
1368
1419
  Run without arguments to create a new entry interactively.
1369
1420
 
1370
- Run with --editor to create a new entry using /opt/homebrew/bin/vim.
1421
+ Run with --editor to create a new entry using vim.
1371
1422
  ===== Options
1372
1423
  ===== -b|--back|--started DATE_STRING
1373
1424
 
1374
- Backdate start time [4pm|20m|2h|"yesterday noon"]
1425
+ Backdate start date for new entry to date string [4pm|20m|2h|yesterday noon]
1375
1426
 
1376
1427
  [Default Value] None
1377
1428
 
@@ -1398,13 +1449,18 @@ Section
1398
1449
  [Default Value] None
1399
1450
 
1400
1451
 
1452
+ ===== -X|--noauto
1453
+ Exclude auto tags and default tags
1454
+
1455
+
1456
+
1401
1457
  ===== --ask
1402
1458
  Prompt for note via multi-line input
1403
1459
 
1404
1460
 
1405
1461
 
1406
1462
  ===== -e|--editor
1407
- Edit entry with /opt/homebrew/bin/vim
1463
+ Edit entry with vim
1408
1464
 
1409
1465
 
1410
1466
 
@@ -1446,7 +1502,7 @@ Section
1446
1502
  Sort tags by (name|time)
1447
1503
 
1448
1504
  [Default Value] name
1449
- [Must Match] (?i-mx:^(?:name|time)$)
1505
+ [Must Match] (?i-mx:^(?:n(?:ame)?|t(?:ime)?)$)
1450
1506
 
1451
1507
 
1452
1508
  ===== --template TEMPLATE_STRING
@@ -1474,8 +1530,8 @@ Show time totals at the end of output
1474
1530
  ==== Command: <tt>open </tt>
1475
1531
  Open the "doing" file in an editor
1476
1532
 
1477
- `doing open` defaults to using the editors->doing_file setting
1478
- in /Users/ttscoff/.config/doing/config.yml (/opt/homebrew/bin/vim).
1533
+ `doing open` defaults to using the editors.doing_file setting
1534
+ in /Users/ttscoff/.config/doing/config.yml (TaskPaper).
1479
1535
  ===== Options
1480
1536
  ===== -a|--app APP_NAME
1481
1537
 
@@ -1544,7 +1600,7 @@ Section
1544
1600
  Sort tags by (name|time)
1545
1601
 
1546
1602
  [Default Value] name
1547
- [Must Match] (?i-mx:^(?:name|time)$)
1603
+ [Must Match] (?i-mx:^(?:n(?:ame)?|t(?:ime)?)$)
1548
1604
 
1549
1605
 
1550
1606
  ===== --template TEMPLATE_STRING
@@ -1574,6 +1630,23 @@ Show intervals with totals at the end of output
1574
1630
 
1575
1631
 
1576
1632
 
1633
+ ==== Command: <tt>redo COUNT</tt>
1634
+ Redo an undo command
1635
+
1636
+ Shortcut for `doing undo -r`, reverses the last undo command. Specify a count to redo multiple undos
1637
+ ===== Options
1638
+ ===== -f|--file PATH
1639
+
1640
+ Specify alternate doing file
1641
+
1642
+ [Default Value] None
1643
+
1644
+
1645
+ ===== -i|--[no-]interactive
1646
+ Select from an interactive menu
1647
+
1648
+
1649
+
1577
1650
  ==== Command: <tt>reset|begin [DATE_STRING]</tt>
1578
1651
  Reset the start time of an entry
1579
1652
 
@@ -1583,9 +1656,9 @@ If a date string is provided as an argument, the start time will be set to the p
1583
1656
  ===== Options
1584
1657
  ===== --bool BOOLEAN
1585
1658
 
1586
- Boolean (AND|OR|NOT) with which to combine multiple tag filters. Use PATTERN to parse + and - as booleans
1659
+ Boolean used to combine multiple tags. Use PATTERN to parse + and - as booleans
1587
1660
 
1588
- [Default Value] PATTERN
1661
+ [Default Value] pattern
1589
1662
  [Must Match] (?i-mx:^(?:and|all|any|or|not|none|p(?:at(?:tern)?)?)$)
1590
1663
 
1591
1664
 
@@ -1594,7 +1667,7 @@ Boolean (AND|OR|NOT) with which to combine multiple tag filters. Use PATTERN to
1594
1667
  Case sensitivity for search string matching [(c)ase-sensitive, (i)gnore, (s)mart]
1595
1668
 
1596
1669
  [Default Value] smart
1597
- [Must Match] (?-mix:^[csi])
1670
+ [Must Match] (?i-mx:^[cis].*?$)
1598
1671
 
1599
1672
 
1600
1673
  ===== -s|--section NAME
@@ -1606,21 +1679,23 @@ Limit search to section
1606
1679
 
1607
1680
  ===== --search QUERY
1608
1681
 
1609
- Reset last entry matching search filter, surround with slashes for regex (e.g. "/query.*/"), start with single quote for exact match ("'query")
1682
+ Filter entries using a search query, surround with slashes for regex (e.g. "/query.*/"),
1683
+ start with single quote for exact match ("'query")
1610
1684
 
1611
1685
  [Default Value] None
1612
1686
 
1613
1687
 
1614
1688
  ===== --tag TAG
1615
1689
 
1616
- Reset last entry matching tag. Wildcards allowed (*, ?)
1690
+ Filter entries by tag. Combine multiple tags with a comma. Wildcards allowed (*, ?)
1617
1691
 
1618
1692
  [Default Value] None
1619
1693
 
1620
1694
 
1621
1695
  ===== --val QUERY
1622
1696
 
1623
- Perform a tag value query ("@done > two hours ago" or "@progress < 50"). May be used multiple times, combined with --bool
1697
+ Perform a tag value query ("@done > two hours ago" or "@progress < 50").
1698
+ May be used multiple times, combined with --bool
1624
1699
 
1625
1700
  [Default Value] None
1626
1701
  [Must Match] (?-mix:^(?:!)?@?(?:\S+) +(?:!?[<>=][=*]?|[$*^]=) +(?:.*?)$)
@@ -1668,9 +1743,9 @@ Rotate entries older than date
1668
1743
 
1669
1744
  ===== --bool BOOLEAN
1670
1745
 
1671
- Tag boolean (AND|OR|NOT). Use PATTERN to parse + and - as booleans
1746
+ Boolean used to combine multiple tags. Use PATTERN to parse + and - as booleans
1672
1747
 
1673
- [Default Value] PATTERN
1748
+ [Default Value] pattern
1674
1749
  [Must Match] (?i-mx:^(?:and|all|any|or|not|none|p(?:at(?:tern)?)?)$)
1675
1750
 
1676
1751
 
@@ -1679,7 +1754,7 @@ Tag boolean (AND|OR|NOT). Use PATTERN to parse + and - as booleans
1679
1754
  Case sensitivity for search string matching [(c)ase-sensitive, (i)gnore, (s)mart]
1680
1755
 
1681
1756
  [Default Value] smart
1682
- [Must Match] (?-mix:^[csi])
1757
+ [Must Match] (?i-mx:^[cis].*?$)
1683
1758
 
1684
1759
 
1685
1760
  ===== -k|--keep X
@@ -1699,28 +1774,30 @@ Section to rotate
1699
1774
 
1700
1775
  ===== --search QUERY
1701
1776
 
1702
- Search filter
1777
+ Filter entries using a search query, surround with slashes for regex (e.g. "/query.*/"),
1778
+ start with single quote for exact match ("'query")
1703
1779
 
1704
1780
  [Default Value] None
1705
1781
 
1706
1782
 
1707
1783
  ===== --tag TAG
1708
1784
 
1709
- Tag filter, combine multiple tags with a comma. Wildcards allowed (*, ?). Added for compatibility with other commands
1785
+ Filter entries by tag. Combine multiple tags with a comma. Wildcards allowed (*, ?)
1710
1786
 
1711
1787
  [Default Value] None
1712
1788
 
1713
1789
 
1714
1790
  ===== --val QUERY
1715
1791
 
1716
- Perform a tag value query ("@done > two hours ago" or "@progress < 50"). May be used multiple times, combined with --bool
1792
+ Perform a tag value query ("@done > two hours ago" or "@progress < 50").
1793
+ May be used multiple times, combined with --bool
1717
1794
 
1718
1795
  [Default Value] None
1719
1796
  [Must Match] (?-mix:^(?:!)?@?(?:\S+) +(?:!?[<>=][=*]?|[$*^]=) +(?:.*?)$)
1720
1797
 
1721
1798
 
1722
1799
  ===== --not
1723
- Rotate items that *don't* match search string or tag filter
1800
+ Rotate items that *don't* match search/tag filters
1724
1801
 
1725
1802
 
1726
1803
 
@@ -1758,14 +1835,16 @@ sbtrkt fuzzy-match Items that match s*b*t*r*k*t
1758
1835
  ===== Options
1759
1836
  ===== --after DATE_STRING
1760
1837
 
1761
- Select from entries newer than date. If this is only a time (8am, 1:30pm, 15:00), all dates will be included, but entries will be filtered by time of day
1838
+ Select entries newer than date (natural language). If this is only a time (8am, 1:30pm, 15:00), all
1839
+ dates will be included, but entries will be filtered by time of day
1762
1840
 
1763
1841
  [Default Value] None
1764
1842
 
1765
1843
 
1766
1844
  ===== --before DATE_STRING
1767
1845
 
1768
- Select from entries older than date. If this is only a time (8am, 1:30pm, 15:00), all dates will be included, but entries will be filtered by time of day
1846
+ Select entries older than date (natural language). If this is only a time (8am, 1:30pm, 15:00), all
1847
+ dates will be included, but entries will be filtered by time of day
1769
1848
 
1770
1849
  [Default Value] None
1771
1850
 
@@ -1775,17 +1854,16 @@ Select from entries older than date. If this is only a time (8am, 1:30pm, 15:00)
1775
1854
  Case sensitivity for search string matching [(c)ase-sensitive, (i)gnore, (s)mart]
1776
1855
 
1777
1856
  [Default Value] smart
1778
- [Must Match] (?-mix:^[csi])
1857
+ [Must Match] (?i-mx:^[cis].*?$)
1779
1858
 
1780
1859
 
1781
1860
  ===== --from DATE_OR_RANGE
1782
1861
 
1783
- Date range to show, or a single day to filter date on.
1784
- Date range argument should be quoted. Date specifications can be natural language.
1785
- To specify a range, use "to" or "through": `doing select --from "monday 8am to friday 5pm"`.
1862
+ Date range (natural language) to select, or a single day to filter on.
1863
+ To specify a range, use "to": `doing select --from "monday 8am to friday 5pm"`.
1786
1864
 
1787
- If values are only time(s) (6am to noon) all dates will be included, but entries will be filtered
1788
- by time of day.
1865
+ If values are only time(s) (6am to noon) all dates will be included, but entries will be filtered
1866
+ by time of day.
1789
1867
 
1790
1868
  [Default Value] None
1791
1869
 
@@ -1806,7 +1884,8 @@ Output entries to format (csv|dayone|dayone-days|dayone-entries|doing|html|json|
1806
1884
 
1807
1885
  ===== -q|--query QUERY
1808
1886
 
1809
- Initial search query for filtering. Matching is fuzzy. For exact matching, start query with a single quote, e.g. `--query "'search"
1887
+ Initial search query for filtering. Matching is fuzzy. For exact matching, start query with a single quote,
1888
+ e.g. `--query "'search"
1810
1889
 
1811
1890
  [Default Value] None
1812
1891
 
@@ -1827,7 +1906,8 @@ Save selected entries to file using --output format
1827
1906
 
1828
1907
  ===== --search QUERY
1829
1908
 
1830
- Select from entries matching search filter, surround with slashes for regex (e.g. "/query.*/"), start with single quote for exact match ("'query")
1909
+ Filter entries using a search query, surround with slashes for regex (e.g. "/query.*/"),
1910
+ start with single quote for exact match ("'query")
1831
1911
 
1832
1912
  [Default Value] None
1833
1913
 
@@ -1841,7 +1921,8 @@ Tag selected entries
1841
1921
 
1842
1922
  ===== --val QUERY
1843
1923
 
1844
- Perform a tag value query ("@done > two hours ago" or "@progress < 50"). May be used multiple times, combined with --bool
1924
+ Perform a tag value query ("@done > two hours ago" or "@progress < 50").
1925
+ May be used multiple times, combined with --bool
1845
1926
 
1846
1927
  [Default Value] None
1847
1928
  [Must Match] (?-mix:^(?:!)?@?(?:\S+) +(?:!?[<>=][=*]?|[$*^]=) +(?:.*?)$)
@@ -1853,7 +1934,8 @@ Archive selected items
1853
1934
 
1854
1935
 
1855
1936
  ===== --again|--resume
1856
- Copy selection as a new entry with current time and no @done tag. Only works with single selections. Can be combined with --editor.
1937
+ Copy selection as a new entry with current time and no @done tag.
1938
+ Only works with single selections. Can be combined with --editor.
1857
1939
 
1858
1940
 
1859
1941
 
@@ -1888,7 +1970,8 @@ Perform action without confirmation
1888
1970
 
1889
1971
 
1890
1972
  ===== --[no-]menu
1891
- 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
1973
+ Use --no-menu to skip the interactive menu. Use with --query to filter items and act on results automatically.
1974
+ Test with `--output doing` to preview matches
1892
1975
 
1893
1976
 
1894
1977
 
@@ -1926,24 +2009,26 @@ Age (oldest|newest)
1926
2009
 
1927
2010
  ===== --after DATE_STRING
1928
2011
 
1929
- Show entries newer than date. If this is only a time (8am, 1:30pm, 15:00), all dates will be included, but entries will be filtered by time of day
2012
+ Show entries newer than date (natural language). If this is only a time (8am, 1:30pm, 15:00), all
2013
+ dates will be included, but entries will be filtered by time of day
1930
2014
 
1931
2015
  [Default Value] None
1932
2016
 
1933
2017
 
1934
- ===== -b|--bool BOOLEAN
2018
+ ===== --before DATE_STRING
1935
2019
 
1936
- Tag boolean (AND,OR,NOT). Use PATTERN to parse + and - as booleans
2020
+ Show entries older than date (natural language). If this is only a time (8am, 1:30pm, 15:00), all
2021
+ dates will be included, but entries will be filtered by time of day
1937
2022
 
1938
- [Default Value] PATTERN
1939
- [Must Match] (?i-mx:^(?:and|all|any|or|not|none|p(?:at(?:tern)?)?)$)
2023
+ [Default Value] None
1940
2024
 
1941
2025
 
1942
- ===== --before DATE_STRING
2026
+ ===== --bool BOOLEAN
1943
2027
 
1944
- Show entries older than date. If this is only a time (8am, 1:30pm, 15:00), all dates will be included, but entries will be filtered by time of day
2028
+ Boolean used to combine multiple tags. Use PATTERN to parse + and - as booleans
1945
2029
 
1946
- [Default Value] None
2030
+ [Default Value] pattern
2031
+ [Must Match] (?i-mx:^(?:and|all|any|or|not|none|p(?:at(?:tern)?)?)$)
1947
2032
 
1948
2033
 
1949
2034
  ===== -c|--count MAX
@@ -1959,7 +2044,7 @@ Max count to show
1959
2044
  Case sensitivity for search string matching [(c)ase-sensitive, (i)gnore, (s)mart]
1960
2045
 
1961
2046
  [Default Value] smart
1962
- [Must Match] (?-mix:^[csi])
2047
+ [Must Match] (?i-mx:^[cis].*?$)
1963
2048
 
1964
2049
 
1965
2050
  ===== --config_template TEMPLATE_KEY
@@ -1971,12 +2056,11 @@ Output using a template from configuration
1971
2056
 
1972
2057
  ===== --from DATE_OR_RANGE
1973
2058
 
1974
- Date range to show, or a single day to filter date on.
1975
- Date range argument should be quoted. Date specifications can be natural language.
1976
- To specify a range, use "to" or "through": `doing show --from "monday 8am to friday 5pm"`.
2059
+ Date range (natural language) to show, or a single day to filter on.
2060
+ To specify a range, use "to": `doing show --from "monday 8am to friday 5pm"`.
1977
2061
 
1978
- If values are only time(s) (6am to noon) all dates will be included, but entries will be filtered
1979
- by time of day.
2062
+ If values are only time(s) (6am to noon) all dates will be included, but entries will be filtered
2063
+ by time of day.
1980
2064
 
1981
2065
  [Default Value] None
1982
2066
 
@@ -1998,14 +2082,15 @@ Sort order (asc/desc)
1998
2082
 
1999
2083
  ===== --search QUERY
2000
2084
 
2001
- Search filter, surround with slashes for regex (/query/), start with single quote for exact match ("'query")
2085
+ Filter entries using a search query, surround with slashes for regex (e.g. "/query.*/"),
2086
+ start with single quote for exact match ("'query")
2002
2087
 
2003
2088
  [Default Value] None
2004
2089
 
2005
2090
 
2006
2091
  ===== --tag TAG
2007
2092
 
2008
- Tag filter, combine multiple tags with a comma. Use `--tag pick` for a menu of available tags. Wildcards allowed (*, ?). Added for compatibility with other commands
2093
+ Filter entries by tag. Combine multiple tags with a comma. Wildcards allowed (*, ?)
2009
2094
 
2010
2095
  [Default Value] None
2011
2096
 
@@ -2023,7 +2108,7 @@ Tag sort direction (asc|desc)
2023
2108
  Sort tags by (name|time)
2024
2109
 
2025
2110
  [Default Value] name
2026
- [Must Match] (?i-mx:^(?:name|time))
2111
+ [Must Match] (?i-mx:^(?:n(?:ame)?|t(?:ime)?)$)
2027
2112
 
2028
2113
 
2029
2114
  ===== --template TEMPLATE_STRING
@@ -2035,7 +2120,8 @@ Override output format with a template string containing %placeholders
2035
2120
 
2036
2121
  ===== --val QUERY
2037
2122
 
2038
- Perform a tag value query ("@done > two hours ago" or "@progress < 50"). May be used multiple times, combined with --bool
2123
+ Perform a tag value query ("@done > two hours ago" or "@progress < 50").
2124
+ May be used multiple times, combined with --bool
2039
2125
 
2040
2126
  [Default Value] None
2041
2127
  [Must Match] (?-mix:^(?:!)?@?(?:\S+) +(?:!?[<>=][=*]?|[$*^]=) +(?:.*?)$)
@@ -2062,7 +2148,7 @@ Select section or tag to display from a menu
2062
2148
 
2063
2149
 
2064
2150
  ===== --not
2065
- Show items that *don't* match search/tag/date filters
2151
+ Show items that *don't* match search/tag filters
2066
2152
 
2067
2153
 
2068
2154
 
@@ -2118,7 +2204,7 @@ Section
2118
2204
  Sort tags by (name|time)
2119
2205
 
2120
2206
  [Default Value] name
2121
- [Must Match] (?i-mx:^(?:name|time)$)
2207
+ [Must Match] (?i-mx:^(?:n(?:ame)?|t(?:ime)?)$)
2122
2208
 
2123
2209
 
2124
2210
  ===== --template TEMPLATE_STRING
@@ -2162,9 +2248,9 @@ Add (or remove) tags from the last entry, or from multiple entries
2162
2248
  ===== Options
2163
2249
  ===== --bool BOOLEAN
2164
2250
 
2165
- Boolean (AND|OR|NOT) with which to combine multiple tag filters. Use PATTERN to parse + and - as booleans
2251
+ Boolean used to combine multiple tags. Use PATTERN to parse + and - as booleans
2166
2252
 
2167
- [Default Value] PATTERN
2253
+ [Default Value] pattern
2168
2254
  [Must Match] (?i-mx:^(?:and|all|any|or|not|none|p(?:at(?:tern)?)?)$)
2169
2255
 
2170
2256
 
@@ -2181,7 +2267,7 @@ How many recent entries to tag (0 for all)
2181
2267
  Case sensitivity for search string matching [(c)ase-sensitive, (i)gnore, (s)mart]
2182
2268
 
2183
2269
  [Default Value] smart
2184
- [Must Match] (?-mix:^[csi])
2270
+ [Must Match] (?i-mx:^[cis].*?$)
2185
2271
 
2186
2272
 
2187
2273
  ===== --rename ORIG_TAG
@@ -2200,15 +2286,15 @@ Section
2200
2286
 
2201
2287
  ===== --search QUERY
2202
2288
 
2203
- Tag entries matching search filter, surround with slashes for regex (e.g. "/query.*/"), start with single quote for exact match ("'query")
2289
+ Filter entries using a search query, surround with slashes for regex (e.g. "/query.*/"),
2290
+ start with single quote for exact match ("'query")
2204
2291
 
2205
2292
  [Default Value] None
2206
2293
 
2207
2294
 
2208
2295
  ===== --tag TAG
2209
2296
 
2210
- Tag the last X entries containing TAG.
2211
- Separate multiple tags with comma (--tag=tag1,tag2), combine with --bool. Wildcards allowed (*, ?).
2297
+ Filter entries by tag. Combine multiple tags with a comma. Wildcards allowed (*, ?)
2212
2298
 
2213
2299
  [Default Value] None
2214
2300
 
@@ -2222,7 +2308,8 @@ Include a value, e.g. @tag(value)
2222
2308
 
2223
2309
  ===== --val QUERY
2224
2310
 
2225
- Perform a tag value query ("@done > two hours ago" or "@progress < 50"). May be used multiple times, combined with --bool
2311
+ Perform a tag value query ("@done > two hours ago" or "@progress < 50").
2312
+ May be used multiple times, combined with --bool
2226
2313
 
2227
2314
  [Default Value] None
2228
2315
  [Must Match] (?-mix:^(?:!)?@?(?:\S+) +(?:!?[<>=][=*]?|[$*^]=) +(?:.*?)$)
@@ -2294,7 +2381,7 @@ List all tags in the current Doing file
2294
2381
 
2295
2382
  Boolean used to combine multiple tags. Use PATTERN to parse + and - as booleans
2296
2383
 
2297
- [Default Value] PATTERN
2384
+ [Default Value] pattern
2298
2385
  [Must Match] (?i-mx:^(?:and|all|any|or|not|none|p(?:at(?:tern)?)?)$)
2299
2386
 
2300
2387
 
@@ -2303,7 +2390,7 @@ Boolean used to combine multiple tags. Use PATTERN to parse + and - as booleans
2303
2390
  Case sensitivity for search string matching [(c)ase-sensitive, (i)gnore, (s)mart]
2304
2391
 
2305
2392
  [Default Value] smart
2306
- [Must Match] (?-mix:^[csi])
2393
+ [Must Match] (?i-mx:^[cis].*?$)
2307
2394
 
2308
2395
 
2309
2396
  ===== -o|--order ORDER
@@ -2323,8 +2410,8 @@ Section
2323
2410
 
2324
2411
  ===== --search QUERY
2325
2412
 
2326
- Get tags for items matching search. Surround with
2327
- slashes for regex (e.g. "/query/"), start with a single quote for exact match ("'query").
2413
+ Filter entries using a search query, surround with slashes for regex (e.g. "/query.*/"),
2414
+ start with single quote for exact match ("'query")
2328
2415
 
2329
2416
  [Default Value] None
2330
2417
 
@@ -2339,14 +2426,15 @@ Sort by name or count
2339
2426
 
2340
2427
  ===== --tag TAG
2341
2428
 
2342
- Get tags for entries matching tags. Combine multiple tags with a comma. Wildcards allowed (*, ?)
2429
+ Filter entries by tag. Combine multiple tags with a comma. Wildcards allowed (*, ?)
2343
2430
 
2344
2431
  [Default Value] None
2345
2432
 
2346
2433
 
2347
2434
  ===== --val QUERY
2348
2435
 
2349
- Perform a tag value query ("@done > two hours ago" or "@progress < 50"). May be used multiple times, combined with --bool
2436
+ Perform a tag value query ("@done > two hours ago" or "@progress < 50").
2437
+ May be used multiple times, combined with --bool
2350
2438
 
2351
2439
  [Default Value] None
2352
2440
  [Must Match] (?-mix:^(?:!)?@?(?:\S+) +(?:!?[<>=][=*]?|[$*^]=) +(?:.*?)$)
@@ -2368,7 +2456,7 @@ Output in a single line with @ symbols. Ignored if --counts is specified.
2368
2456
 
2369
2457
 
2370
2458
  ===== --not
2371
- Get tags from items that *don't* match search/tag filters
2459
+ Show items that *don't* match search/tag filters
2372
2460
 
2373
2461
 
2374
2462
 
@@ -2462,7 +2550,7 @@ Specify a section
2462
2550
  Sort tags by (name|time)
2463
2551
 
2464
2552
  [Default Value] name
2465
- [Must Match] (?i-mx:^(?:name|time)$)
2553
+ [Must Match] (?i-mx:^(?:n(?:ame)?|t(?:ime)?)$)
2466
2554
 
2467
2555
 
2468
2556
  ===== --template TEMPLATE_STRING
@@ -2527,7 +2615,8 @@ Command line options override view configuration.
2527
2615
  ===== Options
2528
2616
  ===== --after DATE_STRING
2529
2617
 
2530
- View entries newer than date. If this is only a time (8am, 1:30pm, 15:00), all dates will be included, but entries will be filtered by time of day
2618
+ Show entries newer than date (natural language). If this is only a time (8am, 1:30pm, 15:00), all
2619
+ dates will be included, but entries will be filtered by time of day
2531
2620
 
2532
2621
  [Default Value] None
2533
2622
 
@@ -2539,19 +2628,20 @@ Age (oldest|newest)
2539
2628
  [Default Value] newest
2540
2629
 
2541
2630
 
2542
- ===== -b|--bool BOOLEAN
2631
+ ===== --before DATE_STRING
2543
2632
 
2544
- Tag boolean (AND,OR,NOT). Use PATTERN to parse + and - as booleans
2633
+ Show entries older than date (natural language). If this is only a time (8am, 1:30pm, 15:00), all
2634
+ dates will be included, but entries will be filtered by time of day
2545
2635
 
2546
- [Default Value] PATTERN
2547
- [Must Match] (?i-mx:^(?:and|all|any|or|not|none|p(?:at(?:tern)?)?)$)
2636
+ [Default Value] None
2548
2637
 
2549
2638
 
2550
- ===== --before DATE_STRING
2639
+ ===== --bool BOOLEAN
2551
2640
 
2552
- View entries older than date. If this is only a time (8am, 1:30pm, 15:00), all dates will be included, but entries will be filtered by time of day
2641
+ Boolean used to combine multiple tags. Use PATTERN to parse + and - as booleans
2553
2642
 
2554
- [Default Value] None
2643
+ [Default Value] pattern
2644
+ [Must Match] (?i-mx:^(?:and|all|any|or|not|none|p(?:at(?:tern)?)?)$)
2555
2645
 
2556
2646
 
2557
2647
  ===== -c|--count COUNT
@@ -2567,17 +2657,16 @@ Count to display
2567
2657
  Case sensitivity for search string matching [(c)ase-sensitive, (i)gnore, (s)mart]
2568
2658
 
2569
2659
  [Default Value] smart
2570
- [Must Match] (?-mix:^[csi])
2660
+ [Must Match] (?i-mx:^[cis].*?$)
2571
2661
 
2572
2662
 
2573
2663
  ===== --from DATE_OR_RANGE
2574
2664
 
2575
- Date range to show, or a single day to filter date on.
2576
- Date range argument should be quoted. Date specifications can be natural language.
2577
- To specify a range, use "to" or "through": `doing view --from "monday 8am to friday 5pm" view_name`.
2665
+ Date range (natural language) to show, or a single day to filter on.
2666
+ To specify a range, use "to": `doing view --from "monday 8am to friday 5pm"`.
2578
2667
 
2579
- If values are only time(s) (6am to noon) all dates will be included, but entries will be filtered
2580
- by time of day.
2668
+ If values are only time(s) (6am to noon) all dates will be included, but entries will be filtered
2669
+ by time of day.
2581
2670
 
2582
2671
  [Default Value] None
2583
2672
 
@@ -2598,14 +2687,15 @@ Section
2598
2687
 
2599
2688
  ===== --search QUERY
2600
2689
 
2601
- Search filter, surround with slashes for regex (/query/), start with single quote for exact match ("'query")
2690
+ Filter entries using a search query, surround with slashes for regex (e.g. "/query.*/"),
2691
+ start with single quote for exact match ("'query")
2602
2692
 
2603
2693
  [Default Value] None
2604
2694
 
2605
2695
 
2606
2696
  ===== --tag TAG
2607
2697
 
2608
- Tag filter, combine multiple tags with a comma. Wildcards allowed (*, ?)
2698
+ Filter entries by tag. Combine multiple tags with a comma. Wildcards allowed (*, ?)
2609
2699
 
2610
2700
  [Default Value] None
2611
2701
 
@@ -2623,12 +2713,13 @@ Tag sort direction (asc|desc)
2623
2713
  Sort tags by (name|time)
2624
2714
 
2625
2715
  [Default Value] None
2626
- [Must Match] (?i-mx:^(?:name|time)$)
2716
+ [Must Match] (?i-mx:^(?:n(?:ame)?|t(?:ime)?)$)
2627
2717
 
2628
2718
 
2629
2719
  ===== --val QUERY
2630
2720
 
2631
- Perform a tag value query ("@done > two hours ago" or "@progress < 50"). May be used multiple times, combined with --bool
2721
+ Perform a tag value query ("@done > two hours ago" or "@progress < 50").
2722
+ May be used multiple times, combined with --bool
2632
2723
 
2633
2724
  [Default Value] None
2634
2725
  [Must Match] (?-mix:^(?:!)?@?(?:\S+) +(?:!?[<>=][=*]?|[$*^]=) +(?:.*?)$)
@@ -2655,7 +2746,7 @@ Select from a menu of matching entries to perform additional operations
2655
2746
 
2656
2747
 
2657
2748
  ===== --not
2658
- Show items that *don't* match search string
2749
+ Show items that *don't* match search/tag filters
2659
2750
 
2660
2751
 
2661
2752
 
@@ -2813,7 +2904,7 @@ Tag sort direction (asc|desc)
2813
2904
  Sort tags by (name|time)
2814
2905
 
2815
2906
  [Default Value] name
2816
- [Must Match] (?i-mx:^(?:name|time)$)
2907
+ [Must Match] (?i-mx:^(?:n(?:ame)?|t(?:ime)?)$)
2817
2908
 
2818
2909
 
2819
2910
  ===== --template TEMPLATE_STRING