doing 2.1.39 → 2.1.42
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.yardopts +1 -1
- data/CHANGELOG.md +67 -0
- data/Gemfile.lock +1 -1
- data/README.md +1 -1
- data/Rakefile +4 -4
- data/bin/commands/again.rb +1 -3
- data/bin/commands/changes.rb +50 -34
- data/bin/commands/commands.rb +77 -52
- data/bin/commands/commands_accepting.rb +57 -53
- data/bin/commands/config.rb +45 -36
- data/bin/commands/done.rb +1 -18
- data/bin/commands/finish.rb +90 -59
- data/bin/commands/flag.rb +5 -1
- data/bin/commands/grep.rb +3 -14
- data/bin/commands/last.rb +2 -8
- data/bin/commands/meanwhile.rb +13 -6
- data/bin/commands/now.rb +151 -107
- data/bin/commands/on.rb +8 -18
- data/bin/commands/recent.rb +2 -8
- data/bin/commands/reset.rb +24 -1
- data/bin/commands/select.rb +1 -1
- data/bin/commands/show.rb +6 -17
- data/bin/commands/since.rb +1 -12
- data/bin/commands/tag_dir.rb +49 -15
- data/bin/commands/today.rb +2 -13
- data/bin/commands/undo.rb +4 -6
- data/bin/commands/view.rb +1 -1
- data/bin/commands/yesterday.rb +2 -13
- data/bin/doing +15 -8
- data/{Dockerfile → docker/Dockerfile} +3 -1
- data/{Dockerfile-2.6 → docker/Dockerfile-2.6} +2 -2
- data/{Dockerfile-2.7 → docker/Dockerfile-2.7} +2 -2
- data/{Dockerfile-3.0 → docker/Dockerfile-3.0} +2 -2
- data/{bash_profile → docker/bash_profile} +0 -0
- data/{inputrc → docker/inputrc} +0 -0
- data/docs/doc/Array.html +85 -2
- data/docs/doc/BooleanTermParser/Clause.html +1 -1
- data/docs/doc/BooleanTermParser/Operator.html +1 -1
- data/docs/doc/BooleanTermParser/Query.html +1 -1
- data/docs/doc/BooleanTermParser/QueryParser.html +1 -1
- data/docs/doc/BooleanTermParser/QueryTransformer.html +1 -1
- data/docs/doc/BooleanTermParser.html +1 -1
- data/docs/doc/Doing/ArrayNestedHash.html +198 -0
- data/docs/doc/Doing/ArrayTags.html +424 -0
- data/docs/doc/Doing/CSVExport.html +266 -0
- data/docs/doc/Doing/CalendarImport.html +232 -0
- data/docs/doc/Doing/Change.html +617 -0
- data/docs/doc/Doing/Changes.html +468 -0
- data/docs/doc/Doing/ChronifyArray.html +347 -0
- data/docs/doc/Doing/ChronifyNumeric.html +271 -0
- data/docs/doc/Doing/ChronifyString.html +682 -0
- data/docs/doc/Doing/Color.html +167 -21
- data/docs/doc/Doing/Completion/BashCompletions.html +445 -0
- data/docs/doc/Doing/Completion/FishCompletions.html +445 -0
- data/docs/doc/Doing/Completion/StringUtils.html +229 -0
- data/docs/doc/Doing/Completion/ZshCompletions.html +445 -0
- data/docs/doc/Doing/Completion.html +17 -3
- data/docs/doc/Doing/Configuration.html +3 -2
- data/docs/doc/Doing/DayOneRenderer.html +383 -0
- data/docs/doc/Doing/DayoneExport.html +290 -0
- data/docs/doc/Doing/DoingImport.html +391 -0
- data/docs/doc/Doing/Entry.html +381 -0
- data/docs/doc/Doing/Errors/DoingNoTraceError.html +7 -3
- data/docs/doc/Doing/Errors/DoingRuntimeError.html +7 -3
- data/docs/doc/Doing/Errors/DoingStandardError.html +1 -1
- data/docs/doc/Doing/Errors/EmptyInput.html +10 -2
- data/docs/doc/Doing/Errors/HistoryLimitError.html +194 -0
- data/docs/doc/Doing/Errors/InvalidPlugin.html +194 -0
- data/docs/doc/Doing/Errors/MissingBackupFile.html +194 -0
- data/docs/doc/Doing/Errors/NoResults.html +10 -2
- data/docs/doc/Doing/Errors/PluginException.html +1 -1
- data/docs/doc/Doing/Errors/UserCancelled.html +10 -2
- data/docs/doc/Doing/Errors/WrongCommand.html +10 -2
- data/docs/doc/Doing/Errors.html +9 -9
- data/docs/doc/Doing/HTMLExport.html +256 -0
- data/docs/doc/Doing/Hooks.html +1 -1
- data/docs/doc/Doing/Item.html +179 -1660
- data/docs/doc/Doing/ItemDates.html +564 -0
- data/docs/doc/Doing/ItemQuery.html +614 -0
- data/docs/doc/Doing/ItemState.html +387 -0
- data/docs/doc/Doing/ItemTags.html +498 -0
- data/docs/doc/Doing/Items.html +581 -15
- data/docs/doc/Doing/JSONExport.html +222 -0
- data/docs/doc/Doing/Logger.html +1 -1
- data/docs/doc/Doing/MarkdownExport.html +266 -0
- data/docs/doc/Doing/MarkdownRenderer.html +383 -0
- data/docs/doc/Doing/Note.html +18 -4
- data/docs/doc/Doing/Pager.html +1 -1
- data/docs/doc/Doing/Plugins.html +181 -76
- data/docs/doc/Doing/Prompt.html +32 -683
- data/docs/doc/Doing/PromptChoose.html +484 -0
- data/docs/doc/Doing/PromptFZF.html +391 -0
- data/docs/doc/Doing/PromptInput.html +572 -0
- data/docs/doc/Doing/PromptSTD.html +293 -0
- data/docs/doc/Doing/PromptYN.html +237 -0
- data/docs/doc/Doing/Section.html +58 -2
- data/docs/doc/Doing/StringHighlight.html +533 -0
- data/docs/doc/Doing/StringNormalize.html +929 -0
- data/docs/doc/Doing/StringQuery.html +725 -0
- data/docs/doc/Doing/StringTags.html +884 -0
- data/docs/doc/Doing/StringTransform.html +599 -0
- data/docs/doc/Doing/StringTruncate.html +448 -0
- data/docs/doc/Doing/StringURL.html +409 -0
- data/docs/doc/Doing/SymbolNormalize.html +341 -0
- data/docs/doc/Doing/TaskPaperExport.html +222 -0
- data/docs/doc/Doing/TemplateExport.html +249 -0
- data/docs/doc/Doing/TemplateString.html +102 -3
- data/docs/doc/Doing/TimingImport.html +285 -0
- data/docs/doc/Doing/Types.html +1 -1
- data/docs/doc/Doing/Util/Backup.html +11 -163
- data/docs/doc/Doing/Util.html +67 -10
- data/docs/doc/Doing/Version.html +523 -0
- data/docs/doc/Doing/WWID/WWIDUtil.html +510 -0
- data/docs/doc/Doing/WWID.html +476 -139
- data/docs/doc/Doing/WWIDDisplay.html +865 -0
- data/docs/doc/Doing/WWIDEditor.html +466 -0
- data/docs/doc/Doing/WWIDFileTools.html +359 -0
- data/docs/doc/Doing/WWIDFilter.html +466 -0
- data/docs/doc/Doing/WWIDGuess.html +299 -0
- data/docs/doc/Doing/WWIDInteractive.html +752 -0
- data/docs/doc/Doing/WWIDModify.html +1078 -0
- data/docs/doc/Doing/WWIDTags.html +302 -0
- data/docs/doc/Doing/WWIDTimers.html +359 -0
- data/docs/doc/Doing/WWIDUtil.html +510 -0
- data/docs/doc/Doing.html +9 -6
- data/docs/doc/FalseClass.html +1 -1
- data/docs/doc/GLI/Commands/Help.html +1 -1
- data/docs/doc/GLI/Commands/MarkdownDocumentListener.html +1 -1
- data/docs/doc/GLI/Commands.html +1 -1
- data/docs/doc/GLI.html +1 -1
- data/docs/doc/Hash.html +1 -1
- data/docs/doc/Numeric.html +23 -78
- data/docs/doc/Object.html +1 -1
- data/docs/doc/PhraseParser/Operator.html +1 -1
- data/docs/doc/PhraseParser/PhraseClause.html +1 -1
- data/docs/doc/PhraseParser/Query.html +1 -1
- data/docs/doc/PhraseParser/QueryParser.html +1 -1
- data/docs/doc/PhraseParser/QueryTransformer.html +1 -1
- data/docs/doc/PhraseParser/TermClause.html +1 -1
- data/docs/doc/PhraseParser.html +1 -1
- data/docs/doc/Status.html +1 -1
- data/docs/doc/String.html +58 -633
- data/docs/doc/Symbol.html +9 -224
- data/docs/doc/Time.html +119 -13
- data/docs/doc/TrueClass.html +1 -1
- data/docs/doc/_index.html +348 -4
- data/docs/doc/class_list.html +1 -1
- data/docs/doc/file.README.html +2 -2
- data/docs/doc/index.html +2 -2
- data/docs/doc/method_list.html +1904 -592
- data/docs/doc/top-level-namespace.html +12 -4
- data/docs/index.md +1 -1
- data/doing.rdoc +67 -15
- data/lib/completion/_doing.zsh +6 -6
- data/lib/completion/doing.bash +10 -10
- data/lib/completion/doing.fish +10 -3
- data/lib/doing/add_options.rb +39 -1
- data/lib/doing/array/array.rb +18 -12
- data/lib/doing/array/cleanup.rb +31 -0
- data/lib/doing/array/nested_hash.rb +1 -1
- data/lib/doing/array/tags.rb +6 -5
- data/lib/doing/changelog/changelog.rb +6 -0
- data/lib/doing/chronify/array.rb +65 -25
- data/lib/doing/chronify/chronify.rb +12 -0
- data/lib/doing/chronify/numeric.rb +3 -2
- data/lib/doing/chronify/string.rb +1 -1
- data/lib/doing/colors.rb +77 -30
- data/lib/doing/completion/completion_string.rb +25 -0
- data/lib/doing/completion.rb +4 -5
- data/lib/doing/configuration.rb +7 -3
- data/lib/doing/errors.rb +51 -35
- data/lib/doing/good.rb +8 -0
- data/lib/doing/hooks.rb +3 -3
- data/lib/doing/item/dates.rb +112 -0
- data/lib/doing/item/item.rb +128 -0
- data/lib/doing/{item.rb → item/query.rb} +2 -353
- data/lib/doing/item/state.rb +59 -0
- data/lib/doing/item/tags.rb +87 -0
- data/lib/doing/items/filter.rb +67 -0
- data/lib/doing/items/items.rb +57 -0
- data/lib/doing/items/modify.rb +36 -0
- data/lib/doing/items/sections.rb +83 -0
- data/lib/doing/items/util.rb +74 -0
- data/lib/doing/normalize.rb +10 -2
- data/lib/doing/note.rb +1 -1
- data/lib/doing/pager.rb +9 -3
- data/lib/doing/plugin_manager.rb +33 -8
- data/lib/doing/plugins/export/markdown_export.rb +4 -2
- data/lib/doing/plugins/export/template_export.rb +4 -4
- data/lib/doing/plugins/import/cal_to_json.scpt +0 -0
- data/lib/doing/plugins/import/doing_import.rb +1 -1
- data/lib/doing/prompt/choose.rb +118 -0
- data/lib/doing/prompt/fzf.rb +84 -0
- data/lib/doing/prompt/input.rb +129 -0
- data/lib/doing/prompt/prompt.rb +41 -0
- data/lib/doing/prompt/std.rb +32 -0
- data/lib/doing/prompt/yn.rb +64 -0
- data/lib/doing/section.rb +4 -0
- data/lib/doing/string/highlight.rb +1 -1
- data/lib/doing/string/query.rb +1 -1
- data/lib/doing/string/string.rb +18 -7
- data/lib/doing/string/tags.rb +14 -3
- data/lib/doing/string/transform.rb +7 -1
- data/lib/doing/string/truncate.rb +1 -1
- data/lib/doing/string/url.rb +1 -1
- data/lib/doing/time.rb +19 -1
- data/lib/doing/util.rb +12 -6
- data/lib/doing/util_backup.rb +62 -57
- data/lib/doing/version.rb +1 -1
- data/lib/doing/wwid/display.rb +396 -0
- data/lib/doing/wwid/editor.rb +214 -0
- data/lib/doing/wwid/filetools.rb +183 -0
- data/lib/doing/wwid/filter.rb +226 -0
- data/lib/doing/wwid/guess.rb +85 -0
- data/lib/doing/wwid/interactive.rb +377 -0
- data/lib/doing/wwid/modify.rb +617 -0
- data/lib/doing/wwid/tags.rb +51 -0
- data/lib/doing/wwid/timers.rb +342 -0
- data/lib/doing/wwid/wwid.rb +121 -0
- data/lib/doing/wwid/wwidutil.rb +101 -0
- data/lib/doing.rb +7 -7
- data/lib/helpers/threaded_tests.rb +1 -0
- metadata +94 -14
- data/lib/doing/changelog.rb +0 -6
- data/lib/doing/completion/string.rb +0 -17
- data/lib/doing/items.rb +0 -196
- data/lib/doing/prompt.rb +0 -330
- data/lib/doing/wwid.rb +0 -2398
|
@@ -86,7 +86,7 @@
|
|
|
86
86
|
|
|
87
87
|
|
|
88
88
|
|
|
89
|
-
<strong class="classes">Classes:</strong> <span class='object_link'><a href="Array.html" title="Array (class)">Array</a></span>, <span class='object_link'><a href="FalseClass.html" title="FalseClass (class)">FalseClass</a></span>, <span class='object_link'><a href="Hash.html" title="Hash (class)">Hash</a></span>, <span class='object_link'><a href="Object.html" title="Object (class)">Object</a></span>, <span class='object_link'><a href="String.html" title="String (class)">String</a></span>, <span class='object_link'><a href="Symbol.html" title="Symbol (class)">Symbol</a></span>, <span class='object_link'><a href="Time.html" title="Time (class)">Time</a></span>, <span class='object_link'><a href="TrueClass.html" title="TrueClass (class)">TrueClass</a></span>
|
|
89
|
+
<strong class="classes">Classes:</strong> <span class='object_link'><a href="Array.html" title="Array (class)">Array</a></span>, <span class='object_link'><a href="FalseClass.html" title="FalseClass (class)">FalseClass</a></span>, <span class='object_link'><a href="Hash.html" title="Hash (class)">Hash</a></span>, <span class='object_link'><a href="Numeric.html" title="Numeric (class)">Numeric</a></span>, <span class='object_link'><a href="Object.html" title="Object (class)">Object</a></span>, <span class='object_link'><a href="String.html" title="String (class)">String</a></span>, <span class='object_link'><a href="Symbol.html" title="Symbol (class)">Symbol</a></span>, <span class='object_link'><a href="Time.html" title="Time (class)">Time</a></span>, <span class='object_link'><a href="TrueClass.html" title="TrueClass (class)">TrueClass</a></span>
|
|
90
90
|
|
|
91
91
|
|
|
92
92
|
</p>
|
|
@@ -108,7 +108,7 @@
|
|
|
108
108
|
<li class="public ">
|
|
109
109
|
<span class="summary_signature">
|
|
110
110
|
|
|
111
|
-
<a href="top-level-namespace.html#add_options-instance_method" title="#add_options (instance method)">#<strong>add_options</strong>(type, cmd) ⇒ Object </a>
|
|
111
|
+
<a href="top-level-namespace.html#add_options-instance_method" title="#add_options (instance method)">#<strong>add_options</strong>(type, cmd, default_template: 'default') ⇒ Object </a>
|
|
112
112
|
|
|
113
113
|
|
|
114
114
|
|
|
@@ -140,7 +140,7 @@
|
|
|
140
140
|
<div class="method_details first">
|
|
141
141
|
<h3 class="signature first" id="add_options-instance_method">
|
|
142
142
|
|
|
143
|
-
#<strong>add_options</strong>(type, cmd) ⇒ <tt><span class='object_link'><a href="Object.html" title="Object (class)">Object</a></span></tt>
|
|
143
|
+
#<strong>add_options</strong>(type, cmd, default_template: 'default') ⇒ <tt><span class='object_link'><a href="Object.html" title="Object (class)">Object</a></span></tt>
|
|
144
144
|
|
|
145
145
|
|
|
146
146
|
|
|
@@ -150,12 +150,20 @@
|
|
|
150
150
|
<div class="discussion">
|
|
151
151
|
<p>Add presets of flags and switches to a command.</p>
|
|
152
152
|
|
|
153
|
+
<p>:output_template => --output, --config_template, --template</p>
|
|
154
|
+
|
|
153
155
|
<p>:add_entry => --noauto, --note, --ask, --editor, --back</p>
|
|
154
156
|
|
|
157
|
+
<p>:finish_entry => --at/finished, --from, --took</p>
|
|
158
|
+
|
|
159
|
+
<p>:time_display => --times, --duration, --totals, --tag_sort, --tag_order, --only_timed</p>
|
|
160
|
+
|
|
155
161
|
<p>:search => --search, --case, --exact</p>
|
|
156
162
|
|
|
157
163
|
<p>:tag_filter => --tag, --bool, --not, --val</p>
|
|
158
164
|
|
|
165
|
+
<p>:time_filter => --before, --after, --from</p>
|
|
166
|
+
|
|
159
167
|
<p>:date_filter => --before, --after, --from</p>
|
|
160
168
|
|
|
161
169
|
|
|
@@ -206,7 +214,7 @@
|
|
|
206
214
|
</div>
|
|
207
215
|
|
|
208
216
|
<div id="footer">
|
|
209
|
-
Generated on
|
|
217
|
+
Generated on Fri Mar 18 12:56:57 2022 by
|
|
210
218
|
<a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
|
211
219
|
0.9.27 (ruby-3.0.1).
|
|
212
220
|
</div>
|
data/docs/index.md
CHANGED
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.
|
|
8
|
+
v2.1.42
|
|
9
9
|
|
|
10
10
|
=== Global Options
|
|
11
11
|
=== --config_file arg
|
|
@@ -435,17 +435,17 @@ Display a formatted list of changes in recent versions.
|
|
|
435
435
|
===== -l|--lookup VERSION
|
|
436
436
|
|
|
437
437
|
Look up a specific version. Specify versions as "MAJ.MIN.PATCH", MIN
|
|
438
|
-
|
|
439
|
-
|
|
438
|
+
and PATCH are optional. Use > or < to see all changes since or prior
|
|
439
|
+
to a version. Wildcards (*?) accepted unless using < or >.
|
|
440
440
|
|
|
441
441
|
[Default Value] None
|
|
442
|
-
[Must Match] (?-mix:^(?:(?:(?:[<>=]+|p(?:rior)|b(?:efore)|o(?:lder)|s(?:ince)|a(?:fter)|n(?:ewer))? *[0-9.*?]
|
|
442
|
+
[Must Match] (?-mix:^(?:(?:(?:[<>=]+|p(?:rior)|b(?:efore)|o(?:lder)|s(?:ince)|a(?:fter)|n(?:ewer))? *[0-9.*?]{1,10} *)+|(?:[\d.]+ *(?:-|to)+ *[0-9.]{1,10}))$)
|
|
443
443
|
|
|
444
444
|
|
|
445
445
|
===== -s|--search arg
|
|
446
446
|
|
|
447
447
|
Show changelogs matching search terms (uses pattern-based searching).
|
|
448
|
-
|
|
448
|
+
Add slashes to search with regular expressions, e.g. `--search "/output.*flag/"`
|
|
449
449
|
|
|
450
450
|
[Default Value] None
|
|
451
451
|
|
|
@@ -645,7 +645,7 @@ way to add entries in post and maintain accurate (albeit manual) time tracking.
|
|
|
645
645
|
===== --at|--finished DATE_STRING
|
|
646
646
|
|
|
647
647
|
Set finish date to specific date/time (natural langauge parsed, e.g. --at=1:30pm).
|
|
648
|
-
|
|
648
|
+
Used with --took, backdates start date
|
|
649
649
|
|
|
650
650
|
[Default Value] None
|
|
651
651
|
|
|
@@ -660,7 +660,7 @@ Backdate start date for new entry to date string [4pm|20m|2h|yesterday noon]
|
|
|
660
660
|
===== --from TIME_RANGE
|
|
661
661
|
|
|
662
662
|
Start and end times as a date/time range `doing done --from "1am to 8am"`.
|
|
663
|
-
|
|
663
|
+
Overrides other date flags.
|
|
664
664
|
|
|
665
665
|
[Default Value] None
|
|
666
666
|
[Must Match] (?i-mx:^\S+.*? +(?:to|through|thru|(?:un)?til|-+) +\S+.*?$)
|
|
@@ -683,8 +683,8 @@ Section
|
|
|
683
683
|
===== -t|--took|--for INTERVAL
|
|
684
684
|
|
|
685
685
|
Set completion date to start date plus interval (XX[mhd] or HH:MM).
|
|
686
|
-
|
|
687
|
-
|
|
686
|
+
If used without the --back option, the start date will be moved back to allow
|
|
687
|
+
the completion date to be the current time.
|
|
688
688
|
|
|
689
689
|
[Default Value] None
|
|
690
690
|
|
|
@@ -731,7 +731,8 @@ Marks the last X entries with a @done tag and current date. Does not alter alrea
|
|
|
731
731
|
===== Options
|
|
732
732
|
===== --at|--finished DATE_STRING
|
|
733
733
|
|
|
734
|
-
Set finish date to specific date/time (natural langauge parsed, e.g. --at=1:30pm).
|
|
734
|
+
Set finish date to specific date/time (natural langauge parsed, e.g. --at=1:30pm).
|
|
735
|
+
Used with --took, backdates start date
|
|
735
736
|
|
|
736
737
|
[Default Value] None
|
|
737
738
|
|
|
@@ -759,6 +760,15 @@ Case sensitivity for search string matching [(c)ase-sensitive, (i)gnore, (s)mart
|
|
|
759
760
|
[Must Match] (?i-mx:^[cis].*?$)
|
|
760
761
|
|
|
761
762
|
|
|
763
|
+
===== --from TIME_RANGE
|
|
764
|
+
|
|
765
|
+
Start and end times as a date/time range `doing done --from "1am to 8am"`.
|
|
766
|
+
Overrides other date flags.
|
|
767
|
+
|
|
768
|
+
[Default Value] None
|
|
769
|
+
[Must Match] (?i-mx:^\S+.*? +(?:to|through|thru|(?:un)?til|-+) +\S+.*?$)
|
|
770
|
+
|
|
771
|
+
|
|
762
772
|
===== -s|--section NAME
|
|
763
773
|
|
|
764
774
|
Section
|
|
@@ -776,7 +786,9 @@ Filter entries using a search query, surround with slashes for regex (e.g. "/que
|
|
|
776
786
|
|
|
777
787
|
===== -t|--took|--for INTERVAL
|
|
778
788
|
|
|
779
|
-
Set
|
|
789
|
+
Set completion date to start date plus interval (XX[mhd] or HH:MM).
|
|
790
|
+
If used without the --back option, the start date will be moved back to allow
|
|
791
|
+
the completion date to be the current time.
|
|
780
792
|
|
|
781
793
|
[Default Value] None
|
|
782
794
|
|
|
@@ -804,8 +816,8 @@ Archive entries
|
|
|
804
816
|
|
|
805
817
|
===== --auto
|
|
806
818
|
Auto-generate finish dates from next entry's start time.
|
|
807
|
-
|
|
808
|
-
|
|
819
|
+
Automatically generate completion dates 1 minute before next item (in any section) began.
|
|
820
|
+
--auto overrides the --date and --back parameters.
|
|
809
821
|
|
|
810
822
|
|
|
811
823
|
|
|
@@ -1144,6 +1156,13 @@ Output using a template from configuration
|
|
|
1144
1156
|
[Default Value] last
|
|
1145
1157
|
|
|
1146
1158
|
|
|
1159
|
+
===== -o|--output FORMAT
|
|
1160
|
+
|
|
1161
|
+
Output to export format (csv|dayone|dayone-days|dayone-entries|doing|html|json|markdown|say|taskpaper|template|timeline|wiki)
|
|
1162
|
+
|
|
1163
|
+
[Default Value] None
|
|
1164
|
+
|
|
1165
|
+
|
|
1147
1166
|
===== -s|--section NAME
|
|
1148
1167
|
|
|
1149
1168
|
Specify a section
|
|
@@ -1463,7 +1482,7 @@ Backdate start date for new entry to date string [4pm|20m|2h|yesterday noon]
|
|
|
1463
1482
|
===== --from TIME_RANGE
|
|
1464
1483
|
|
|
1465
1484
|
Set a start and optionally end time as a date range ("from 1pm to 2:30pm").
|
|
1466
|
-
|
|
1485
|
+
If an end time is provided, a dated @done tag will be added
|
|
1467
1486
|
|
|
1468
1487
|
[Default Value] None
|
|
1469
1488
|
|
|
@@ -1706,6 +1725,13 @@ Output using a template from configuration
|
|
|
1706
1725
|
[Default Value] recent
|
|
1707
1726
|
|
|
1708
1727
|
|
|
1728
|
+
===== -o|--output FORMAT
|
|
1729
|
+
|
|
1730
|
+
Output to export format (csv|dayone|dayone-days|dayone-entries|doing|html|json|markdown|say|taskpaper|template|timeline|wiki)
|
|
1731
|
+
|
|
1732
|
+
[Default Value] None
|
|
1733
|
+
|
|
1734
|
+
|
|
1709
1735
|
===== -s|--section NAME
|
|
1710
1736
|
|
|
1711
1737
|
Section
|
|
@@ -1801,6 +1827,15 @@ Case sensitivity for search string matching [(c)ase-sensitive, (i)gnore, (s)mart
|
|
|
1801
1827
|
[Must Match] (?i-mx:^[cis].*?$)
|
|
1802
1828
|
|
|
1803
1829
|
|
|
1830
|
+
===== --from TIME_RANGE
|
|
1831
|
+
|
|
1832
|
+
Start and end times as a date/time range `doing done --from "1am to 8am"`.
|
|
1833
|
+
Overrides any date argument and disables --resume.
|
|
1834
|
+
|
|
1835
|
+
[Default Value] None
|
|
1836
|
+
[Must Match] (?i-mx:^\S+.*? +(?:to|through|thru|(?:un)?til|-+) +\S+.*?$)
|
|
1837
|
+
|
|
1838
|
+
|
|
1804
1839
|
===== -s|--section NAME
|
|
1805
1840
|
|
|
1806
1841
|
Limit search to section
|
|
@@ -1816,6 +1851,13 @@ Filter entries using a search query, surround with slashes for regex (e.g. "/que
|
|
|
1816
1851
|
[Default Value] None
|
|
1817
1852
|
|
|
1818
1853
|
|
|
1854
|
+
===== -t|--took|--for INTERVAL
|
|
1855
|
+
|
|
1856
|
+
Set completion date to start date plus interval (XX[mhd] or HH:MM). Disables --resume
|
|
1857
|
+
|
|
1858
|
+
[Default Value] None
|
|
1859
|
+
|
|
1860
|
+
|
|
1819
1861
|
===== --tag TAG
|
|
1820
1862
|
|
|
1821
1863
|
Filter entries by tag. Combine multiple tags with a comma. Wildcards allowed (*, ?)
|
|
@@ -2586,11 +2628,21 @@ Adds default_tags to a .doingrc file in the current directory. Any entry created
|
|
|
2586
2628
|
subdirectories will be tagged with the default tags. You can modify these any time using the `config set` commnand or
|
|
2587
2629
|
manually editing the .doingrc file.
|
|
2588
2630
|
===== Options
|
|
2589
|
-
=====
|
|
2631
|
+
===== --clear
|
|
2590
2632
|
Remove all default_tags from the local .doingrc
|
|
2591
2633
|
|
|
2592
2634
|
|
|
2593
2635
|
|
|
2636
|
+
===== -e|--editor
|
|
2637
|
+
Use default editor to edit tag list
|
|
2638
|
+
|
|
2639
|
+
|
|
2640
|
+
|
|
2641
|
+
===== -r|--remove
|
|
2642
|
+
Delete tag(s) from the current list
|
|
2643
|
+
|
|
2644
|
+
|
|
2645
|
+
|
|
2594
2646
|
==== Command: <tt>tags [MAX_COUNT]</tt>
|
|
2595
2647
|
List all tags in the current Doing file
|
|
2596
2648
|
|
data/lib/completion/_doing.zsh
CHANGED
|
@@ -108,7 +108,7 @@ function _doing() {
|
|
|
108
108
|
args=( {'(--noauto)-X','(-X)--noauto'}"[Exclude auto tags and default tags]" {'(--archive)-a','(-a)--archive'}"[Immediately archive the entry]" "--ask[Prompt for note via multi-line input]" "--finished[Set finish date to specific date/time]:DATE_STRING:" "--started[Backdate start date for new entry to date string (4pm|20m|2h|yesterday noon)]:DATE_STRING:" "--date[Include date]" {'(--editor)-e','(-e)--editor'}"[Edit entry with vim]" "--from[Start and end times as a date/time range `doing done --from "1am to 8am"`]:TIME_RANGE:" {'(--note)-n','(-n)--note'}"[Include a note]:TEXT:" {'(--remove)-r','(-r)--remove'}"[Remove @done tag]" {'(--section)-s','(-s)--section'}"[Section]:NAME:" "--for[Set completion date to start date plus interval]:INTERVAL:" {'(--unfinished)-u','(-u)--unfinished'}"[Finish last entry not already marked @done]" )
|
|
109
109
|
;;
|
|
110
110
|
finish)
|
|
111
|
-
args=( {'(--archive)-a','(-a)--archive'}"[Archive entries]" "--finished[Set finish date to specific date/time]:DATE_STRING:" "--auto[Auto-generate finish dates from next entrys start times start time]" "--started[Backdate completed date to date string (4pm|20m|2h|yesterday noon)]:DATE_STRING:" "--bool[Boolean used to combine multiple tags]:BOOLEAN:" "--case[Case sensitivity for search string matching ((c)ase-sensitive]:TYPE:" "--date[Include date]" {'(--interactive)-i','(-i)--interactive'}"[Select item(s) to finish from a menu of matching entries]" "--not[Finish items that *dont* match search/tag filterst* match search/tag filters]" {'(--remove)-r','(-r)--remove'}"[Remove @done tag]" {'(--section)-s','(-s)--section'}"[Section]:NAME:" "--search[Filter entries using a search query]:QUERY:" "--for[Set
|
|
111
|
+
args=( {'(--archive)-a','(-a)--archive'}"[Archive entries]" "--finished[Set finish date to specific date/time]:DATE_STRING:" "--auto[Auto-generate finish dates from next entrys start times start time]" "--started[Backdate completed date to date string (4pm|20m|2h|yesterday noon)]:DATE_STRING:" "--bool[Boolean used to combine multiple tags]:BOOLEAN:" "--case[Case sensitivity for search string matching ((c)ase-sensitive]:TYPE:" "--date[Include date]" "--from[Start and end times as a date/time range `doing done --from "1am to 8am"`]:TIME_RANGE:" {'(--interactive)-i','(-i)--interactive'}"[Select item(s) to finish from a menu of matching entries]" "--not[Finish items that *dont* match search/tag filterst* match search/tag filters]" {'(--remove)-r','(-r)--remove'}"[Remove @done tag]" {'(--section)-s','(-s)--section'}"[Section]:NAME:" "--search[Filter entries using a search query]:QUERY:" "--for[Set completion date to start date plus interval]:INTERVAL:" "--tag[Filter entries by tag]:TAG:" {'(--unfinished)-u','(-u)--unfinished'}"[Finish last entry]" "--update[Overwrite existing @done tag with new date]" "--val[Perform a tag value query]:QUERY:" {'(--exact)-x','(-x)--exact'}"[Force exact search string matching]" )
|
|
112
112
|
;;
|
|
113
113
|
grep)
|
|
114
114
|
args=( "--after[Search entries newer than date]:DATE_STRING:" "--before[Search entries older than date]:DATE_STRING:" "--bool[Boolean used to combine multiple tags]:BOOLEAN:" "--case[Case sensitivity for search string matching ((c)ase-sensitive]:TYPE:" "--config_template[Output using a template from configuration]:TEMPLATE_KEY:" {'(--delete)-d','(-d)--delete'}"[Delete matching entries]" "--duration[Show elapsed time on entries without @done tag]" {'(--editor)-e','(-e)--editor'}"[Edit matching entries with vim]" "--from[Date range]:DATE_OR_RANGE:" {'(--hilite)-h','(-h)--hilite'}"[Highlight search matches in output]" {'(--interactive)-i','(-i)--interactive'}"[Display an interactive menu of results to perform further operations]" "--not[Search items that *dont* match search/tag filterst* match search/tag filters]" {'(--output)-o','(-o)--output'}"[Output to export format]:FORMAT:" "--only_timed[Only show items with recorded time intervals]" {'(--section)-s','(-s)--section'}"[Section]:NAME:" {'(--times)-t','(-t)--times'}"[Show time intervals on @done tasks]" "--tag[Filter entries by tag]:TAG:" "--tag_order[Tag sort direction]:DIRECTION:" "--tag_sort[Sort tags by]:KEY:" "--template[Override output format with a template string containing %placeholders]:TEMPLATE_STRING:" "--totals[Show time totals at the end of output]" "--val[Perform a tag value query]:QUERY:" {'(--exact)-x','(-x)--exact'}"[Force exact string matching]" )
|
|
@@ -123,7 +123,7 @@ function _doing() {
|
|
|
123
123
|
args=( "--after[Import entries newer than date]:DATE_STRING:" "--autotag[Autotag entries]" "--before[Import entries older than date]:DATE_STRING:" "--case[Case sensitivity for search string matching ((c)ase-sensitive]:TYPE:" "--from[Date range]:DATE_OR_RANGE:" "--not[Import items that *dont* match search/tag/date filterst* match search/tag/date filters]" "--only_timed[Only import items with recorded time intervals]" "--overlap[Allow entries that overlap existing times]" "--prefix[Prefix entries with]:PREFIX:" {'(--section)-s','(-s)--section'}"[Target section]:NAME:" "--search[Filter entries using a search query]:QUERY:" {'(--tag)-t','(-t)--tag'}"[Tag all imported entries]:TAGS:" "--type[Import type]:TYPE:" {'(--exact)-x','(-x)--exact'}"[Force exact search string matching]" )
|
|
124
124
|
;;
|
|
125
125
|
last)
|
|
126
|
-
args=( "--bool[Boolean used to combine multiple tags]:BOOLEAN:" "--case[Case sensitivity for search string matching ((c)ase-sensitive]:TYPE:" "--config_template[Output using a template from configuration]:TEMPLATE_KEY:" {'(--delete)-d','(-d)--delete'}"[Delete the last entry]" "--duration[Show elapsed time if entry is not tagged @done]" {'(--editor)-e','(-e)--editor'}"[Edit entry with vim]" {'(--hilite)-h','(-h)--hilite'}"[Highlight search matches in output]" "--not[Show items that *dont* match search/tag filterst* match search/tag filters]" {'(--section)-s','(-s)--section'}"[Specify a section]:NAME:" "--search[Filter entries using a search query]:QUERY:" "--tag[Filter entries by tag]:TAG:" "--template[Override output format with a template string containing %placeholders]:TEMPLATE_STRING:" "--val[Perform a tag value query]:QUERY:" {'(--exact)-x','(-x)--exact'}"[Force exact search string matching]" )
|
|
126
|
+
args=( "--bool[Boolean used to combine multiple tags]:BOOLEAN:" "--case[Case sensitivity for search string matching ((c)ase-sensitive]:TYPE:" "--config_template[Output using a template from configuration]:TEMPLATE_KEY:" {'(--delete)-d','(-d)--delete'}"[Delete the last entry]" "--duration[Show elapsed time if entry is not tagged @done]" {'(--editor)-e','(-e)--editor'}"[Edit entry with vim]" {'(--hilite)-h','(-h)--hilite'}"[Highlight search matches in output]" "--not[Show items that *dont* match search/tag filterst* match search/tag filters]" {'(--output)-o','(-o)--output'}"[Output to export format]:FORMAT:" {'(--section)-s','(-s)--section'}"[Specify a section]:NAME:" "--search[Filter entries using a search query]:QUERY:" "--tag[Filter entries by tag]:TAG:" "--template[Override output format with a template string containing %placeholders]:TEMPLATE_STRING:" "--val[Perform a tag value query]:QUERY:" {'(--exact)-x','(-x)--exact'}"[Force exact search string matching]" )
|
|
127
127
|
;;
|
|
128
128
|
mark)
|
|
129
129
|
args=( "--bool[Boolean used to combine multiple tags]:BOOLEAN:" {'(--count)-c','(-c)--count'}"[How many recent entries to tag]:COUNT:" "--case[Case sensitivity for search string matching ((c)ase-sensitive]:TYPE:" {'(--date)-d','(-d)--date'}"[Include current date/time with tag]" "--force[Dont ask permission to flag all entries when count is 0t ask permission to flag all entries when count is 0]" {'(--interactive)-i','(-i)--interactive'}"[Select item(s) to flag from a menu of matching entries]" "--not[Flag items that *dont* match search/tag filterst* match search/tag filters]" {'(--remove)-r','(-r)--remove'}"[Remove flag]" {'(--section)-s','(-s)--section'}"[Section]:SECTION_NAME:" "--search[Filter entries using a search query]:QUERY:" "--tag[Filter entries by tag]:TAG:" {'(--unfinished)-u','(-u)--unfinished'}"[Flag last entry]" "--val[Perform a tag value query]:QUERY:" {'(--exact)-x','(-x)--exact'}"[Force exact search string matching]" )
|
|
@@ -153,16 +153,16 @@ function _doing() {
|
|
|
153
153
|
args=( {'(--column)-c','(-c)--column'}"[List in single column for completion]" {'(--type)-t','(-t)--type'}"[List plugins of type]:TYPE:" )
|
|
154
154
|
;;
|
|
155
155
|
recent)
|
|
156
|
-
args=( "--config_template[Output using a template from configuration]:TEMPLATE_KEY:" "--duration[Show elapsed time on entries without @done tag]" {'(--interactive)-i','(-i)--interactive'}"[Select from a menu of matching entries to perform additional operations]" "--only_timed[Only show items with recorded time intervals]" {'(--section)-s','(-s)--section'}"[Section]:NAME:" {'(--times)-t','(-t)--times'}"[Show time intervals on @done tasks]" "--tag_order[Tag sort direction]:DIRECTION:" "--tag_sort[Sort tags by]:KEY:" "--template[Override output format with a template string containing %placeholders]:TEMPLATE_STRING:" "--totals[Show time totals at the end of output]" )
|
|
156
|
+
args=( "--config_template[Output using a template from configuration]:TEMPLATE_KEY:" "--duration[Show elapsed time on entries without @done tag]" {'(--interactive)-i','(-i)--interactive'}"[Select from a menu of matching entries to perform additional operations]" {'(--output)-o','(-o)--output'}"[Output to export format]:FORMAT:" "--only_timed[Only show items with recorded time intervals]" {'(--section)-s','(-s)--section'}"[Section]:NAME:" {'(--times)-t','(-t)--times'}"[Show time intervals on @done tasks]" "--tag_order[Tag sort direction]:DIRECTION:" "--tag_sort[Sort tags by]:KEY:" "--template[Override output format with a template string containing %placeholders]:TEMPLATE_STRING:" "--totals[Show time totals at the end of output]" )
|
|
157
157
|
;;
|
|
158
158
|
redo)
|
|
159
159
|
args=( {'(--file)-f','(-f)--file'}"[Specify alternate doing file]:PATH:" {'(--interactive)-i','(-i)--interactive'}"[Select from an interactive menu]" )
|
|
160
160
|
;;
|
|
161
161
|
reset)
|
|
162
|
-
args=( "--bool[Boolean used to combine multiple tags]:BOOLEAN:" "--case[Case sensitivity for search string matching ((c)ase-sensitive]:TYPE:" {'(--interactive)-i','(-i)--interactive'}"[Select from a menu of matching entries]" "--not[Reset items that *dont* match search/tag filterst* match search/tag filters]" {'(--resume)-r','(-r)--resume'}"[Resume entry]" {'(--section)-s','(-s)--section'}"[Limit search to section]:NAME:" "--search[Filter entries using a search query]:QUERY:" "--tag[Filter entries by tag]:TAG:" "--val[Perform a tag value query]:QUERY:" {'(--exact)-x','(-x)--exact'}"[Force exact search string matching]" )
|
|
162
|
+
args=( "--bool[Boolean used to combine multiple tags]:BOOLEAN:" "--case[Case sensitivity for search string matching ((c)ase-sensitive]:TYPE:" "--from[Start and end times as a date/time range `doing done --from "1am to 8am"`]:TIME_RANGE:" {'(--interactive)-i','(-i)--interactive'}"[Select from a menu of matching entries]" "--not[Reset items that *dont* match search/tag filterst* match search/tag filters]" {'(--resume)-r','(-r)--resume'}"[Resume entry]" {'(--section)-s','(-s)--section'}"[Limit search to section]:NAME:" "--search[Filter entries using a search query]:QUERY:" "--for[Set completion date to start date plus interval]:INTERVAL:" "--tag[Filter entries by tag]:TAG:" "--val[Perform a tag value query]:QUERY:" {'(--exact)-x','(-x)--exact'}"[Force exact search string matching]" )
|
|
163
163
|
;;
|
|
164
164
|
begin)
|
|
165
|
-
args=( "--bool[Boolean used to combine multiple tags]:BOOLEAN:" "--case[Case sensitivity for search string matching ((c)ase-sensitive]:TYPE:" {'(--interactive)-i','(-i)--interactive'}"[Select from a menu of matching entries]" "--not[Reset items that *dont* match search/tag filterst* match search/tag filters]" {'(--resume)-r','(-r)--resume'}"[Resume entry]" {'(--section)-s','(-s)--section'}"[Limit search to section]:NAME:" "--search[Filter entries using a search query]:QUERY:" "--tag[Filter entries by tag]:TAG:" "--val[Perform a tag value query]:QUERY:" {'(--exact)-x','(-x)--exact'}"[Force exact search string matching]" )
|
|
165
|
+
args=( "--bool[Boolean used to combine multiple tags]:BOOLEAN:" "--case[Case sensitivity for search string matching ((c)ase-sensitive]:TYPE:" "--from[Start and end times as a date/time range `doing done --from "1am to 8am"`]:TIME_RANGE:" {'(--interactive)-i','(-i)--interactive'}"[Select from a menu of matching entries]" "--not[Reset items that *dont* match search/tag filterst* match search/tag filters]" {'(--resume)-r','(-r)--resume'}"[Resume entry]" {'(--section)-s','(-s)--section'}"[Limit search to section]:NAME:" "--search[Filter entries using a search query]:QUERY:" "--for[Set completion date to start date plus interval]:INTERVAL:" "--tag[Filter entries by tag]:TAG:" "--val[Perform a tag value query]:QUERY:" {'(--exact)-x','(-x)--exact'}"[Force exact search string matching]" )
|
|
166
166
|
;;
|
|
167
167
|
rotate)
|
|
168
168
|
args=( "--before[Rotate entries older than date]:DATE_STRING:" "--bool[Boolean used to combine multiple tags]:BOOLEAN:" "--case[Case sensitivity for search string matching ((c)ase-sensitive]:TYPE:" {'(--keep)-k','(-k)--keep'}"[How many items to keep in each section]:X:" "--not[Rotate items that *dont* match search/tag filterst* match search/tag filters]" {'(--section)-s','(-s)--section'}"[Section to rotate]:SECTION_NAME:" "--search[Filter entries using a search query]:QUERY:" "--tag[Filter entries by tag]:TAG:" "--val[Perform a tag value query]:QUERY:" {'(--exact)-x','(-x)--exact'}"[Force exact search string matching]" )
|
|
@@ -183,7 +183,7 @@ function _doing() {
|
|
|
183
183
|
args=( {'(--autotag)-a','(-a)--autotag'}"[Autotag entries based on autotag configuration in ~/]" "--bool[Boolean used to combine multiple tags]:BOOLEAN:" {'(--count)-c','(-c)--count'}"[How many recent entries to tag]:COUNT:" "--case[Case sensitivity for search string matching ((c)ase-sensitive]:TYPE:" {'(--date)-d','(-d)--date'}"[Include current date/time with tag]" "--force[Dont ask permission to tag all entries when count is 0t ask permission to tag all entries when count is 0]" {'(--interactive)-i','(-i)--interactive'}"[Select item(s) to tag from a menu of matching entries]" "--not[Tag items that *dont* match search/tag filterst* match search/tag filters]" {'(--remove)-r','(-r)--remove'}"[Remove given tag(s)]" "--regex[Interpret tag string as regular expression]" "--rename[Replace existing tag with tag argument]:ORIG_TAG:" {'(--section)-s','(-s)--section'}"[Section]:SECTION_NAME:" "--search[Filter entries using a search query]:QUERY:" "--tag[Filter entries by tag]:TAG:" {'(--unfinished)-u','(-u)--unfinished'}"[Tag last entry]" {'(--value)-v','(-v)--value'}"[Include a value]:VALUE:" "--val[Perform a tag value query]:QUERY:" {'(--exact)-x','(-x)--exact'}"[Force exact search string matching]" )
|
|
184
184
|
;;
|
|
185
185
|
tag_dir)
|
|
186
|
-
args=( {'(--remove)-r','(-r)--remove'}"[
|
|
186
|
+
args=( "--clear[Remove all default_tags from the local]" {'(--editor)-e','(-e)--editor'}"[Use default editor to edit tag list]" {'(--remove)-r','(-r)--remove'}"[Delete tag(s) from the current list]" )
|
|
187
187
|
;;
|
|
188
188
|
tags)
|
|
189
189
|
args=( "--bool[Boolean used to combine multiple tags]:BOOLEAN:" {'(--counts)-c','(-c)--counts'}"[Show count of occurrences]" "--case[Case sensitivity for search string matching ((c)ase-sensitive]:TYPE:" {'(--interactive)-i','(-i)--interactive'}"[Select items to scan from a menu of matching entries]" {'(--line)-l','(-l)--line'}"[Output in a single line with @ symbols]" "--not[Show items that *dont* match search/tag filterst* match search/tag filters]" {'(--order)-o','(-o)--order'}"[Sort order]:ORDER:" {'(--section)-s','(-s)--section'}"[Section]:SECTION_NAME:" "--search[Filter entries using a search query]:QUERY:" "--sort[Sort by name or count]:SORT_ORDER:" "--tag[Filter entries by tag]:TAG:" "--val[Perform a tag value query]:QUERY:" {'(--exact)-x','(-x)--exact'}"[Force exact search string matching]" )
|
data/lib/completion/doing.bash
CHANGED
|
@@ -101,9 +101,9 @@ _doing_done() {
|
|
|
101
101
|
_doing_finish() {
|
|
102
102
|
|
|
103
103
|
if [[ "$token" == --* ]]; then
|
|
104
|
-
COMPREPLY=( $( compgen -W '--archive --finished --auto --started --bool --case --date --interactive --not --remove --section --search --for --tag --unfinished --update --val --exact' -- $token ) )
|
|
104
|
+
COMPREPLY=( $( compgen -W '--archive --finished --auto --started --bool --case --date --from --interactive --not --remove --section --search --for --tag --unfinished --update --val --exact' -- $token ) )
|
|
105
105
|
elif [[ "$token" == -* ]]; then
|
|
106
|
-
COMPREPLY=( $( compgen -W '-a -i -r -s -u -x --archive --finished --auto --started --bool --case --date --interactive --not --remove --section --search --for --tag --unfinished --update --val --exact' -- $token ) )
|
|
106
|
+
COMPREPLY=( $( compgen -W '-a -i -r -s -u -x --archive --finished --auto --started --bool --case --date --from --interactive --not --remove --section --search --for --tag --unfinished --update --val --exact' -- $token ) )
|
|
107
107
|
|
|
108
108
|
fi
|
|
109
109
|
}
|
|
@@ -141,9 +141,9 @@ _doing_import() {
|
|
|
141
141
|
_doing_last() {
|
|
142
142
|
|
|
143
143
|
if [[ "$token" == --* ]]; then
|
|
144
|
-
COMPREPLY=( $( compgen -W '--bool --case --config_template --delete --duration --editor --hilite --not --section --search --tag --template --val --exact' -- $token ) )
|
|
144
|
+
COMPREPLY=( $( compgen -W '--bool --case --config_template --delete --duration --editor --hilite --not --output --section --search --tag --template --val --exact' -- $token ) )
|
|
145
145
|
elif [[ "$token" == -* ]]; then
|
|
146
|
-
COMPREPLY=( $( compgen -W '-d -e -h -s -x --bool --case --config_template --delete --duration --editor --hilite --not --section --search --tag --template --val --exact' -- $token ) )
|
|
146
|
+
COMPREPLY=( $( compgen -W '-d -e -h -o -s -x --bool --case --config_template --delete --duration --editor --hilite --not --output --section --search --tag --template --val --exact' -- $token ) )
|
|
147
147
|
|
|
148
148
|
fi
|
|
149
149
|
}
|
|
@@ -221,9 +221,9 @@ _doing_plugins() {
|
|
|
221
221
|
_doing_recent() {
|
|
222
222
|
|
|
223
223
|
if [[ "$token" == --* ]]; then
|
|
224
|
-
COMPREPLY=( $( compgen -W '--config_template --duration --interactive --only_timed --section --times --tag_order --tag_sort --template --totals' -- $token ) )
|
|
224
|
+
COMPREPLY=( $( compgen -W '--config_template --duration --interactive --output --only_timed --section --times --tag_order --tag_sort --template --totals' -- $token ) )
|
|
225
225
|
elif [[ "$token" == -* ]]; then
|
|
226
|
-
COMPREPLY=( $( compgen -W '-i -s -t --config_template --duration --interactive --only_timed --section --times --tag_order --tag_sort --template --totals' -- $token ) )
|
|
226
|
+
COMPREPLY=( $( compgen -W '-i -o -s -t --config_template --duration --interactive --output --only_timed --section --times --tag_order --tag_sort --template --totals' -- $token ) )
|
|
227
227
|
|
|
228
228
|
fi
|
|
229
229
|
}
|
|
@@ -241,9 +241,9 @@ _doing_redo() {
|
|
|
241
241
|
_doing_reset() {
|
|
242
242
|
|
|
243
243
|
if [[ "$token" == --* ]]; then
|
|
244
|
-
COMPREPLY=( $( compgen -W '--bool --case --interactive --not --resume --section --search --tag --val --exact' -- $token ) )
|
|
244
|
+
COMPREPLY=( $( compgen -W '--bool --case --from --interactive --not --resume --section --search --for --tag --val --exact' -- $token ) )
|
|
245
245
|
elif [[ "$token" == -* ]]; then
|
|
246
|
-
COMPREPLY=( $( compgen -W '-i -r -s -x --bool --case --interactive --not --resume --section --search --tag --val --exact' -- $token ) )
|
|
246
|
+
COMPREPLY=( $( compgen -W '-i -r -s -x --bool --case --from --interactive --not --resume --section --search --for --tag --val --exact' -- $token ) )
|
|
247
247
|
|
|
248
248
|
fi
|
|
249
249
|
}
|
|
@@ -321,9 +321,9 @@ _doing_tag() {
|
|
|
321
321
|
_doing_tag_dir() {
|
|
322
322
|
|
|
323
323
|
if [[ "$token" == --* ]]; then
|
|
324
|
-
COMPREPLY=( $( compgen -W '--remove' -- $token ) )
|
|
324
|
+
COMPREPLY=( $( compgen -W '--clear --editor --remove' -- $token ) )
|
|
325
325
|
elif [[ "$token" == -* ]]; then
|
|
326
|
-
COMPREPLY=( $( compgen -W '-r --remove' -- $token ) )
|
|
326
|
+
COMPREPLY=( $( compgen -W '-e -r --clear --editor --remove' -- $token ) )
|
|
327
327
|
|
|
328
328
|
fi
|
|
329
329
|
}
|
data/lib/completion/doing.fish
CHANGED
|
@@ -254,12 +254,13 @@ complete -c doing -l started -f -r -n '__fish_doing_using_command finish' -d Ba
|
|
|
254
254
|
complete -c doing -l bool -f -r -n '__fish_doing_using_command finish' -d Boolean\ used\ to\ combine\ multiple\ tags
|
|
255
255
|
complete -c doing -l case -f -r -n '__fish_doing_using_command finish' -d Case\ sensitivity\ for\ search\ string\ matching\ \[\(c\)ase-sensitive
|
|
256
256
|
complete -c doing -l date -f -n '__fish_doing_using_command finish' -d Include\ date
|
|
257
|
+
complete -c doing -l from -f -r -n '__fish_doing_using_command finish' -d Start\ and\ end\ times\ as\ a\ date/time\ range\ \`doing\ done\ --from\ \"1am\ to\ 8am\"\`
|
|
257
258
|
complete -c doing -l interactive -s i -f -n '__fish_doing_using_command finish' -d Select\ item\(s\)\ to\ finish\ from\ a\ menu\ of\ matching\ entries
|
|
258
259
|
complete -c doing -l not -f -n '__fish_doing_using_command finish' -d Finish\ items\ that\ \*don\'t\*\ match\ search/tag\ filters
|
|
259
260
|
complete -c doing -l remove -s r -f -n '__fish_doing_using_command finish' -d Remove\ @done\ tag
|
|
260
261
|
complete -c doing -l section -s s -f -r -n '__fish_doing_using_command finish' -d Section
|
|
261
262
|
complete -c doing -l search -f -r -n '__fish_doing_using_command finish' -d Filter\ entries\ using\ a\ search\ query
|
|
262
|
-
complete -c doing -l for -f -r -n '__fish_doing_using_command finish' -d Set\
|
|
263
|
+
complete -c doing -l for -f -r -n '__fish_doing_using_command finish' -d Set\ completion\ date\ to\ start\ date\ plus\ interval
|
|
263
264
|
complete -c doing -l tag -f -r -n '__fish_doing_using_command finish' -d Filter\ entries\ by\ tag
|
|
264
265
|
complete -c doing -l unfinished -s u -f -n '__fish_doing_using_command finish' -d Finish\ last\ entry
|
|
265
266
|
complete -c doing -l update -f -n '__fish_doing_using_command finish' -d Overwrite\ existing\ @done\ tag\ with\ new\ date
|
|
@@ -311,6 +312,7 @@ complete -c doing -l duration -f -n '__fish_doing_using_command last' -d Show\
|
|
|
311
312
|
complete -c doing -l editor -s e -f -n '__fish_doing_using_command last' -d Edit\ entry\ with\ vim
|
|
312
313
|
complete -c doing -l hilite -s h -f -n '__fish_doing_using_command last' -d Highlight\ search\ matches\ in\ output
|
|
313
314
|
complete -c doing -l not -f -n '__fish_doing_using_command last' -d Show\ items\ that\ \*don\'t\*\ match\ search/tag\ filters
|
|
315
|
+
complete -c doing -l output -s o -f -r -n '__fish_doing_using_command last' -d Output\ to\ export\ format
|
|
314
316
|
complete -c doing -l section -s s -f -r -n '__fish_doing_using_command last' -d Specify\ a\ section
|
|
315
317
|
complete -c doing -l search -f -r -n '__fish_doing_using_command last' -d Filter\ entries\ using\ a\ search\ query
|
|
316
318
|
complete -c doing -l tag -f -r -n '__fish_doing_using_command last' -d Filter\ entries\ by\ tag
|
|
@@ -386,6 +388,7 @@ complete -c doing -l type -s t -f -r -n '__fish_doing_using_command plugins' -d
|
|
|
386
388
|
complete -c doing -l config_template -f -r -n '__fish_doing_using_command recent' -d Output\ using\ a\ template\ from\ configuration
|
|
387
389
|
complete -c doing -l duration -f -n '__fish_doing_using_command recent' -d Show\ elapsed\ time\ on\ entries\ without\ @done\ tag
|
|
388
390
|
complete -c doing -l interactive -s i -f -n '__fish_doing_using_command recent' -d Select\ from\ a\ menu\ of\ matching\ entries\ to\ perform\ additional\ operations
|
|
391
|
+
complete -c doing -l output -s o -f -r -n '__fish_doing_using_command recent' -d Output\ to\ export\ format
|
|
389
392
|
complete -c doing -l only_timed -f -n '__fish_doing_using_command recent' -d Only\ show\ items\ with\ recorded\ time\ intervals
|
|
390
393
|
complete -c doing -l section -s s -f -r -n '__fish_doing_using_command recent' -d Section
|
|
391
394
|
complete -c doing -l times -s t -f -n '__fish_doing_using_command recent' -d Show\ time\ intervals\ on\ @done\ tasks
|
|
@@ -397,11 +400,13 @@ complete -c doing -l file -s f -f -r -n '__fish_doing_using_command redo' -d Spe
|
|
|
397
400
|
complete -c doing -l interactive -s i -f -n '__fish_doing_using_command redo' -d Select\ from\ an\ interactive\ menu
|
|
398
401
|
complete -c doing -l bool -f -r -n '__fish_doing_using_command reset begin' -d Boolean\ used\ to\ combine\ multiple\ tags
|
|
399
402
|
complete -c doing -l case -f -r -n '__fish_doing_using_command reset begin' -d Case\ sensitivity\ for\ search\ string\ matching\ \[\(c\)ase-sensitive
|
|
403
|
+
complete -c doing -l from -f -r -n '__fish_doing_using_command reset begin' -d Start\ and\ end\ times\ as\ a\ date/time\ range\ \`doing\ done\ --from\ \"1am\ to\ 8am\"\`
|
|
400
404
|
complete -c doing -l interactive -s i -f -n '__fish_doing_using_command reset begin' -d Select\ from\ a\ menu\ of\ matching\ entries
|
|
401
405
|
complete -c doing -l not -f -n '__fish_doing_using_command reset begin' -d Reset\ items\ that\ \*don\'t\*\ match\ search/tag\ filters
|
|
402
406
|
complete -c doing -l resume -s r -f -n '__fish_doing_using_command reset begin' -d Resume\ entry
|
|
403
407
|
complete -c doing -l section -s s -f -r -n '__fish_doing_using_command reset begin' -d Limit\ search\ to\ section
|
|
404
408
|
complete -c doing -l search -f -r -n '__fish_doing_using_command reset begin' -d Filter\ entries\ using\ a\ search\ query
|
|
409
|
+
complete -c doing -l for -f -r -n '__fish_doing_using_command reset begin' -d Set\ completion\ date\ to\ start\ date\ plus\ interval
|
|
405
410
|
complete -c doing -l tag -f -r -n '__fish_doing_using_command reset begin' -d Filter\ entries\ by\ tag
|
|
406
411
|
complete -c doing -l val -f -r -n '__fish_doing_using_command reset begin' -d Perform\ a\ tag\ value\ query
|
|
407
412
|
complete -c doing -l exact -s x -f -n '__fish_doing_using_command reset begin' -d Force\ exact\ search\ string\ matching
|
|
@@ -500,7 +505,9 @@ complete -c doing -l unfinished -s u -f -n '__fish_doing_using_command tag' -d
|
|
|
500
505
|
complete -c doing -l value -s v -f -r -n '__fish_doing_using_command tag' -d Include\ a\ value
|
|
501
506
|
complete -c doing -l val -f -r -n '__fish_doing_using_command tag' -d Perform\ a\ tag\ value\ query
|
|
502
507
|
complete -c doing -l exact -s x -f -n '__fish_doing_using_command tag' -d Force\ exact\ search\ string\ matching
|
|
503
|
-
complete -c doing -l
|
|
508
|
+
complete -c doing -l clear -f -n '__fish_doing_using_command tag_dir' -d Remove\ all\ default_tags\ from\ the\ local
|
|
509
|
+
complete -c doing -l editor -s e -f -n '__fish_doing_using_command tag_dir' -d Use\ default\ editor\ to\ edit\ tag\ list
|
|
510
|
+
complete -c doing -l remove -s r -f -n '__fish_doing_using_command tag_dir' -d Delete\ tag\(s\)\ from\ the\ current\ list
|
|
504
511
|
complete -c doing -l bool -f -r -n '__fish_doing_using_command tags' -d Boolean\ used\ to\ combine\ multiple\ tags
|
|
505
512
|
complete -c doing -l counts -s c -f -n '__fish_doing_using_command tags' -d Show\ count\ of\ occurrences
|
|
506
513
|
complete -c doing -l case -f -r -n '__fish_doing_using_command tags' -d Case\ sensitivity\ for\ search\ string\ matching\ \[\(c\)ase-sensitive
|
|
@@ -580,7 +587,7 @@ complete -c doing -l tag_order -f -r -n '__fish_doing_using_command yesterday'
|
|
|
580
587
|
complete -c doing -l tag_sort -f -r -n '__fish_doing_using_command yesterday' -d Sort\ tags\ by
|
|
581
588
|
complete -c doing -l template -f -r -n '__fish_doing_using_command yesterday' -d Override\ output\ format\ with\ a\ template\ string\ containing\ \%placeholders
|
|
582
589
|
complete -c doing -l totals -f -n '__fish_doing_using_command yesterday' -d Show\ time\ totals\ at\ the\ end\ of\ output
|
|
583
|
-
complete -f -c doing -s o -l output -x -n '__fish_doing_using_command grep search on select show since today view yesterday' -a '(__fish_doing_export_plugin)'
|
|
590
|
+
complete -f -c doing -s o -l output -x -n '__fish_doing_using_command grep search last on recent select show since today view yesterday' -a '(__fish_doing_export_plugin)'
|
|
584
591
|
complete -f -c doing -s b -l bool -x -n '__fish_doing_using_command again resume archive move autotag cancel finish grep search last mark flag note on reset begin rotate show since tag tags view wiki' -a 'and or not pattern'
|
|
585
592
|
complete -f -c doing -l case -x -n '__fish_doing_using_command again resume archive move cancel finish grep search import last mark flag note on reset begin rotate select show since tag tags view' -a 'case-sensitive ignore smart'
|
|
586
593
|
complete -f -c doing -l sort -x -n '__fish_doing_using_command changes changelog show tags' -a 'asc desc'
|
data/lib/doing/add_options.rb
CHANGED
|
@@ -3,18 +3,26 @@
|
|
|
3
3
|
##
|
|
4
4
|
## Add presets of flags and switches to a command.
|
|
5
5
|
##
|
|
6
|
+
## :output_template => --output, --config_template, --template
|
|
7
|
+
##
|
|
6
8
|
## :add_entry => --noauto, --note, --ask, --editor, --back
|
|
7
9
|
##
|
|
10
|
+
## :finish_entry => --at/finished, --from, --took
|
|
11
|
+
##
|
|
12
|
+
## :time_display => --times, --duration, --totals, --tag_sort, --tag_order, --only_timed
|
|
13
|
+
##
|
|
8
14
|
## :search => --search, --case, --exact
|
|
9
15
|
##
|
|
10
16
|
## :tag_filter => --tag, --bool, --not, --val
|
|
11
17
|
##
|
|
18
|
+
## :time_filter => --before, --after, --from
|
|
19
|
+
##
|
|
12
20
|
## :date_filter => --before, --after, --from
|
|
13
21
|
##
|
|
14
22
|
## @param type [Symbol] The type
|
|
15
23
|
## @param cmd The GLI command to which the options will be added
|
|
16
24
|
##
|
|
17
|
-
def add_options(type, cmd)
|
|
25
|
+
def add_options(type, cmd, default_template: 'default')
|
|
18
26
|
cmd_name = cmd.name.to_s
|
|
19
27
|
action = case cmd_name
|
|
20
28
|
when /again/
|
|
@@ -30,6 +38,18 @@ def add_options(type, cmd)
|
|
|
30
38
|
end
|
|
31
39
|
|
|
32
40
|
case type
|
|
41
|
+
when :output_template
|
|
42
|
+
cmd.desc "Output to export format (#{Doing::Plugins.plugin_names(type: :export)})"
|
|
43
|
+
cmd.arg_name 'FORMAT'
|
|
44
|
+
cmd.flag %i[o output]
|
|
45
|
+
|
|
46
|
+
cmd.desc "Output using a template from configuration"
|
|
47
|
+
cmd.arg_name 'TEMPLATE_KEY'
|
|
48
|
+
cmd.flag [:config_template], type: TemplateName, default_value: default_template
|
|
49
|
+
|
|
50
|
+
cmd.desc 'Override output format with a template string containing %placeholders'
|
|
51
|
+
cmd.arg_name 'TEMPLATE_STRING'
|
|
52
|
+
cmd.flag [:template]
|
|
33
53
|
when :add_entry
|
|
34
54
|
cmd.desc 'Exclude auto tags and default tags'
|
|
35
55
|
cmd.switch %i[X noauto], default_value: false, negatable: false
|
|
@@ -47,6 +67,24 @@ def add_options(type, cmd)
|
|
|
47
67
|
cmd.desc 'Backdate start date for new entry to date string [4pm|20m|2h|yesterday noon]'
|
|
48
68
|
cmd.arg_name 'DATE_STRING'
|
|
49
69
|
cmd.flag %i[b back started], type: DateBeginString
|
|
70
|
+
when :finish_entry
|
|
71
|
+
cmd.desc %(Set finish date to specific date/time (natural langauge parsed, e.g. --at=1:30pm).
|
|
72
|
+
Used with --took, backdates start date)
|
|
73
|
+
cmd.arg_name 'DATE_STRING'
|
|
74
|
+
cmd.flag %i[at finished], type: DateEndString
|
|
75
|
+
|
|
76
|
+
cmd.desc %(
|
|
77
|
+
Start and end times as a date/time range `doing done --from "1am to 8am"`.
|
|
78
|
+
Overrides other date flags.
|
|
79
|
+
)
|
|
80
|
+
cmd.arg_name 'TIME_RANGE'
|
|
81
|
+
cmd.flag [:from], must_match: REGEX_RANGE
|
|
82
|
+
|
|
83
|
+
cmd.desc %(Set completion date to start date plus interval (XX[mhd] or HH:MM).
|
|
84
|
+
If used without the --back option, the start date will be moved back to allow
|
|
85
|
+
the completion date to be the current time.)
|
|
86
|
+
cmd.arg_name 'INTERVAL'
|
|
87
|
+
cmd.flag %i[t took for], type: DateIntervalString
|
|
50
88
|
when :search
|
|
51
89
|
cmd.desc 'Filter entries using a search query, surround with slashes for regex (e.g. "/query.*/"),
|
|
52
90
|
start with single quote for exact match ("\'query")'
|
data/lib/doing/array/array.rb
CHANGED
|
@@ -2,19 +2,25 @@
|
|
|
2
2
|
|
|
3
3
|
require_relative 'tags'
|
|
4
4
|
require_relative 'nested_hash'
|
|
5
|
+
require_relative 'cleanup'
|
|
5
6
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
self
|
|
7
|
+
module Doing
|
|
8
|
+
class ::Array
|
|
9
|
+
include ArrayTags
|
|
10
|
+
include ArrayNestedHash
|
|
11
|
+
include ArrayCleanup
|
|
12
|
+
##
|
|
13
|
+
## Force UTF-8 encoding of strings in array
|
|
14
|
+
##
|
|
15
|
+
## @return [Array] Encoded lines
|
|
16
|
+
##
|
|
17
|
+
def utf8
|
|
18
|
+
c = self.class
|
|
19
|
+
if String.method_defined? :force_encoding
|
|
20
|
+
replace c.new(map(&:utf8))
|
|
21
|
+
else
|
|
22
|
+
self
|
|
23
|
+
end
|
|
18
24
|
end
|
|
19
25
|
end
|
|
20
26
|
end
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
module Doing
|
|
2
|
+
module ArrayCleanup
|
|
3
|
+
##
|
|
4
|
+
## Like Array#compact -- removes nil items, but also
|
|
5
|
+
## removes empty strings, zero or negative numbers and FalseClass items
|
|
6
|
+
##
|
|
7
|
+
## @return [Array] Array without "bad" elements
|
|
8
|
+
##
|
|
9
|
+
def remove_bad
|
|
10
|
+
compact.map { |x| x.is_a?(String) ? x.strip : x }.select(&:good?)
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def remove_bad!
|
|
14
|
+
replace remove_empty
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
##
|
|
18
|
+
## Like Array#compact -- removes nil items, but also
|
|
19
|
+
## removes empty elements
|
|
20
|
+
##
|
|
21
|
+
## @return [Array] Array without empty elements
|
|
22
|
+
##
|
|
23
|
+
def remove_empty
|
|
24
|
+
compact.map { |x| x.is_a?(String) ? x.strip : x }.reject { |x| x.is_a?(String) ? x.empty? : false }
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def remove_empty!
|
|
28
|
+
replace remove_empty
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
end
|