doing 2.1.41 → 2.1.44
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/CHANGELOG.md +67 -0
- data/Gemfile.lock +1 -1
- data/README.md +1 -1
- data/bin/commands/again.rb +1 -3
- data/bin/commands/changes.rb +60 -34
- data/bin/commands/commands.rb +77 -52
- data/bin/commands/commands_accepting.rb +57 -53
- data/bin/commands/config.rb +2 -2
- data/bin/commands/finish.rb +94 -68
- data/bin/commands/flag.rb +5 -1
- data/bin/commands/grep.rb +12 -2
- data/bin/commands/last.rb +2 -0
- data/bin/commands/now.rb +151 -107
- data/bin/commands/on.rb +20 -5
- data/bin/commands/recent.rb +4 -1
- data/bin/commands/show.rb +8 -0
- data/bin/commands/since.rb +6 -2
- data/bin/commands/template.rb +14 -25
- data/bin/commands/today.rb +4 -1
- data/bin/commands/undo.rb +4 -6
- data/bin/commands/view.rb +36 -73
- data/bin/commands/views.rb +102 -5
- data/bin/commands/yesterday.rb +3 -1
- data/bin/doing +31 -4
- data/docs/doc/Array.html +14 -3
- 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/ArrayCleanup.html +316 -0
- data/docs/doc/Doing/ArrayNestedHash.html +1 -1
- data/docs/doc/Doing/ArrayTags.html +1 -1
- data/docs/doc/Doing/CSVExport.html +1 -1
- data/docs/doc/Doing/CalendarImport.html +1 -1
- data/docs/doc/Doing/Change.html +74 -3
- data/docs/doc/Doing/Changes.html +3 -3
- data/docs/doc/Doing/ChronifyArray.html +1 -1
- data/docs/doc/Doing/ChronifyNumeric.html +1 -1
- data/docs/doc/Doing/ChronifyString.html +1 -1
- data/docs/doc/Doing/Color.html +1 -1
- data/docs/doc/Doing/Completion/BashCompletions.html +1 -1
- data/docs/doc/Doing/Completion/FishCompletions.html +1 -1
- data/docs/doc/Doing/Completion/StringUtils.html +1 -1
- data/docs/doc/Doing/Completion/ZshCompletions.html +1 -1
- data/docs/doc/Doing/Completion.html +1 -1
- data/docs/doc/Doing/Configuration.html +82 -2
- data/docs/doc/Doing/DayOneRenderer.html +1 -1
- data/docs/doc/Doing/DayoneExport.html +1 -1
- data/docs/doc/Doing/DoingImport.html +1 -1
- data/docs/doc/Doing/Entry.html +109 -4
- data/docs/doc/Doing/Errors/DoingNoTraceError.html +1 -1
- data/docs/doc/Doing/Errors/DoingRuntimeError.html +1 -1
- data/docs/doc/Doing/Errors/DoingStandardError.html +1 -1
- data/docs/doc/Doing/Errors/EmptyInput.html +1 -1
- data/docs/doc/Doing/Errors/HistoryLimitError.html +1 -1
- data/docs/doc/Doing/Errors/InvalidPlugin.html +1 -1
- data/docs/doc/Doing/Errors/MissingBackupFile.html +1 -1
- data/docs/doc/Doing/Errors/NoResults.html +1 -1
- data/docs/doc/Doing/Errors/PluginException.html +1 -1
- data/docs/doc/Doing/Errors/UserCancelled.html +1 -1
- data/docs/doc/Doing/Errors/WrongCommand.html +1 -1
- data/docs/doc/Doing/Errors.html +1 -1
- data/docs/doc/Doing/HTMLExport.html +1 -1
- data/docs/doc/Doing/Hooks.html +1 -1
- data/docs/doc/Doing/Item.html +1 -1
- data/docs/doc/Doing/ItemDates.html +1 -1
- data/docs/doc/Doing/ItemQuery.html +1 -1
- data/docs/doc/Doing/ItemState.html +1 -1
- data/docs/doc/Doing/ItemTags.html +1 -1
- data/docs/doc/Doing/Items.html +2 -1
- data/docs/doc/Doing/JSONExport.html +1 -1
- data/docs/doc/Doing/Logger.html +1 -1
- data/docs/doc/Doing/MarkdownExport.html +1 -1
- data/docs/doc/Doing/Note.html +3 -2
- data/docs/doc/Doing/Pager.html +1 -1
- data/docs/doc/Doing/Plugins.html +181 -76
- data/docs/doc/Doing/Prompt.html +1 -1
- data/docs/doc/Doing/PromptChoose.html +1 -1
- data/docs/doc/Doing/PromptFZF.html +1 -1
- data/docs/doc/Doing/PromptInput.html +1 -1
- data/docs/doc/Doing/PromptSTD.html +1 -1
- data/docs/doc/Doing/PromptYN.html +1 -1
- data/docs/doc/Doing/Section.html +1 -1
- data/docs/doc/Doing/StringHighlight.html +1 -1
- data/docs/doc/Doing/StringNormalize.html +35 -1
- data/docs/doc/Doing/StringQuery.html +1 -1
- data/docs/doc/Doing/StringTags.html +1 -1
- data/docs/doc/Doing/StringTransform.html +35 -1
- data/docs/doc/Doing/StringTruncate.html +1 -1
- data/docs/doc/Doing/StringURL.html +1 -1
- data/docs/doc/Doing/SymbolNormalize.html +1 -1
- data/docs/doc/Doing/TaskPaperExport.html +1 -1
- data/docs/doc/Doing/TemplateExport.html +1 -1
- data/docs/doc/Doing/TemplateString.html +3 -3
- data/docs/doc/Doing/TimingImport.html +1 -1
- data/docs/doc/Doing/Types.html +23 -18
- data/docs/doc/Doing/Util/Backup.html +2 -156
- data/docs/doc/Doing/Util.html +66 -9
- data/docs/doc/Doing/Version.html +1 -1
- data/docs/doc/Doing/WWID.html +84 -3
- data/docs/doc/Doing.html +4 -4
- data/docs/doc/FalseClass.html +11 -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 +461 -6
- data/docs/doc/Numeric.html +1 -1
- 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 +5 -5
- data/docs/doc/Symbol.html +1 -1
- data/docs/doc/Time.html +68 -3
- data/docs/doc/TrueClass.html +11 -1
- data/docs/doc/_index.html +16 -9
- 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 +529 -417
- data/docs/doc/top-level-namespace.html +11 -1
- data/doing.rdoc +169 -13
- data/lib/completion/_doing.zsh +13 -13
- data/lib/completion/doing.bash +22 -22
- data/lib/completion/doing.fish +24 -1
- data/lib/doing/add_options.rb +48 -1
- data/lib/doing/array/array.rb +2 -0
- data/lib/doing/array/cleanup.rb +31 -0
- data/lib/doing/changelog/change.rb +13 -5
- data/lib/doing/changelog/changes.rb +11 -2
- data/lib/doing/changelog/entry.rb +9 -2
- data/lib/doing/configuration.rb +28 -3
- data/lib/doing/good.rb +18 -1
- data/lib/doing/hash.rb +126 -22
- data/lib/doing/normalize.rb +13 -0
- data/lib/doing/note.rb +1 -1
- data/lib/doing/pager.rb +9 -3
- data/lib/doing/plugin_manager.rb +30 -5
- data/lib/doing/prompt/choose.rb +1 -1
- data/lib/doing/prompt/input.rb +1 -1
- data/lib/doing/string/transform.rb +6 -0
- data/lib/doing/types.rb +9 -8
- data/lib/doing/util.rb +12 -6
- data/lib/doing/util_backup.rb +55 -48
- data/lib/doing/version.rb +1 -1
- data/lib/doing/wwid/display.rb +4 -1
- data/lib/doing/wwid/editor.rb +6 -3
- data/lib/doing/wwid/interactive.rb +10 -20
- data/lib/doing/wwid/modify.rb +2 -0
- data/lib/doing/wwid/wwid.rb +21 -3
- data/lib/doing.rb +12 -3
- metadata +4 -2
data/lib/completion/doing.bash
CHANGED
|
@@ -61,9 +61,9 @@ _doing_cancel() {
|
|
|
61
61
|
_doing_changes() {
|
|
62
62
|
|
|
63
63
|
if [[ "$token" == --* ]]; then
|
|
64
|
-
COMPREPLY=( $( compgen -W '--changes --all --interactive --lookup --markdown --render --search --sort' -- $token ) )
|
|
64
|
+
COMPREPLY=( $( compgen -W '--changes --all --interactive --lookup --markdown --only --prefix --render --search --sort' -- $token ) )
|
|
65
65
|
elif [[ "$token" == -* ]]; then
|
|
66
|
-
COMPREPLY=( $( compgen -W '-C -a -i -l -s --changes --all --interactive --lookup --markdown --render --search --sort' -- $token ) )
|
|
66
|
+
COMPREPLY=( $( compgen -W '-C -a -i -l -p -s --changes --all --interactive --lookup --markdown --only --prefix --render --search --sort' -- $token ) )
|
|
67
67
|
|
|
68
68
|
fi
|
|
69
69
|
}
|
|
@@ -111,9 +111,9 @@ _doing_finish() {
|
|
|
111
111
|
_doing_grep() {
|
|
112
112
|
|
|
113
113
|
if [[ "$token" == --* ]]; then
|
|
114
|
-
COMPREPLY=( $( compgen -W '--after --before --bool --case --config_template --delete --duration --editor --from --hilite --interactive --not --output --only_timed --section --times --tag --tag_order --tag_sort --template --totals --val --exact' -- $token ) )
|
|
114
|
+
COMPREPLY=( $( compgen -W '--after --before --bool --case --config_template --delete --duration --editor --from --hilite --interactive --not --output --only_timed --section --save --times --tag --tag_order --tag_sort --template --title --totals --val --exact' -- $token ) )
|
|
115
115
|
elif [[ "$token" == -* ]]; then
|
|
116
|
-
COMPREPLY=( $( compgen -W '-d -e -h -i -o -s -t -x --after --before --bool --case --config_template --delete --duration --editor --from --hilite --interactive --not --output --only_timed --section --times --tag --tag_order --tag_sort --template --totals --val --exact' -- $token ) )
|
|
116
|
+
COMPREPLY=( $( compgen -W '-d -e -h -i -o -s -t -x --after --before --bool --case --config_template --delete --duration --editor --from --hilite --interactive --not --output --only_timed --section --save --times --tag --tag_order --tag_sort --template --title --totals --val --exact' -- $token ) )
|
|
117
117
|
|
|
118
118
|
fi
|
|
119
119
|
}
|
|
@@ -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 --output --section --search --tag --template --val --exact' -- $token ) )
|
|
144
|
+
COMPREPLY=( $( compgen -W '--bool --case --config_template --delete --duration --editor --hilite --not --output --section --save --search --tag --template --title --val --exact' -- $token ) )
|
|
145
145
|
elif [[ "$token" == -* ]]; then
|
|
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 ) )
|
|
146
|
+
COMPREPLY=( $( compgen -W '-d -e -h -o -s -x --bool --case --config_template --delete --duration --editor --hilite --not --output --section --save --search --tag --template --title --val --exact' -- $token ) )
|
|
147
147
|
|
|
148
148
|
fi
|
|
149
149
|
}
|
|
@@ -191,9 +191,9 @@ _doing_now() {
|
|
|
191
191
|
_doing_on() {
|
|
192
192
|
|
|
193
193
|
if [[ "$token" == --* ]]; then
|
|
194
|
-
COMPREPLY=( $( compgen -W '--after --before --bool --case --config_template --duration --from --not --output --only_timed --section --search --times --tag --tag_order --tag_sort --template --totals --val --exact' -- $token ) )
|
|
194
|
+
COMPREPLY=( $( compgen -W '--after --before --bool --case --config_template --duration --from --not --output --only_timed --section --save --search --times --tag --tag_order --tag_sort --template --title --totals --val --exact' -- $token ) )
|
|
195
195
|
elif [[ "$token" == -* ]]; then
|
|
196
|
-
COMPREPLY=( $( compgen -W '-o -s -t -x --after --before --bool --case --config_template --duration --from --not --output --only_timed --section --search --times --tag --tag_order --tag_sort --template --totals --val --exact' -- $token ) )
|
|
196
|
+
COMPREPLY=( $( compgen -W '-o -s -t -x --after --before --bool --case --config_template --duration --from --not --output --only_timed --section --save --search --times --tag --tag_order --tag_sort --template --title --totals --val --exact' -- $token ) )
|
|
197
197
|
|
|
198
198
|
fi
|
|
199
199
|
}
|
|
@@ -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 --output --only_timed --section --times --tag_order --tag_sort --template --totals' -- $token ) )
|
|
224
|
+
COMPREPLY=( $( compgen -W '--config_template --duration --interactive --output --only_timed --section --save --times --tag_order --tag_sort --template --title --totals' -- $token ) )
|
|
225
225
|
elif [[ "$token" == -* ]]; then
|
|
226
|
-
COMPREPLY=( $( compgen -W '-i -o -s -t --config_template --duration --interactive --output --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 --save --times --tag_order --tag_sort --template --title --totals' -- $token ) )
|
|
227
227
|
|
|
228
228
|
fi
|
|
229
229
|
}
|
|
@@ -276,9 +276,9 @@ local words=$(doing sections)
|
|
|
276
276
|
IFS="$OLD_IFS"
|
|
277
277
|
|
|
278
278
|
if [[ "$token" == --* ]]; then
|
|
279
|
-
COMPREPLY=( $( compgen -W '--age --after --before --bool --count --case --config_template --duration --editor --from --hilite --interactive --menu --not --output --only_timed --sort --search --times --tag --tag_order --tag_sort --template --totals --val --exact' -- $token ) )
|
|
279
|
+
COMPREPLY=( $( compgen -W '--age --after --before --bool --count --case --config_template --duration --editor --from --hilite --interactive --menu --not --output --only_timed --sort --save --search --times --tag --tag_order --tag_sort --template --title --totals --val --exact' -- $token ) )
|
|
280
280
|
elif [[ "$token" == -* ]]; then
|
|
281
|
-
COMPREPLY=( $( compgen -W '-a -c -e -h -i -m -o -s -t -x --age --after --before --bool --count --case --config_template --duration --editor --from --hilite --interactive --menu --not --output --only_timed --sort --search --times --tag --tag_order --tag_sort --template --totals --val --exact' -- $token ) )
|
|
281
|
+
COMPREPLY=( $( compgen -W '-a -c -e -h -i -m -o -s -t -x --age --after --before --bool --count --case --config_template --duration --editor --from --hilite --interactive --menu --not --output --only_timed --sort --save --search --times --tag --tag_order --tag_sort --template --title --totals --val --exact' -- $token ) )
|
|
282
282
|
else
|
|
283
283
|
local nocasematchWasOff=0
|
|
284
284
|
shopt nocasematch >/dev/null || nocasematchWasOff=1
|
|
@@ -301,9 +301,9 @@ IFS="$OLD_IFS"
|
|
|
301
301
|
_doing_since() {
|
|
302
302
|
|
|
303
303
|
if [[ "$token" == --* ]]; then
|
|
304
|
-
COMPREPLY=( $( compgen -W '--bool --case --config_template --duration --not --output --only_timed --section --search --times --tag --tag_order --tag_sort --template --totals --val --exact' -- $token ) )
|
|
304
|
+
COMPREPLY=( $( compgen -W '--bool --case --config_template --duration --not --output --only_timed --section --save --search --times --tag --tag_order --tag_sort --template --title --totals --val --exact' -- $token ) )
|
|
305
305
|
elif [[ "$token" == -* ]]; then
|
|
306
|
-
COMPREPLY=( $( compgen -W '-o -s -t -x --bool --case --config_template --duration --not --output --only_timed --section --search --times --tag --tag_order --tag_sort --template --totals --val --exact' -- $token ) )
|
|
306
|
+
COMPREPLY=( $( compgen -W '-o -s -t -x --bool --case --config_template --duration --not --output --only_timed --section --save --search --times --tag --tag_order --tag_sort --template --title --totals --val --exact' -- $token ) )
|
|
307
307
|
|
|
308
308
|
fi
|
|
309
309
|
}
|
|
@@ -351,9 +351,9 @@ _doing_template() {
|
|
|
351
351
|
_doing_today() {
|
|
352
352
|
|
|
353
353
|
if [[ "$token" == --* ]]; then
|
|
354
|
-
COMPREPLY=( $( compgen -W '--after --before --config_template --duration --from --output --only_timed --section --times --tag_order --tag_sort --template --totals' -- $token ) )
|
|
354
|
+
COMPREPLY=( $( compgen -W '--after --before --config_template --duration --from --output --only_timed --section --save --times --tag_order --tag_sort --template --title --totals' -- $token ) )
|
|
355
355
|
elif [[ "$token" == -* ]]; then
|
|
356
|
-
COMPREPLY=( $( compgen -W '-o -s -t --after --before --config_template --duration --from --output --only_timed --section --times --tag_order --tag_sort --template --totals' -- $token ) )
|
|
356
|
+
COMPREPLY=( $( compgen -W '-o -s -t --after --before --config_template --duration --from --output --only_timed --section --save --times --tag_order --tag_sort --template --title --totals' -- $token ) )
|
|
357
357
|
|
|
358
358
|
fi
|
|
359
359
|
}
|
|
@@ -376,9 +376,9 @@ local words=$(doing views)
|
|
|
376
376
|
IFS="$OLD_IFS"
|
|
377
377
|
|
|
378
378
|
if [[ "$token" == --* ]]; then
|
|
379
|
-
COMPREPLY=( $( compgen -W '--after --age --before --bool --count --case --color --duration --from --hilite --interactive --not --output --only_timed --section --search --times --tag --tag_order --tag_sort --totals --val --exact' -- $token ) )
|
|
379
|
+
COMPREPLY=( $( compgen -W '--after --age --before --bool --count --case --color --config_template --duration --from --hilite --interactive --not --output --only_timed --section --search --times --tag --tag_order --tag_sort --template --totals --val --exact' -- $token ) )
|
|
380
380
|
elif [[ "$token" == -* ]]; then
|
|
381
|
-
COMPREPLY=( $( compgen -W '-c -h -i -o -s -t -x --after --age --before --bool --count --case --color --duration --from --hilite --interactive --not --output --only_timed --section --search --times --tag --tag_order --tag_sort --totals --val --exact' -- $token ) )
|
|
381
|
+
COMPREPLY=( $( compgen -W '-c -h -i -o -s -t -x --after --age --before --bool --count --case --color --config_template --duration --from --hilite --interactive --not --output --only_timed --section --search --times --tag --tag_order --tag_sort --template --totals --val --exact' -- $token ) )
|
|
382
382
|
else
|
|
383
383
|
local nocasematchWasOff=0
|
|
384
384
|
shopt nocasematch >/dev/null || nocasematchWasOff=1
|
|
@@ -401,9 +401,9 @@ IFS="$OLD_IFS"
|
|
|
401
401
|
_doing_views() {
|
|
402
402
|
|
|
403
403
|
if [[ "$token" == --* ]]; then
|
|
404
|
-
COMPREPLY=( $( compgen -W '--column' -- $token ) )
|
|
404
|
+
COMPREPLY=( $( compgen -W '--column --editor --output --remove' -- $token ) )
|
|
405
405
|
elif [[ "$token" == -* ]]; then
|
|
406
|
-
COMPREPLY=( $( compgen -W '-c --column' -- $token ) )
|
|
406
|
+
COMPREPLY=( $( compgen -W '-c -e -o -r --column --editor --output --remove' -- $token ) )
|
|
407
407
|
|
|
408
408
|
fi
|
|
409
409
|
}
|
|
@@ -421,9 +421,9 @@ _doing_wiki() {
|
|
|
421
421
|
_doing_yesterday() {
|
|
422
422
|
|
|
423
423
|
if [[ "$token" == --* ]]; then
|
|
424
|
-
COMPREPLY=( $( compgen -W '--after --before --config_template --duration --from --output --only_timed --section --times --tag_order --tag_sort --template --totals' -- $token ) )
|
|
424
|
+
COMPREPLY=( $( compgen -W '--after --before --config_template --duration --from --output --only_timed --section --save --times --tag_order --tag_sort --template --title --totals' -- $token ) )
|
|
425
425
|
elif [[ "$token" == -* ]]; then
|
|
426
|
-
COMPREPLY=( $( compgen -W '-o -s -t --after --before --config_template --duration --from --output --only_timed --section --times --tag_order --tag_sort --template --totals' -- $token ) )
|
|
426
|
+
COMPREPLY=( $( compgen -W '-o -s -t --after --before --config_template --duration --from --output --only_timed --section --save --times --tag_order --tag_sort --template --title --totals' -- $token ) )
|
|
427
427
|
|
|
428
428
|
fi
|
|
429
429
|
}
|
data/lib/completion/doing.fish
CHANGED
|
@@ -228,6 +228,8 @@ complete -c doing -l all -s a -f -n '__fish_doing_using_command changes changel
|
|
|
228
228
|
complete -c doing -l interactive -s i -f -n '__fish_doing_using_command changes changelog' -d Open\ changelog\ in\ interactive\ viewer
|
|
229
229
|
complete -c doing -l lookup -s l -f -r -n '__fish_doing_using_command changes changelog' -d Look\ up\ a\ specific\ version
|
|
230
230
|
complete -c doing -l markdown -f -n '__fish_doing_using_command changes changelog' -d Output\ raw\ Markdown
|
|
231
|
+
complete -c doing -l only -f -r -n '__fish_doing_using_command changes changelog' -d Only\ show\ changes\ of\ type\(s\)
|
|
232
|
+
complete -c doing -l prefix -s p -f -n '__fish_doing_using_command changes changelog' -d Include
|
|
231
233
|
complete -c doing -l render -f -n '__fish_doing_using_command changes changelog' -d Force\ rendered\ output
|
|
232
234
|
complete -c doing -l search -s s -f -r -n '__fish_doing_using_command changes changelog' -d Show\ changelogs\ matching\ search\ terms
|
|
233
235
|
complete -c doing -l sort -f -r -n '__fish_doing_using_command changes changelog' -d Sort\ order
|
|
@@ -281,11 +283,13 @@ complete -c doing -l not -f -n '__fish_doing_using_command grep search' -d Sea
|
|
|
281
283
|
complete -c doing -l output -s o -f -r -n '__fish_doing_using_command grep search' -d Output\ to\ export\ format
|
|
282
284
|
complete -c doing -l only_timed -f -n '__fish_doing_using_command grep search' -d Only\ show\ items\ with\ recorded\ time\ intervals
|
|
283
285
|
complete -c doing -l section -s s -f -r -n '__fish_doing_using_command grep search' -d Section
|
|
286
|
+
complete -c doing -l save -f -r -n '__fish_doing_using_command grep search' -d Save\ all\ current\ command\ line\ options\ as\ a\ new\ view
|
|
284
287
|
complete -c doing -l times -s t -f -n '__fish_doing_using_command grep search' -d Show\ time\ intervals\ on\ @done\ tasks
|
|
285
288
|
complete -c doing -l tag -f -r -n '__fish_doing_using_command grep search' -d Filter\ entries\ by\ tag
|
|
286
289
|
complete -c doing -l tag_order -f -r -n '__fish_doing_using_command grep search' -d Tag\ sort\ direction
|
|
287
290
|
complete -c doing -l tag_sort -f -r -n '__fish_doing_using_command grep search' -d Sort\ tags\ by
|
|
288
291
|
complete -c doing -l template -f -r -n '__fish_doing_using_command grep search' -d Override\ output\ format\ with\ a\ template\ string\ containing\ \%placeholders
|
|
292
|
+
complete -c doing -l title -f -r -n '__fish_doing_using_command grep search' -d Title\ string\ to\ be\ used\ for\ output\ formats\ that\ require\ it
|
|
289
293
|
complete -c doing -l totals -f -n '__fish_doing_using_command grep search' -d Show\ time\ totals\ at\ the\ end\ of\ output
|
|
290
294
|
complete -c doing -l val -f -r -n '__fish_doing_using_command grep search' -d Perform\ a\ tag\ value\ query
|
|
291
295
|
complete -c doing -l exact -s x -f -n '__fish_doing_using_command grep search' -d Force\ exact\ string\ matching
|
|
@@ -314,9 +318,11 @@ complete -c doing -l hilite -s h -f -n '__fish_doing_using_command last' -d Hig
|
|
|
314
318
|
complete -c doing -l not -f -n '__fish_doing_using_command last' -d Show\ items\ that\ \*don\'t\*\ match\ search/tag\ filters
|
|
315
319
|
complete -c doing -l output -s o -f -r -n '__fish_doing_using_command last' -d Output\ to\ export\ format
|
|
316
320
|
complete -c doing -l section -s s -f -r -n '__fish_doing_using_command last' -d Specify\ a\ section
|
|
321
|
+
complete -c doing -l save -f -r -n '__fish_doing_using_command last' -d Save\ all\ current\ command\ line\ options\ as\ a\ new\ view
|
|
317
322
|
complete -c doing -l search -f -r -n '__fish_doing_using_command last' -d Filter\ entries\ using\ a\ search\ query
|
|
318
323
|
complete -c doing -l tag -f -r -n '__fish_doing_using_command last' -d Filter\ entries\ by\ tag
|
|
319
324
|
complete -c doing -l template -f -r -n '__fish_doing_using_command last' -d Override\ output\ format\ with\ a\ template\ string\ containing\ \%placeholders
|
|
325
|
+
complete -c doing -l title -f -r -n '__fish_doing_using_command last' -d Title\ string\ to\ be\ used\ for\ output\ formats\ that\ require\ it
|
|
320
326
|
complete -c doing -l val -f -r -n '__fish_doing_using_command last' -d Perform\ a\ tag\ value\ query
|
|
321
327
|
complete -c doing -l exact -s x -f -n '__fish_doing_using_command last' -d Force\ exact\ search\ string\ matching
|
|
322
328
|
complete -c doing -l bool -f -r -n '__fish_doing_using_command mark flag' -d Boolean\ used\ to\ combine\ multiple\ tags
|
|
@@ -371,12 +377,14 @@ complete -c doing -l not -f -n '__fish_doing_using_command on' -d Show\ items\
|
|
|
371
377
|
complete -c doing -l output -s o -f -r -n '__fish_doing_using_command on' -d Output\ to\ export\ format
|
|
372
378
|
complete -c doing -l only_timed -f -n '__fish_doing_using_command on' -d Only\ show\ items\ with\ recorded\ time\ intervals
|
|
373
379
|
complete -c doing -l section -s s -f -r -n '__fish_doing_using_command on' -d Section
|
|
380
|
+
complete -c doing -l save -f -r -n '__fish_doing_using_command on' -d Save\ all\ current\ command\ line\ options\ as\ a\ new\ view
|
|
374
381
|
complete -c doing -l search -f -r -n '__fish_doing_using_command on' -d Filter\ entries\ using\ a\ search\ query
|
|
375
382
|
complete -c doing -l times -s t -f -n '__fish_doing_using_command on' -d Show\ time\ intervals\ on\ @done\ tasks
|
|
376
383
|
complete -c doing -l tag -f -r -n '__fish_doing_using_command on' -d Filter\ entries\ by\ tag
|
|
377
384
|
complete -c doing -l tag_order -f -r -n '__fish_doing_using_command on' -d Tag\ sort\ direction
|
|
378
385
|
complete -c doing -l tag_sort -f -r -n '__fish_doing_using_command on' -d Sort\ tags\ by
|
|
379
386
|
complete -c doing -l template -f -r -n '__fish_doing_using_command on' -d Override\ output\ format\ with\ a\ template\ string\ containing\ \%placeholders
|
|
387
|
+
complete -c doing -l title -f -r -n '__fish_doing_using_command on' -d Title\ string\ to\ be\ used\ for\ output\ formats\ that\ require\ it
|
|
380
388
|
complete -c doing -l totals -f -n '__fish_doing_using_command on' -d Show\ time\ totals\ at\ the\ end\ of\ output
|
|
381
389
|
complete -c doing -l val -f -r -n '__fish_doing_using_command on' -d Perform\ a\ tag\ value\ query
|
|
382
390
|
complete -c doing -l exact -s x -f -n '__fish_doing_using_command on' -d Force\ exact\ search\ string\ matching
|
|
@@ -391,10 +399,12 @@ complete -c doing -l interactive -s i -f -n '__fish_doing_using_command recent'
|
|
|
391
399
|
complete -c doing -l output -s o -f -r -n '__fish_doing_using_command recent' -d Output\ to\ export\ format
|
|
392
400
|
complete -c doing -l only_timed -f -n '__fish_doing_using_command recent' -d Only\ show\ items\ with\ recorded\ time\ intervals
|
|
393
401
|
complete -c doing -l section -s s -f -r -n '__fish_doing_using_command recent' -d Section
|
|
402
|
+
complete -c doing -l save -f -r -n '__fish_doing_using_command recent' -d Save\ all\ current\ command\ line\ options\ as\ a\ new\ view
|
|
394
403
|
complete -c doing -l times -s t -f -n '__fish_doing_using_command recent' -d Show\ time\ intervals\ on\ @done\ tasks
|
|
395
404
|
complete -c doing -l tag_order -f -r -n '__fish_doing_using_command recent' -d Tag\ sort\ direction
|
|
396
405
|
complete -c doing -l tag_sort -f -r -n '__fish_doing_using_command recent' -d Sort\ tags\ by
|
|
397
406
|
complete -c doing -l template -f -r -n '__fish_doing_using_command recent' -d Override\ output\ format\ with\ a\ template\ string\ containing\ \%placeholders
|
|
407
|
+
complete -c doing -l title -f -r -n '__fish_doing_using_command recent' -d Title\ string\ to\ be\ used\ for\ output\ formats\ that\ require\ it
|
|
398
408
|
complete -c doing -l totals -f -n '__fish_doing_using_command recent' -d Show\ time\ totals\ at\ the\ end\ of\ output
|
|
399
409
|
complete -c doing -l file -s f -f -r -n '__fish_doing_using_command redo' -d Specify\ alternate\ doing\ file
|
|
400
410
|
complete -c doing -l interactive -s i -f -n '__fish_doing_using_command redo' -d Select\ from\ an\ interactive\ menu
|
|
@@ -461,12 +471,14 @@ complete -c doing -l not -f -n '__fish_doing_using_command show' -d Show\ item
|
|
|
461
471
|
complete -c doing -l output -s o -f -r -n '__fish_doing_using_command show' -d Output\ to\ export\ format
|
|
462
472
|
complete -c doing -l only_timed -f -n '__fish_doing_using_command show' -d Only\ show\ items\ with\ recorded\ time\ intervals
|
|
463
473
|
complete -c doing -l sort -s s -f -r -n '__fish_doing_using_command show' -d Sort\ order
|
|
474
|
+
complete -c doing -l save -f -r -n '__fish_doing_using_command show' -d Save\ all\ current\ command\ line\ options\ as\ a\ new\ view
|
|
464
475
|
complete -c doing -l search -f -r -n '__fish_doing_using_command show' -d Filter\ entries\ using\ a\ search\ query
|
|
465
476
|
complete -c doing -l times -s t -f -n '__fish_doing_using_command show' -d Show\ time\ intervals\ on\ @done\ tasks
|
|
466
477
|
complete -c doing -l tag -f -r -n '__fish_doing_using_command show' -d Filter\ entries\ by\ tag
|
|
467
478
|
complete -c doing -l tag_order -f -r -n '__fish_doing_using_command show' -d Tag\ sort\ direction
|
|
468
479
|
complete -c doing -l tag_sort -f -r -n '__fish_doing_using_command show' -d Sort\ tags\ by
|
|
469
480
|
complete -c doing -l template -f -r -n '__fish_doing_using_command show' -d Override\ output\ format\ with\ a\ template\ string\ containing\ \%placeholders
|
|
481
|
+
complete -c doing -l title -f -r -n '__fish_doing_using_command show' -d Title\ string\ to\ be\ used\ for\ output\ formats\ that\ require\ it
|
|
470
482
|
complete -c doing -l totals -f -n '__fish_doing_using_command show' -d Show\ time\ totals\ at\ the\ end\ of\ output
|
|
471
483
|
complete -c doing -l val -f -r -n '__fish_doing_using_command show' -d Perform\ a\ tag\ value\ query
|
|
472
484
|
complete -c doing -l exact -s x -f -n '__fish_doing_using_command show' -d Force\ exact\ search\ string\ matching
|
|
@@ -478,12 +490,14 @@ complete -c doing -l not -f -n '__fish_doing_using_command since' -d Since\ it
|
|
|
478
490
|
complete -c doing -l output -s o -f -r -n '__fish_doing_using_command since' -d Output\ to\ export\ format
|
|
479
491
|
complete -c doing -l only_timed -f -n '__fish_doing_using_command since' -d Only\ show\ items\ with\ recorded\ time\ intervals
|
|
480
492
|
complete -c doing -l section -s s -f -r -n '__fish_doing_using_command since' -d Section
|
|
493
|
+
complete -c doing -l save -f -r -n '__fish_doing_using_command since' -d Save\ all\ current\ command\ line\ options\ as\ a\ new\ view
|
|
481
494
|
complete -c doing -l search -f -r -n '__fish_doing_using_command since' -d Filter\ entries\ using\ a\ search\ query
|
|
482
495
|
complete -c doing -l times -s t -f -n '__fish_doing_using_command since' -d Show\ time\ intervals\ on\ @done\ tasks
|
|
483
496
|
complete -c doing -l tag -f -r -n '__fish_doing_using_command since' -d Filter\ entries\ by\ tag
|
|
484
497
|
complete -c doing -l tag_order -f -r -n '__fish_doing_using_command since' -d Tag\ sort\ direction
|
|
485
498
|
complete -c doing -l tag_sort -f -r -n '__fish_doing_using_command since' -d Sort\ tags\ by
|
|
486
499
|
complete -c doing -l template -f -r -n '__fish_doing_using_command since' -d Override\ output\ format\ with\ a\ template\ string\ containing\ \%placeholders
|
|
500
|
+
complete -c doing -l title -f -r -n '__fish_doing_using_command since' -d Title\ string\ to\ be\ used\ for\ output\ formats\ that\ require\ it
|
|
487
501
|
complete -c doing -l totals -f -n '__fish_doing_using_command since' -d Show\ time\ totals\ at\ the\ end\ of\ output
|
|
488
502
|
complete -c doing -l val -f -r -n '__fish_doing_using_command since' -d Perform\ a\ tag\ value\ query
|
|
489
503
|
complete -c doing -l exact -s x -f -n '__fish_doing_using_command since' -d Force\ exact\ search\ string\ matching
|
|
@@ -533,10 +547,12 @@ complete -c doing -l from -f -r -n '__fish_doing_using_command today' -d Time\
|
|
|
533
547
|
complete -c doing -l output -s o -f -r -n '__fish_doing_using_command today' -d Output\ to\ export\ format
|
|
534
548
|
complete -c doing -l only_timed -f -n '__fish_doing_using_command today' -d Only\ show\ items\ with\ recorded\ time\ intervals
|
|
535
549
|
complete -c doing -l section -s s -f -r -n '__fish_doing_using_command today' -d Specify\ a\ section
|
|
550
|
+
complete -c doing -l save -f -r -n '__fish_doing_using_command today' -d Save\ all\ current\ command\ line\ options\ as\ a\ new\ view
|
|
536
551
|
complete -c doing -l times -s t -f -n '__fish_doing_using_command today' -d Show\ time\ intervals\ on\ @done\ tasks
|
|
537
552
|
complete -c doing -l tag_order -f -r -n '__fish_doing_using_command today' -d Tag\ sort\ direction
|
|
538
553
|
complete -c doing -l tag_sort -f -r -n '__fish_doing_using_command today' -d Sort\ tags\ by
|
|
539
554
|
complete -c doing -l template -f -r -n '__fish_doing_using_command today' -d Override\ output\ format\ with\ a\ template\ string\ containing\ \%placeholders
|
|
555
|
+
complete -c doing -l title -f -r -n '__fish_doing_using_command today' -d Title\ string\ to\ be\ used\ for\ output\ formats\ that\ require\ it
|
|
540
556
|
complete -c doing -l totals -f -n '__fish_doing_using_command today' -d Show\ time\ totals\ at\ the\ end\ of\ output
|
|
541
557
|
complete -c doing -l file -s f -f -r -n '__fish_doing_using_command undo' -d Specify\ alternate\ doing\ file
|
|
542
558
|
complete -c doing -l interactive -s i -f -n '__fish_doing_using_command undo' -d Select\ from\ recent\ backups
|
|
@@ -549,6 +565,7 @@ complete -c doing -l bool -f -r -n '__fish_doing_using_command view' -d Boolean
|
|
|
549
565
|
complete -c doing -l count -s c -f -r -n '__fish_doing_using_command view' -d Count\ to\ display
|
|
550
566
|
complete -c doing -l case -f -r -n '__fish_doing_using_command view' -d Case\ sensitivity\ for\ search\ string\ matching\ \[\(c\)ase-sensitive
|
|
551
567
|
complete -c doing -l color -f -n '__fish_doing_using_command view' -d Include\ colors\ in\ output
|
|
568
|
+
complete -c doing -l config_template -f -r -n '__fish_doing_using_command view' -d Output\ using\ a\ template\ from\ configuration
|
|
552
569
|
complete -c doing -l duration -f -n '__fish_doing_using_command view' -d Show\ elapsed\ time\ on\ entries\ without\ @done\ tag
|
|
553
570
|
complete -c doing -l from -f -r -n '__fish_doing_using_command view' -d Date\ range
|
|
554
571
|
complete -c doing -l hilite -s h -f -n '__fish_doing_using_command view' -d Highlight\ search\ matches\ in\ output
|
|
@@ -562,10 +579,14 @@ complete -c doing -l times -s t -f -n '__fish_doing_using_command view' -d Show
|
|
|
562
579
|
complete -c doing -l tag -f -r -n '__fish_doing_using_command view' -d Filter\ entries\ by\ tag
|
|
563
580
|
complete -c doing -l tag_order -f -r -n '__fish_doing_using_command view' -d Tag\ sort\ direction
|
|
564
581
|
complete -c doing -l tag_sort -f -r -n '__fish_doing_using_command view' -d Sort\ tags\ by
|
|
582
|
+
complete -c doing -l template -f -r -n '__fish_doing_using_command view' -d Override\ output\ format\ with\ a\ template\ string\ containing\ \%placeholders
|
|
565
583
|
complete -c doing -l totals -f -n '__fish_doing_using_command view' -d Show\ intervals\ with\ totals\ at\ the\ end\ of\ output
|
|
566
584
|
complete -c doing -l val -f -r -n '__fish_doing_using_command view' -d Perform\ a\ tag\ value\ query
|
|
567
585
|
complete -c doing -l exact -s x -f -n '__fish_doing_using_command view' -d Force\ exact\ search\ string\ matching
|
|
568
586
|
complete -c doing -l column -s c -f -n '__fish_doing_using_command views' -d List\ in\ single\ column
|
|
587
|
+
complete -c doing -l editor -s e -f -n '__fish_doing_using_command views' -d Open\ YAML\ for\ view\ in\ editor
|
|
588
|
+
complete -c doing -l output -s o -f -r -n '__fish_doing_using_command views' -d Output/edit\ view\ in\ alternative\ format
|
|
589
|
+
complete -c doing -l remove -s r -f -n '__fish_doing_using_command views' -d Delete\ view\ config
|
|
569
590
|
complete -c doing -l after -f -r -n '__fish_doing_using_command wiki' -d Include\ entries\ newer\ than\ date
|
|
570
591
|
complete -c doing -l bool -s b -f -r -n '__fish_doing_using_command wiki' -d Tag\ boolean
|
|
571
592
|
complete -c doing -l before -f -r -n '__fish_doing_using_command wiki' -d Include\ entries\ older\ than\ date
|
|
@@ -582,12 +603,14 @@ complete -c doing -l from -f -r -n '__fish_doing_using_command yesterday' -d Ti
|
|
|
582
603
|
complete -c doing -l output -s o -f -r -n '__fish_doing_using_command yesterday' -d Output\ to\ export\ format
|
|
583
604
|
complete -c doing -l only_timed -f -n '__fish_doing_using_command yesterday' -d Only\ show\ items\ with\ recorded\ time\ intervals
|
|
584
605
|
complete -c doing -l section -s s -f -r -n '__fish_doing_using_command yesterday' -d Specify\ a\ section
|
|
606
|
+
complete -c doing -l save -f -r -n '__fish_doing_using_command yesterday' -d Save\ all\ current\ command\ line\ options\ as\ a\ new\ view
|
|
585
607
|
complete -c doing -l times -s t -f -n '__fish_doing_using_command yesterday' -d Show\ time\ intervals\ on\ @done\ tasks
|
|
586
608
|
complete -c doing -l tag_order -f -r -n '__fish_doing_using_command yesterday' -d Tag\ sort\ direction
|
|
587
609
|
complete -c doing -l tag_sort -f -r -n '__fish_doing_using_command yesterday' -d Sort\ tags\ by
|
|
588
610
|
complete -c doing -l template -f -r -n '__fish_doing_using_command yesterday' -d Override\ output\ format\ with\ a\ template\ string\ containing\ \%placeholders
|
|
611
|
+
complete -c doing -l title -f -r -n '__fish_doing_using_command yesterday' -d Title\ string\ to\ be\ used\ for\ output\ formats\ that\ require\ it
|
|
589
612
|
complete -c doing -l totals -f -n '__fish_doing_using_command yesterday' -d Show\ time\ totals\ at\ the\ end\ of\ output
|
|
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)'
|
|
613
|
+
complete -f -c doing -s o -l output -x -n '__fish_doing_using_command grep search last on recent select show since today view views yesterday' -a '(__fish_doing_export_plugin)'
|
|
591
614
|
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'
|
|
592
615
|
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'
|
|
593
616
|
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,14 +3,24 @@
|
|
|
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
|
##
|
|
22
|
+
## :save => --save
|
|
23
|
+
##
|
|
14
24
|
## @param type [Symbol] The type
|
|
15
25
|
## @param cmd The GLI command to which the options will be added
|
|
16
26
|
##
|
|
@@ -33,12 +43,24 @@ def add_options(type, cmd, default_template: 'default')
|
|
|
33
43
|
when :output_template
|
|
34
44
|
cmd.desc "Output to export format (#{Doing::Plugins.plugin_names(type: :export)})"
|
|
35
45
|
cmd.arg_name 'FORMAT'
|
|
36
|
-
cmd.flag %i[o output]
|
|
46
|
+
cmd.flag %i[o output], type: ExportTemplate
|
|
37
47
|
|
|
38
48
|
cmd.desc "Output using a template from configuration"
|
|
39
49
|
cmd.arg_name 'TEMPLATE_KEY'
|
|
40
50
|
cmd.flag [:config_template], type: TemplateName, default_value: default_template
|
|
41
51
|
|
|
52
|
+
cmd.desc 'Override output format with a template string containing %placeholders'
|
|
53
|
+
cmd.arg_name 'TEMPLATE_STRING'
|
|
54
|
+
cmd.flag [:template]
|
|
55
|
+
when :output_template_no_defaults
|
|
56
|
+
cmd.desc "Output to export format (#{Doing::Plugins.plugin_names(type: :export)})"
|
|
57
|
+
cmd.arg_name 'FORMAT'
|
|
58
|
+
cmd.flag %i[o output]
|
|
59
|
+
|
|
60
|
+
cmd.desc "Output using a template from configuration"
|
|
61
|
+
cmd.arg_name 'TEMPLATE_KEY'
|
|
62
|
+
cmd.flag [:config_template], type: TemplateName
|
|
63
|
+
|
|
42
64
|
cmd.desc 'Override output format with a template string containing %placeholders'
|
|
43
65
|
cmd.arg_name 'TEMPLATE_STRING'
|
|
44
66
|
cmd.flag [:template]
|
|
@@ -130,6 +152,23 @@ def add_options(type, cmd, default_template: 'default')
|
|
|
130
152
|
cmd.flag [:bool], must_match: REGEX_BOOL,
|
|
131
153
|
default_value: :pattern,
|
|
132
154
|
type: BooleanSymbol
|
|
155
|
+
when :tag_filter_no_defaults
|
|
156
|
+
cmd.desc 'Filter entries by tag. Combine multiple tags with a comma. Wildcards allowed (*, ?)'
|
|
157
|
+
cmd.arg_name 'TAG'
|
|
158
|
+
cmd.flag [:tag], type: TagArray
|
|
159
|
+
|
|
160
|
+
cmd.desc 'Perform a tag value query ("@done > two hours ago" or "@progress < 50").
|
|
161
|
+
May be used multiple times, combined with --bool'
|
|
162
|
+
cmd.arg_name 'QUERY'
|
|
163
|
+
cmd.flag [:val], multiple: true, must_match: REGEX_VALUE_QUERY
|
|
164
|
+
|
|
165
|
+
cmd.desc "#{action} items that *don't* match search/tag filters"
|
|
166
|
+
cmd.switch [:not], negatable: false
|
|
167
|
+
|
|
168
|
+
cmd.desc 'Boolean used to combine multiple tags. Use PATTERN to parse + and - as booleans'
|
|
169
|
+
cmd.arg_name 'BOOLEAN'
|
|
170
|
+
cmd.flag [:bool], must_match: REGEX_BOOL,
|
|
171
|
+
type: BooleanSymbol
|
|
133
172
|
when :time_filter
|
|
134
173
|
cmd.desc 'View entries before specified time (e.g. 8am, 12:30pm, 15:00)'
|
|
135
174
|
cmd.arg_name 'TIME_STRING'
|
|
@@ -178,5 +217,13 @@ def add_options(type, cmd, default_template: 'default')
|
|
|
178
217
|
end
|
|
179
218
|
cmd.arg_name 'DATE_OR_RANGE'
|
|
180
219
|
cmd.flag [:from], type: DateRangeString
|
|
220
|
+
when :save
|
|
221
|
+
cmd.desc 'Save all current command line options as a new view'
|
|
222
|
+
cmd.arg_name 'VIEW_NAME'
|
|
223
|
+
cmd.flag %i[save], type: String
|
|
224
|
+
|
|
225
|
+
cmd.desc 'Title string to be used for output formats that require it'
|
|
226
|
+
cmd.arg_name 'TITLE'
|
|
227
|
+
cmd.flag %i[title], type: String
|
|
181
228
|
end
|
|
182
229
|
end
|
data/lib/doing/array/array.rb
CHANGED
|
@@ -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
|
|
@@ -7,9 +7,13 @@ module Doing
|
|
|
7
7
|
|
|
8
8
|
attr_accessor :entries, :change_date
|
|
9
9
|
|
|
10
|
-
|
|
10
|
+
attr_writer :prefix
|
|
11
|
+
|
|
12
|
+
def initialize(version, content, prefix: false, only: %i[changed new improved fixed])
|
|
11
13
|
@version = Version.new(version)
|
|
12
14
|
@content = content
|
|
15
|
+
@prefix = prefix
|
|
16
|
+
@only = only
|
|
13
17
|
parse_entries
|
|
14
18
|
end
|
|
15
19
|
|
|
@@ -18,10 +22,10 @@ module Doing
|
|
|
18
22
|
@change_date = Time.parse(date[0]) if date
|
|
19
23
|
|
|
20
24
|
@entries = []
|
|
21
|
-
types = @content.scan(/(?<=\n|\A)#### (NEW|IMPROVED|FIXED)(.*?)(?=\n####|\Z)/m)
|
|
25
|
+
types = @content.scan(/(?<=\n|\A)#### (CHANGED|NEW|IMPROVED|FIXED)(.*?)(?=\n####|\Z)/m)
|
|
22
26
|
types.each do |type|
|
|
23
27
|
type[1].scan(/\s*- +(.*?)$/).each do |entry|
|
|
24
|
-
@entries << Entry.new(entry[0].strip, type[0])
|
|
28
|
+
@entries << Entry.new(entry[0].strip, type[0], prefix: @prefix)
|
|
25
29
|
end
|
|
26
30
|
end
|
|
27
31
|
end
|
|
@@ -57,7 +61,7 @@ module Doing
|
|
|
57
61
|
end
|
|
58
62
|
|
|
59
63
|
def split_items
|
|
60
|
-
items = { new: [], improved: [], fixed: [], other: [] }
|
|
64
|
+
items = { changed: [], new: [], improved: [], fixed: [], other: [] }
|
|
61
65
|
|
|
62
66
|
@entries.each do |e|
|
|
63
67
|
type = e.type.downcase.to_sym
|
|
@@ -76,6 +80,8 @@ module Doing
|
|
|
76
80
|
out = ["### __#{@version}__#{date}"]
|
|
77
81
|
|
|
78
82
|
split_items.each do |type, members|
|
|
83
|
+
next unless @only.include?(type)
|
|
84
|
+
|
|
79
85
|
if members.count.positive?
|
|
80
86
|
out << "#### #{type.to_s.capitalize}"
|
|
81
87
|
out << members.map(&:to_s).join("\n")
|
|
@@ -88,7 +94,9 @@ module Doing
|
|
|
88
94
|
def changes_only
|
|
89
95
|
out = []
|
|
90
96
|
|
|
91
|
-
split_items.each do |
|
|
97
|
+
split_items.each do |type, members|
|
|
98
|
+
next unless @only.include?(type)
|
|
99
|
+
|
|
92
100
|
out << members.map(&:to_s).join("\n")
|
|
93
101
|
end
|
|
94
102
|
|
|
@@ -6,8 +6,10 @@ module Doing
|
|
|
6
6
|
attr_reader :changes
|
|
7
7
|
attr_writer :changes_only
|
|
8
8
|
|
|
9
|
-
def initialize(lookup: nil, search: nil, changes: false, sort: :desc)
|
|
9
|
+
def initialize(lookup: nil, search: nil, changes: false, sort: :desc, prefix: false, only: %i[changed new improved fixed])
|
|
10
10
|
@changes_only = changes
|
|
11
|
+
@prefix = prefix
|
|
12
|
+
@only = only
|
|
11
13
|
changelog = File.expand_path(File.join(File.dirname(__FILE__), '..', '..', '..', 'CHANGELOG.md'))
|
|
12
14
|
raise 'Error locating changelog' unless File.exist?(changelog)
|
|
13
15
|
|
|
@@ -56,9 +58,10 @@ module Doing
|
|
|
56
58
|
@changes = @content.scan(change_rx).each_with_object([]) do |m, a|
|
|
57
59
|
next if m[0].nil? || m[1].nil?
|
|
58
60
|
|
|
59
|
-
a << Change.new(m[0], m[1].strip)
|
|
61
|
+
a << Change.new(m[0], m[1].strip, prefix: @prefix)
|
|
60
62
|
end
|
|
61
63
|
|
|
64
|
+
select_type
|
|
62
65
|
lookup(lookup) unless lookup.nil?
|
|
63
66
|
search(search) unless search.nil?
|
|
64
67
|
end
|
|
@@ -98,5 +101,11 @@ module Doing
|
|
|
98
101
|
|
|
99
102
|
@changes.delete_if { |c| c.nil? || c.entries.nil? }
|
|
100
103
|
end
|
|
104
|
+
|
|
105
|
+
def select_type
|
|
106
|
+
@changes.map do |c|
|
|
107
|
+
c.entries.delete_if { |e| !@only.include?(e.type.normalize_change_type) }
|
|
108
|
+
end
|
|
109
|
+
end
|
|
101
110
|
end
|
|
102
111
|
end
|
|
@@ -5,17 +5,24 @@ module Doing
|
|
|
5
5
|
class Entry
|
|
6
6
|
attr_reader :type, :string
|
|
7
7
|
|
|
8
|
-
|
|
8
|
+
attr_writer :prefix
|
|
9
|
+
|
|
10
|
+
def initialize(string, type, prefix: false)
|
|
9
11
|
@string = string
|
|
10
12
|
@type = type
|
|
13
|
+
@prefix = prefix
|
|
11
14
|
end
|
|
12
15
|
|
|
13
16
|
def clean(string)
|
|
14
17
|
string.gsub(/\|/, '\|')
|
|
15
18
|
end
|
|
16
19
|
|
|
20
|
+
def print_prefix
|
|
21
|
+
@prefix ? "#{@type}: " : ''
|
|
22
|
+
end
|
|
23
|
+
|
|
17
24
|
def to_s
|
|
18
|
-
"- #{clean(@string)}"
|
|
25
|
+
"- #{print_prefix}#{clean(@string)}"
|
|
19
26
|
end
|
|
20
27
|
end
|
|
21
28
|
end
|
data/lib/doing/configuration.rb
CHANGED
|
@@ -23,7 +23,8 @@ module Doing
|
|
|
23
23
|
'editors' => {
|
|
24
24
|
'default' => ENV['DOING_EDITOR'] || ENV['GIT_EDITOR'] || ENV['EDITOR'],
|
|
25
25
|
'doing_file' => nil,
|
|
26
|
-
'config' => nil
|
|
26
|
+
'config' => nil,
|
|
27
|
+
'pager' => nil
|
|
27
28
|
},
|
|
28
29
|
'plugins' => {
|
|
29
30
|
'plugin_path' => File.join(Util.user_home, '.config', 'doing', 'plugins'),
|
|
@@ -204,6 +205,7 @@ module Doing
|
|
|
204
205
|
real_path = []
|
|
205
206
|
unless keypath =~ /^[.*]?$/
|
|
206
207
|
paths = keypath.split(/[:.]/)
|
|
208
|
+
element_count = paths.count
|
|
207
209
|
while paths.length.positive? && !cfg.nil?
|
|
208
210
|
path = paths.shift
|
|
209
211
|
new_cfg = nil
|
|
@@ -220,6 +222,8 @@ module Doing
|
|
|
220
222
|
end
|
|
221
223
|
|
|
222
224
|
if new_cfg.nil?
|
|
225
|
+
return real_path if real_path[-1] == path && real_path.count == element_count
|
|
226
|
+
|
|
223
227
|
if distance < 5 && !create
|
|
224
228
|
return resolve_key_path(keypath, create: false, distance: distance + 1)
|
|
225
229
|
else
|
|
@@ -228,12 +232,12 @@ module Doing
|
|
|
228
232
|
|
|
229
233
|
resolved = real_path.count.positive? ? "Resolved #{real_path.join('.')}, but " : ''
|
|
230
234
|
Doing.logger.log_now(:warn, "#{resolved}#{path} is unknown")
|
|
231
|
-
new_path = [*real_path, path, *paths].join('.')
|
|
235
|
+
new_path = [*real_path, path, *paths].compact.join('.')
|
|
232
236
|
Doing.logger.log_now(:warn, "Continuing will create the path #{new_path}")
|
|
233
237
|
res = Prompt.yn('Key path not found, create it?', default_response: true)
|
|
234
238
|
raise InvalidArgument, 'Invalid key path' unless res
|
|
235
239
|
|
|
236
|
-
real_path.push(path).concat(paths)
|
|
240
|
+
real_path.push(path).concat(paths).compact!
|
|
237
241
|
Doing.logger.debug('Config:', "translated key path #{keypath} to #{real_path.join('.')}")
|
|
238
242
|
return real_path
|
|
239
243
|
end
|
|
@@ -357,6 +361,27 @@ module Doing
|
|
|
357
361
|
config
|
|
358
362
|
end
|
|
359
363
|
|
|
364
|
+
##
|
|
365
|
+
## Save a set of options to the `views` configuration
|
|
366
|
+
##
|
|
367
|
+
## @param view [Hash] view options
|
|
368
|
+
## @param title [String] view title
|
|
369
|
+
##
|
|
370
|
+
def save_view(view, title)
|
|
371
|
+
title.downcase!
|
|
372
|
+
default_template = Doing.setting('templates.default')
|
|
373
|
+
user_config = Util.safe_load_file(config_file)
|
|
374
|
+
user_config['views'] = {} unless user_config.key?('views')
|
|
375
|
+
|
|
376
|
+
view.delete_if { |k, v| v == default_template[k] }
|
|
377
|
+
|
|
378
|
+
user_config['views'][title] = view
|
|
379
|
+
Util.write_to_file(config_file, YAML.dump(user_config), backup: true)
|
|
380
|
+
Doing.logger.warn('Config:', %(View "#{title}" saved to #{config_file}))
|
|
381
|
+
Doing.logger.info('Config:', %(to use, run `doing view #{title}`))
|
|
382
|
+
Hooks.trigger :post_config, self
|
|
383
|
+
end
|
|
384
|
+
|
|
360
385
|
# @private
|
|
361
386
|
def inspect
|
|
362
387
|
%(<Doing::Configuration #{@settings.hash}>)
|