doing 2.1.39 → 2.1.42
Sign up to get free protection for your applications and to get access to all the features.
- 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
|