doing 2.0.3.pre → 2.0.8.pre
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +40 -1
- data/Gemfile.lock +1 -1
- data/README.md +1 -1
- data/bin/doing +316 -114
- data/doing.rdoc +244 -19
- data/example_plugin.rb +1 -1
- data/generate_completions.sh +1 -0
- data/lib/completion/_doing.zsh +179 -127
- data/lib/completion/doing.bash +60 -27
- data/lib/completion/doing.fish +74 -23
- data/lib/doing/cli_status.rb +4 -0
- data/lib/doing/configuration.rb +2 -0
- data/lib/doing/errors.rb +22 -15
- data/lib/doing/item.rb +12 -11
- data/lib/doing/log_adapter.rb +27 -25
- data/lib/doing/plugin_manager.rb +1 -1
- data/lib/doing/plugins/export/json_export.rb +2 -2
- data/lib/doing/plugins/export/template_export.rb +1 -1
- data/lib/doing/plugins/import/calendar_import.rb +7 -1
- data/lib/doing/plugins/import/doing_import.rb +6 -6
- data/lib/doing/plugins/import/timing_import.rb +7 -1
- data/lib/doing/string.rb +9 -7
- data/lib/doing/version.rb +1 -1
- data/lib/doing/wwid.rb +160 -92
- data/lib/examples/commands/autotag.rb +63 -0
- data/lib/examples/commands/wiki.rb +1 -0
- data/lib/examples/plugins/say_export.rb +1 -1
- data/lib/examples/plugins/{templates → wiki_export/templates}/wiki.css +0 -0
- data/lib/examples/plugins/{templates → wiki_export/templates}/wiki.haml +0 -0
- data/lib/examples/plugins/{templates → wiki_export/templates}/wiki_index.haml +0 -0
- data/lib/examples/plugins/{wiki_export.rb → wiki_export/wiki_export.rb} +0 -0
- data/scripts/generate_bash_completions.rb +3 -2
- data/scripts/generate_fish_completions.rb +4 -1
- data/scripts/generate_zsh_completions.rb +44 -39
- metadata +7 -7
- data/doing.fish +0 -278
data/lib/completion/doing.fish
CHANGED
@@ -55,14 +55,16 @@ complete -f -c doing -n '__fish_doing_using_command view' -a '(__fish_doing_comp
|
|
55
55
|
complete -f -c doing -n '__fish_doing_using_command template' -a '(__fish_doing_complete_templates)'
|
56
56
|
complete -f -c doing -s t -l type -x -n '__fish_doing_using_command import' -a '(__fish_doing_import_plugins)'
|
57
57
|
|
58
|
+
complete -xc doing -n '__fish_seen_subcommand_from help; and not __fish_seen_subcommand_from (doing help -c)' -a "(doing help -c)"
|
58
59
|
|
59
60
|
complete -xc doing -n '__fish_doing_needs_command' -a 'add_section' -d Add\ a\ new\ section\ to\ the\ \"doing\"\ file
|
60
61
|
complete -xc doing -n '__fish_doing_needs_command' -a 'again resume' -d Repeat\ last\ entry\ as\ new\ entry
|
61
|
-
complete -xc doing -n '__fish_doing_needs_command' -a 'archive' -d Move\ entries\ between\ sections
|
62
|
+
complete -xc doing -n '__fish_doing_needs_command' -a 'archive move' -d Move\ entries\ between\ sections
|
63
|
+
complete -xc doing -n '__fish_doing_needs_command' -a 'autotag' -d Autotag\ last\ entry\ or\ filtered\ entries
|
62
64
|
complete -xc doing -n '__fish_doing_needs_command' -a 'cancel' -d End\ last\ X\ entries\ with\ no\ time\ tracked
|
63
65
|
complete -xc doing -n '__fish_doing_needs_command' -a 'choose' -d Select\ a\ section\ to\ display\ from\ a\ menu
|
64
66
|
complete -xc doing -n '__fish_doing_needs_command' -a 'colors' -d List\ available\ color\ variables\ for\ configuration\ templates\ and\ views
|
65
|
-
complete -xc doing -n '__fish_doing_needs_command' -a 'config' -d Edit\ the\ configuration\ file
|
67
|
+
complete -xc doing -n '__fish_doing_needs_command' -a 'config' -d Edit\ the\ configuration\ file\ or\ output\ a\ value\ from\ it
|
66
68
|
complete -xc doing -n '__fish_doing_needs_command' -a 'done did' -d Add\ a\ completed\ item\ with\ @done\(date\)
|
67
69
|
complete -xc doing -n '__fish_doing_needs_command' -a 'finish' -d Mark\ last\ X\ entries\ as\ @done
|
68
70
|
complete -xc doing -n '__fish_doing_needs_command' -a 'grep search' -d Search\ for\ entries
|
@@ -70,7 +72,7 @@ complete -xc doing -n '__fish_doing_needs_command' -a 'help' -d Shows\ a\ list\
|
|
70
72
|
complete -xc doing -n '__fish_doing_needs_command' -a 'import' -d Import\ entries\ from\ an\ external\ source
|
71
73
|
complete -xc doing -n '__fish_doing_needs_command' -a 'last' -d Show\ the\ last\ entry
|
72
74
|
complete -xc doing -n '__fish_doing_needs_command' -a 'later' -d Add\ an\ item\ to\ the\ Later\ section
|
73
|
-
complete -xc doing -n '__fish_doing_needs_command' -a 'mark flag' -d Mark\ last\ entry\ as\
|
75
|
+
complete -xc doing -n '__fish_doing_needs_command' -a 'mark flag' -d Mark\ last\ entry\ as\ flagged
|
74
76
|
complete -xc doing -n '__fish_doing_needs_command' -a 'meanwhile' -d Finish\ any\ running\ @meanwhile\ tasks\ and\ optionally\ create\ a\ new\ one
|
75
77
|
complete -xc doing -n '__fish_doing_needs_command' -a 'note' -d Add\ a\ note\ to\ the\ last\ entry
|
76
78
|
complete -xc doing -n '__fish_doing_needs_command' -a 'now next' -d Add\ an\ entry
|
@@ -78,6 +80,7 @@ complete -xc doing -n '__fish_doing_needs_command' -a 'on' -d List\ entries\ for
|
|
78
80
|
complete -xc doing -n '__fish_doing_needs_command' -a 'open' -d Open\ the\ \"doing\"\ file\ in\ an\ editor
|
79
81
|
complete -xc doing -n '__fish_doing_needs_command' -a 'plugins' -d List\ installed\ plugins
|
80
82
|
complete -xc doing -n '__fish_doing_needs_command' -a 'recent' -d List\ recent\ entries
|
83
|
+
complete -xc doing -n '__fish_doing_needs_command' -a 'reset begin' -d Reset\ the\ start\ time\ of\ an\ entry
|
81
84
|
complete -xc doing -n '__fish_doing_needs_command' -a 'rotate' -d Move\ entries\ to\ archive\ file
|
82
85
|
complete -xc doing -n '__fish_doing_needs_command' -a 'sections' -d List\ sections
|
83
86
|
complete -xc doing -n '__fish_doing_needs_command' -a 'select' -d Display\ an\ interactive\ menu\ to\ perform\ operations
|
@@ -85,46 +88,65 @@ complete -xc doing -n '__fish_doing_needs_command' -a 'show' -d List\ all\ entri
|
|
85
88
|
complete -xc doing -n '__fish_doing_needs_command' -a 'since' -d List\ entries\ since\ a\ date
|
86
89
|
complete -xc doing -n '__fish_doing_needs_command' -a 'tag' -d Add\ tag\(s\)\ to\ last\ entry
|
87
90
|
complete -xc doing -n '__fish_doing_needs_command' -a 'template' -d Output\ HTML
|
91
|
+
complete -xc doing -n '__fish_doing_needs_command' -a 'test' -d Test\ Stuff
|
88
92
|
complete -xc doing -n '__fish_doing_needs_command' -a 'today' -d List\ entries\ from\ today
|
89
93
|
complete -xc doing -n '__fish_doing_needs_command' -a 'undo' -d Undo\ the\ last\ change\ to\ the\ doing_file
|
90
94
|
complete -xc doing -n '__fish_doing_needs_command' -a 'view' -d Display\ a\ user-created\ view
|
91
95
|
complete -xc doing -n '__fish_doing_needs_command' -a 'views' -d List\ available\ custom\ views
|
96
|
+
complete -xc doing -n '__fish_doing_needs_command' -a 'wiki' -d Output\ a\ tag\ wiki
|
92
97
|
complete -xc doing -n '__fish_doing_needs_command' -a 'yesterday' -d List\ entries\ from\ yesterday
|
93
98
|
complete -c doing -l bool -f -r -n '__fish_doing_using_command again resume' -d Boolean\ used\ to\ combine\ multiple\ tags
|
94
|
-
complete -c doing -l editor -s e -f -n '__fish_doing_using_command again resume' -d Edit\ duplicated\ entry\ with\ before\ adding
|
99
|
+
complete -c doing -l editor -s e -f -n '__fish_doing_using_command again resume' -d Edit\ duplicated\ entry\ with\ vim\ before\ adding
|
100
|
+
complete -c doing -l interactive -s i -f -n '__fish_doing_using_command again resume' -d Select\ item\ to\ resume\ from\ a\ menu\ of\ matching\ entries
|
95
101
|
complete -c doing -l in -f -r -n '__fish_doing_using_command again resume' -d Add\ new\ entry\ to\ section
|
96
102
|
complete -c doing -l note -s n -f -r -n '__fish_doing_using_command again resume' -d Note
|
97
103
|
complete -c doing -l section -s s -f -r -n '__fish_doing_using_command again resume' -d Get\ last\ entry\ from\ a\ specific\ section
|
98
104
|
complete -c doing -l search -f -r -n '__fish_doing_using_command again resume' -d Repeat\ last\ entry\ matching\ search
|
99
105
|
complete -c doing -l tag -f -r -n '__fish_doing_using_command again resume' -d Repeat\ last\ entry\ matching\ tags
|
100
|
-
complete -c doing -l before -f -r -n '__fish_doing_using_command archive' -d Archive\ entries\ older\ than\ date
|
101
|
-
complete -c doing -l bool -f -r -n '__fish_doing_using_command archive' -d Tag\ boolean
|
102
|
-
complete -c doing -l keep -s k -f -r -n '__fish_doing_using_command archive' -d How\ many\ items\ to\ keep
|
103
|
-
complete -c doing -l label -f -n '__fish_doing_using_command archive' -d Label\ moved\ items\ with\ @from\(SECTION_NAME\)
|
104
|
-
complete -c doing -l search -f -r -n '__fish_doing_using_command archive' -d Search\ filter
|
105
|
-
complete -c doing -l to -s t -f -r -n '__fish_doing_using_command archive' -d Move\ entries\ to
|
106
|
-
complete -c doing -l tag -f -r -n '__fish_doing_using_command archive' -d Tag\ filter
|
106
|
+
complete -c doing -l before -f -r -n '__fish_doing_using_command archive move' -d Archive\ entries\ older\ than\ date
|
107
|
+
complete -c doing -l bool -f -r -n '__fish_doing_using_command archive move' -d Tag\ boolean
|
108
|
+
complete -c doing -l keep -s k -f -r -n '__fish_doing_using_command archive move' -d How\ many\ items\ to\ keep
|
109
|
+
complete -c doing -l label -f -n '__fish_doing_using_command archive move' -d Label\ moved\ items\ with\ @from\(SECTION_NAME\)
|
110
|
+
complete -c doing -l search -f -r -n '__fish_doing_using_command archive move' -d Search\ filter
|
111
|
+
complete -c doing -l to -s t -f -r -n '__fish_doing_using_command archive move' -d Move\ entries\ to
|
112
|
+
complete -c doing -l tag -f -r -n '__fish_doing_using_command archive move' -d Tag\ filter
|
113
|
+
complete -c doing -l bool -f -r -n '__fish_doing_using_command autotag' -d Boolean
|
114
|
+
complete -c doing -l count -s c -f -r -n '__fish_doing_using_command autotag' -d How\ many\ recent\ entries\ to\ autotag
|
115
|
+
complete -c doing -l force -f -n '__fish_doing_using_command autotag' -d Don\'t\ ask\ permission\ to\ autotag\ all\ entries\ when\ count\ is\ 0
|
116
|
+
complete -c doing -l interactive -s i -f -n '__fish_doing_using_command autotag' -d Select\ item\(s\)\ to\ tag\ from\ a\ menu\ of\ matching\ entries
|
117
|
+
complete -c doing -l section -s s -f -r -n '__fish_doing_using_command autotag' -d Section
|
118
|
+
complete -c doing -l search -f -r -n '__fish_doing_using_command autotag' -d Autotag\ entries\ matching\ search\ filter
|
119
|
+
complete -c doing -l tag -f -r -n '__fish_doing_using_command autotag' -d Autotag\ the\ last\ X\ entries\ containing\ TAG
|
120
|
+
complete -c doing -l unfinished -s u -f -n '__fish_doing_using_command autotag' -d Autotag\ last\ entry
|
107
121
|
complete -c doing -l archive -s a -f -n '__fish_doing_using_command cancel' -d Archive\ entries
|
108
122
|
complete -c doing -l bool -f -r -n '__fish_doing_using_command cancel' -d Boolean
|
123
|
+
complete -c doing -l interactive -s i -f -n '__fish_doing_using_command cancel' -d Select\ item\(s\)\ to\ cancel\ from\ a\ menu\ of\ matching\ entries
|
109
124
|
complete -c doing -l section -s s -f -r -n '__fish_doing_using_command cancel' -d Section
|
110
125
|
complete -c doing -l tag -f -r -n '__fish_doing_using_command cancel' -d Cancel\ the\ last\ X\ entries\ containing\ TAG
|
111
126
|
complete -c doing -l unfinished -s u -f -n '__fish_doing_using_command cancel' -d Cancel\ last\ entry
|
127
|
+
complete -c doing -F -n '__fish_doing_using_command config'
|
128
|
+
complete -c doing -l dump -s d -f -n '__fish_doing_using_command config' -d Show\ a\ config\ key\ value\ based\ on\ arguments
|
112
129
|
complete -c doing -l editor -s e -f -r -n '__fish_doing_using_command config' -d Editor\ to\ use
|
130
|
+
complete -c doing -l output -s o -f -r -n '__fish_doing_using_command config' -d Format\ for\ --dump
|
113
131
|
complete -c doing -l update -s u -f -n '__fish_doing_using_command config' -d Update\ config\ file\ with\ missing\ configuration\ options
|
114
132
|
complete -c doing -l archive -s a -f -n '__fish_doing_using_command done did' -d Immediately\ archive\ the\ entry
|
115
133
|
complete -c doing -l at -f -r -n '__fish_doing_using_command done did' -d Set\ finish\ date\ to\ specific\ date/time
|
116
134
|
complete -c doing -l back -s b -f -r -n '__fish_doing_using_command done did' -d Backdate\ start\ date\ by\ interval\ \[4pm\|20m\|2h\|yesterday\ noon\]
|
117
135
|
complete -c doing -l date -f -n '__fish_doing_using_command done did' -d Include\ date
|
118
|
-
complete -c doing -l editor -s e -f -n '__fish_doing_using_command done did' -d Edit\ entry\ with
|
136
|
+
complete -c doing -l editor -s e -f -n '__fish_doing_using_command done did' -d Edit\ entry\ with\ vim
|
137
|
+
complete -c doing -l note -s n -f -r -n '__fish_doing_using_command done did' -d Include\ a\ note
|
119
138
|
complete -c doing -l remove -s r -f -n '__fish_doing_using_command done did' -d Remove\ @done\ tag
|
120
139
|
complete -c doing -l section -s s -f -r -n '__fish_doing_using_command done did' -d Section
|
121
140
|
complete -c doing -l took -s t -f -r -n '__fish_doing_using_command done did' -d Set\ completion\ date\ to\ start\ date\ plus\ interval
|
141
|
+
complete -c doing -l unfinished -s u -f -n '__fish_doing_using_command done did' -d Finish\ last\ entry\ not\ already\ marked\ @done
|
122
142
|
complete -c doing -l archive -s a -f -n '__fish_doing_using_command finish' -d Archive\ entries
|
123
143
|
complete -c doing -l at -f -r -n '__fish_doing_using_command finish' -d Set\ finish\ date\ to\ specific\ date/time
|
124
144
|
complete -c doing -l auto -f -n '__fish_doing_using_command finish' -d Auto-generate\ finish\ dates\ from\ next\ entry\'s\ start\ time
|
125
145
|
complete -c doing -l back -s b -f -r -n '__fish_doing_using_command finish' -d Backdate\ completed\ date\ to\ date\ string\ \[4pm\|20m\|2h\|yesterday\ noon\]
|
126
146
|
complete -c doing -l bool -f -r -n '__fish_doing_using_command finish' -d Boolean
|
127
147
|
complete -c doing -l date -f -n '__fish_doing_using_command finish' -d Include\ date
|
148
|
+
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
|
149
|
+
complete -c doing -l remove -s r -f -n '__fish_doing_using_command finish' -d Remove\ done\ tag
|
128
150
|
complete -c doing -l section -s s -f -r -n '__fish_doing_using_command finish' -d Section
|
129
151
|
complete -c doing -l search -f -r -n '__fish_doing_using_command finish' -d Finish\ the\ last\ X\ entries\ matching\ search\ filter
|
130
152
|
complete -c doing -l took -s t -f -r -n '__fish_doing_using_command finish' -d Set\ the\ completed\ date\ to\ the\ start\ date\ plus\ XX\[hmd\]
|
@@ -152,28 +174,39 @@ complete -c doing -l search -f -r -n '__fish_doing_using_command import' -d Onl
|
|
152
174
|
complete -c doing -l tag -f -r -n '__fish_doing_using_command import' -d Tag\ all\ imported\ entries
|
153
175
|
complete -c doing -l type -f -r -n '__fish_doing_using_command import' -d Import\ type
|
154
176
|
complete -c doing -l bool -f -r -n '__fish_doing_using_command last' -d Tag\ boolean
|
155
|
-
complete -c doing -l editor -s e -f -n '__fish_doing_using_command last' -d Edit\ entry\ with
|
177
|
+
complete -c doing -l editor -s e -f -n '__fish_doing_using_command last' -d Edit\ entry\ with\ vim
|
156
178
|
complete -c doing -l section -s s -f -r -n '__fish_doing_using_command last' -d Specify\ a\ section
|
157
179
|
complete -c doing -l search -f -r -n '__fish_doing_using_command last' -d Search\ filter
|
158
180
|
complete -c doing -l tag -f -r -n '__fish_doing_using_command last' -d Tag\ filter
|
159
181
|
complete -c doing -l back -s b -f -r -n '__fish_doing_using_command later' -d Backdate\ start\ time\ to\ date\ string\ \[4pm\|20m\|2h\|yesterday\ noon\]
|
160
|
-
complete -c doing -l editor -s e -f -n '__fish_doing_using_command later' -d Edit\ entry\ with
|
182
|
+
complete -c doing -l editor -s e -f -n '__fish_doing_using_command later' -d Edit\ entry\ with\ vim
|
161
183
|
complete -c doing -l note -s n -f -r -n '__fish_doing_using_command later' -d Note
|
162
|
-
complete -c doing -l
|
184
|
+
complete -c doing -l bool -f -r -n '__fish_doing_using_command mark flag' -d Boolean
|
185
|
+
complete -c doing -l count -s c -f -r -n '__fish_doing_using_command mark flag' -d How\ many\ recent\ entries\ to\ tag
|
186
|
+
complete -c doing -l date -s d -f -n '__fish_doing_using_command mark flag' -d Include\ current\ date/time\ with\ tag
|
187
|
+
complete -c doing -l force -f -n '__fish_doing_using_command mark flag' -d Don\'t\ ask\ permission\ to\ flag\ all\ entries\ when\ count\ is\ 0
|
188
|
+
complete -c doing -l interactive -s i -f -n '__fish_doing_using_command mark flag' -d Select\ item\(s\)\ to\ flag\ from\ a\ menu\ of\ matching\ entries
|
189
|
+
complete -c doing -l remove -s r -f -n '__fish_doing_using_command mark flag' -d Remove\ flag
|
163
190
|
complete -c doing -l section -s s -f -r -n '__fish_doing_using_command mark flag' -d Section
|
164
|
-
complete -c doing -l
|
191
|
+
complete -c doing -l search -f -r -n '__fish_doing_using_command mark flag' -d Flag\ the\ last\ entry\ matching\ search\ filter
|
192
|
+
complete -c doing -l tag -f -r -n '__fish_doing_using_command mark flag' -d Flag\ the\ last\ entry\ containing\ TAG
|
193
|
+
complete -c doing -l unfinished -s u -f -n '__fish_doing_using_command mark flag' -d Flag\ last\ entry
|
165
194
|
complete -c doing -l archive -s a -f -n '__fish_doing_using_command meanwhile' -d Archive\ previous\ @meanwhile\ entry
|
166
195
|
complete -c doing -l back -s b -f -r -n '__fish_doing_using_command meanwhile' -d Backdate\ start\ date\ for\ new\ entry\ to\ date\ string\ \[4pm\|20m\|2h\|yesterday\ noon\]
|
167
|
-
complete -c doing -l editor -s e -f -n '__fish_doing_using_command meanwhile' -d Edit\ entry\ with
|
196
|
+
complete -c doing -l editor -s e -f -n '__fish_doing_using_command meanwhile' -d Edit\ entry\ with\ vim
|
168
197
|
complete -c doing -l note -s n -f -r -n '__fish_doing_using_command meanwhile' -d Note
|
169
198
|
complete -c doing -l section -s s -f -r -n '__fish_doing_using_command meanwhile' -d Section
|
170
|
-
complete -c doing -l
|
199
|
+
complete -c doing -l bool -f -r -n '__fish_doing_using_command note' -d Boolean
|
200
|
+
complete -c doing -l editor -s e -f -n '__fish_doing_using_command note' -d Edit\ entry\ with\ vim
|
201
|
+
complete -c doing -l interactive -s i -f -n '__fish_doing_using_command note' -d Select\ item\ for\ new\ note\ from\ a\ menu\ of\ matching\ entries
|
171
202
|
complete -c doing -l remove -s r -f -n '__fish_doing_using_command note' -d Replace/Remove\ last\ entry\'s\ note
|
172
203
|
complete -c doing -l section -s s -f -r -n '__fish_doing_using_command note' -d Section
|
204
|
+
complete -c doing -l search -f -r -n '__fish_doing_using_command note' -d Add/remove\ note\ from\ last\ entry\ matching\ search\ filter
|
205
|
+
complete -c doing -l tag -f -r -n '__fish_doing_using_command note' -d Add/remove\ note\ from\ last\ entry\ matching\ tag
|
173
206
|
complete -c doing -l back -s b -f -r -n '__fish_doing_using_command now next' -d Backdate\ start\ time\ \[4pm\|20m\|2h\|yesterday\ noon\]
|
174
|
-
complete -c doing -l editor -s e -f -n '__fish_doing_using_command now next' -d Edit\ entry\ with
|
207
|
+
complete -c doing -l editor -s e -f -n '__fish_doing_using_command now next' -d Edit\ entry\ with\ vim
|
175
208
|
complete -c doing -l finish_last -s f -f -n '__fish_doing_using_command now next' -d Timed\ entry
|
176
|
-
complete -c doing -l note -s n -f -r -n '__fish_doing_using_command now next' -d
|
209
|
+
complete -c doing -l note -s n -f -r -n '__fish_doing_using_command now next' -d Include\ a\ note
|
177
210
|
complete -c doing -l section -s s -f -r -n '__fish_doing_using_command now next' -d Section
|
178
211
|
complete -c doing -l output -s o -f -r -n '__fish_doing_using_command on' -d Output\ to\ export\ format
|
179
212
|
complete -c doing -l section -s s -f -r -n '__fish_doing_using_command on' -d Section
|
@@ -182,13 +215,19 @@ complete -c doing -l tag_sort -f -r -n '__fish_doing_using_command on' -d Sort\
|
|
182
215
|
complete -c doing -l totals -f -n '__fish_doing_using_command on' -d Show\ time\ totals\ at\ the\ end\ of\ output
|
183
216
|
complete -c doing -l app -s a -f -r -n '__fish_doing_using_command open' -d Open\ with\ app\ name
|
184
217
|
complete -c doing -l bundle_id -s b -f -r -n '__fish_doing_using_command open' -d Open\ with\ app\ bundle\ id
|
185
|
-
complete -c doing -l editor -s e -f -n '__fish_doing_using_command open' -d Open\ with\ \$EDITOR
|
186
218
|
complete -c doing -l column -s c -f -n '__fish_doing_using_command plugins' -d List\ in\ single\ column\ for\ completion
|
187
219
|
complete -c doing -l type -s t -f -r -n '__fish_doing_using_command plugins' -d List\ plugins\ of\ type
|
220
|
+
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
|
188
221
|
complete -c doing -l section -s s -f -r -n '__fish_doing_using_command recent' -d Section
|
189
222
|
complete -c doing -l times -s t -f -n '__fish_doing_using_command recent' -d Show\ time\ intervals\ on\ @done\ tasks
|
190
223
|
complete -c doing -l tag_sort -f -r -n '__fish_doing_using_command recent' -d Sort\ tags\ by
|
191
224
|
complete -c doing -l totals -f -n '__fish_doing_using_command recent' -d Show\ intervals\ with\ totals\ at\ the\ end\ of\ output
|
225
|
+
complete -c doing -l bool -f -r -n '__fish_doing_using_command reset begin' -d Boolean
|
226
|
+
complete -c doing -l interactive -s i -f -n '__fish_doing_using_command reset begin' -d Select\ from\ a\ menu\ of\ matching\ entries
|
227
|
+
complete -c doing -l resume -s r -f -n '__fish_doing_using_command reset begin' -d Resume\ entry
|
228
|
+
complete -c doing -l section -s s -f -r -n '__fish_doing_using_command reset begin' -d Set\ the\ start\ date\ of\ an\ item\ to\ now
|
229
|
+
complete -c doing -l search -f -r -n '__fish_doing_using_command reset begin' -d Reset\ last\ entry\ matching\ search\ filter
|
230
|
+
complete -c doing -l tag -f -r -n '__fish_doing_using_command reset begin' -d Reset\ last\ entry\ matching\ tag
|
192
231
|
complete -c doing -l before -f -r -n '__fish_doing_using_command rotate' -d Rotate\ entries\ older\ than\ date
|
193
232
|
complete -c doing -l bool -f -r -n '__fish_doing_using_command rotate' -d Tag\ boolean
|
194
233
|
complete -c doing -l keep -s k -f -r -n '__fish_doing_using_command rotate' -d How\ many\ items\ to\ keep\ in\ each\ section
|
@@ -197,6 +236,7 @@ complete -c doing -l search -f -r -n '__fish_doing_using_command rotate' -d Sea
|
|
197
236
|
complete -c doing -l tag -f -r -n '__fish_doing_using_command rotate' -d Tag\ filter
|
198
237
|
complete -c doing -l column -s c -f -n '__fish_doing_using_command sections' -d List\ in\ single\ column
|
199
238
|
complete -c doing -l archive -s a -f -n '__fish_doing_using_command select' -d Archive\ selected\ items
|
239
|
+
complete -c doing -l resume -f -n '__fish_doing_using_command select' -d Copy\ selection\ as\ a\ new\ entry\ with\ current\ time\ and\ no\ @done\ tag
|
200
240
|
complete -c doing -l cancel -s c -f -n '__fish_doing_using_command select' -d Cancel\ selected\ items
|
201
241
|
complete -c doing -l delete -s d -f -n '__fish_doing_using_command select' -d Delete\ selected\ items
|
202
242
|
complete -c doing -l editor -s e -f -n '__fish_doing_using_command select' -d Edit\ selected\ item\(s\)
|
@@ -206,7 +246,7 @@ complete -c doing -l force -f -n '__fish_doing_using_command select' -d Perfor
|
|
206
246
|
complete -c doing -l move -s m -f -r -n '__fish_doing_using_command select' -d Move\ selected\ items\ to\ section
|
207
247
|
complete -c doing -l menu -f -n '__fish_doing_using_command select' -d Use\ --no-menu\ to\ skip\ the\ interactive\ menu
|
208
248
|
complete -c doing -l output -s o -f -r -n '__fish_doing_using_command select' -d Output\ entries\ to\ format
|
209
|
-
complete -c doing -l
|
249
|
+
complete -c doing -l search -f -r -n '__fish_doing_using_command select' -d Initial\ search\ query\ for\ filtering
|
210
250
|
complete -c doing -l remove -s r -f -n '__fish_doing_using_command select' -d Reverse\ -c
|
211
251
|
complete -c doing -l section -s s -f -r -n '__fish_doing_using_command select' -d Select\ from\ a\ specific\ section
|
212
252
|
complete -c doing -l save_to -f -r -n '__fish_doing_using_command select' -d Save\ selected\ entries\ to\ file\ using\ --output\ format
|
@@ -217,6 +257,7 @@ complete -c doing -l bool -s b -f -r -n '__fish_doing_using_command show' -d Tag
|
|
217
257
|
complete -c doing -l before -f -r -n '__fish_doing_using_command show' -d View\ entries\ older\ than\ date
|
218
258
|
complete -c doing -l count -s c -f -r -n '__fish_doing_using_command show' -d Max\ count\ to\ show
|
219
259
|
complete -c doing -l from -s f -f -r -n '__fish_doing_using_command show' -d Date\ range\ to\ show
|
260
|
+
complete -c doing -l interactive -s i -f -n '__fish_doing_using_command show' -d Select\ from\ a\ menu\ of\ matching\ entries\ to\ perform\ additional\ operations
|
220
261
|
complete -c doing -l output -s o -f -r -n '__fish_doing_using_command show' -d Output\ to\ export\ format
|
221
262
|
complete -c doing -l only_timed -f -n '__fish_doing_using_command show' -d Only\ show\ items\ with\ recorded\ time\ intervals
|
222
263
|
complete -c doing -l sort -s s -f -r -n '__fish_doing_using_command show' -d Sort\ order
|
@@ -236,6 +277,7 @@ complete -c doing -l bool -f -r -n '__fish_doing_using_command tag' -d Boolean
|
|
236
277
|
complete -c doing -l count -s c -f -r -n '__fish_doing_using_command tag' -d How\ many\ recent\ entries\ to\ tag
|
237
278
|
complete -c doing -l date -s d -f -n '__fish_doing_using_command tag' -d Include\ current\ date/time\ with\ tag
|
238
279
|
complete -c doing -l force -f -n '__fish_doing_using_command tag' -d Don\'t\ ask\ permission\ to\ tag\ all\ entries\ when\ count\ is\ 0
|
280
|
+
complete -c doing -l interactive -s i -f -n '__fish_doing_using_command tag' -d Select\ item\(s\)\ to\ tag\ from\ a\ menu\ of\ matching\ entries
|
239
281
|
complete -c doing -l remove -s r -f -n '__fish_doing_using_command tag' -d Remove\ given\ tag\(s\)
|
240
282
|
complete -c doing -l regex -f -n '__fish_doing_using_command tag' -d Interpret\ tag\ string\ as\ regular\ expression
|
241
283
|
complete -c doing -l rename -f -r -n '__fish_doing_using_command tag' -d Replace\ existing\ tag\ with\ tag\ argument
|
@@ -257,6 +299,7 @@ complete -c doing -l bool -s b -f -r -n '__fish_doing_using_command view' -d Tag
|
|
257
299
|
complete -c doing -l before -f -r -n '__fish_doing_using_command view' -d View\ entries\ older\ than\ date
|
258
300
|
complete -c doing -l count -s c -f -r -n '__fish_doing_using_command view' -d Count\ to\ display
|
259
301
|
complete -c doing -l color -f -n '__fish_doing_using_command view' -d Include\ colors\ in\ output
|
302
|
+
complete -c doing -l interactive -s i -f -n '__fish_doing_using_command view' -d Select\ from\ a\ menu\ of\ matching\ entries\ to\ perform\ additional\ operations
|
260
303
|
complete -c doing -l output -s o -f -r -n '__fish_doing_using_command view' -d Output\ to\ export\ format
|
261
304
|
complete -c doing -l only_timed -f -n '__fish_doing_using_command view' -d Only\ show\ items\ with\ recorded\ time\ intervals
|
262
305
|
complete -c doing -l section -s s -f -r -n '__fish_doing_using_command view' -d Section
|
@@ -267,6 +310,14 @@ complete -c doing -l tag_order -f -r -n '__fish_doing_using_command view' -d Ta
|
|
267
310
|
complete -c doing -l tag_sort -f -r -n '__fish_doing_using_command view' -d Sort\ tags\ by
|
268
311
|
complete -c doing -l totals -f -n '__fish_doing_using_command view' -d Show\ intervals\ with\ totals\ at\ the\ end\ of\ output
|
269
312
|
complete -c doing -l column -s c -f -n '__fish_doing_using_command views' -d List\ in\ single\ column
|
313
|
+
complete -c doing -l after -f -r -n '__fish_doing_using_command wiki' -d Include\ entries\ newer\ than\ date
|
314
|
+
complete -c doing -l bool -s b -f -r -n '__fish_doing_using_command wiki' -d Tag\ boolean
|
315
|
+
complete -c doing -l before -f -r -n '__fish_doing_using_command wiki' -d Include\ entries\ older\ than\ date
|
316
|
+
complete -c doing -l from -s f -f -r -n '__fish_doing_using_command wiki' -d Date\ range\ to\ include
|
317
|
+
complete -c doing -l only_timed -f -n '__fish_doing_using_command wiki' -d Only\ show\ items\ with\ recorded\ time\ intervals
|
318
|
+
complete -c doing -l section -s s -f -r -n '__fish_doing_using_command wiki' -d Section\ to\ rotate
|
319
|
+
complete -c doing -l search -f -r -n '__fish_doing_using_command wiki' -d Search\ filter
|
320
|
+
complete -c doing -l tag -f -r -n '__fish_doing_using_command wiki' -d Tag\ filter
|
270
321
|
complete -c doing -l after -f -r -n '__fish_doing_using_command yesterday' -d View\ entries\ after\ specified\ time
|
271
322
|
complete -c doing -l before -f -r -n '__fish_doing_using_command yesterday' -d View\ entries\ before\ specified\ time
|
272
323
|
complete -c doing -l output -s o -f -r -n '__fish_doing_using_command yesterday' -d Output\ to\ export\ format
|
@@ -275,4 +326,4 @@ complete -c doing -l times -s t -f -n '__fish_doing_using_command yesterday' -d
|
|
275
326
|
complete -c doing -l tag_order -f -r -n '__fish_doing_using_command yesterday' -d Tag\ sort\ direction
|
276
327
|
complete -c doing -l tag_sort -f -r -n '__fish_doing_using_command yesterday' -d Sort\ tags\ by
|
277
328
|
complete -c doing -l totals -f -n '__fish_doing_using_command yesterday' -d Show\ time\ totals\ at\ the\ end\ of\ output
|
278
|
-
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_plugins)'
|
329
|
+
complete -f -c doing -s o -l output -x -n '__fish_doing_using_command config grep search on select show since today view yesterday' -a '(__fish_doing_export_plugins)'
|
data/lib/doing/cli_status.rb
CHANGED
@@ -18,6 +18,10 @@ module Status
|
|
18
18
|
$stderr.print format("#{esc['kill']}#{esc['boldyellow']}> #{esc['whiteboard']}%s#{esc['default']}%s", msg, reset ? "\r" : "\n")
|
19
19
|
end
|
20
20
|
|
21
|
+
def clear
|
22
|
+
$stderr.print format("\r#{esc['kill']}")
|
23
|
+
end
|
24
|
+
|
21
25
|
def esc
|
22
26
|
e = {}
|
23
27
|
e['kill'] = "\033[2K"
|
data/lib/doing/configuration.rb
CHANGED
data/lib/doing/errors.rb
CHANGED
@@ -2,53 +2,61 @@
|
|
2
2
|
|
3
3
|
module Doing
|
4
4
|
module Errors
|
5
|
-
|
6
5
|
class UserCancelled < ::StandardError
|
7
|
-
def initialize(msg='Cancelled')
|
6
|
+
def initialize(msg = 'Cancelled', topic = 'Exited:')
|
8
7
|
Doing.logger.output_results
|
9
|
-
Doing.logger.log_now(:warn,
|
8
|
+
Doing.logger.log_now(:warn, topic, msg)
|
10
9
|
Process.exit 1
|
11
10
|
end
|
12
11
|
end
|
13
12
|
|
14
13
|
class EmptyInput < ::StandardError
|
15
|
-
def initialize(msg='No input')
|
14
|
+
def initialize(msg = 'No input', topic = 'Exited:')
|
16
15
|
Doing.logger.output_results
|
17
|
-
Doing.logger.log_now(:warn,
|
16
|
+
Doing.logger.log_now(:warn, topic, msg)
|
18
17
|
Process.exit 1
|
19
18
|
end
|
20
19
|
end
|
21
20
|
|
22
21
|
class DoingStandardError < ::StandardError
|
23
|
-
def initialize(msg='')
|
22
|
+
def initialize(msg = '')
|
24
23
|
Doing.logger.output_results
|
25
24
|
|
26
25
|
super
|
27
26
|
end
|
28
27
|
end
|
29
28
|
|
29
|
+
class WrongCommand < ::StandardError
|
30
|
+
def initialize(msg = 'wrong command', topic: 'Error:')
|
31
|
+
Doing.logger.warn(topic, msg)
|
32
|
+
|
33
|
+
super(msg)
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
30
37
|
class DoingRuntimeError < ::RuntimeError
|
31
|
-
def initialize(msg='')
|
38
|
+
def initialize(msg = 'Runtime Error', topic: 'Error:')
|
32
39
|
Doing.logger.output_results
|
33
|
-
|
34
|
-
|
40
|
+
Doing.logger.log_now(:error, topic, msg)
|
41
|
+
Process.exit 1
|
35
42
|
end
|
36
43
|
end
|
37
44
|
|
38
45
|
class NoResults < ::StandardError
|
39
|
-
def initialize(msg='No results')
|
46
|
+
def initialize(msg = 'No results', topic = 'Exited:')
|
40
47
|
Doing.logger.output_results
|
48
|
+
Doing.logger.log_now(:warn, topic, msg)
|
41
49
|
Process.exit 0
|
42
50
|
|
43
51
|
end
|
44
52
|
end
|
45
53
|
|
46
54
|
class DoingNoTraceError < ::StandardError
|
47
|
-
def initialize(msg = nil, level = nil)
|
55
|
+
def initialize(msg = nil, level = nil, topic = nil)
|
48
56
|
level ||= :error
|
49
57
|
Doing.logger.output_results
|
50
58
|
if msg
|
51
|
-
Doing.logger.log_now(level, msg)
|
59
|
+
Doing.logger.log_now(level, topic, msg)
|
52
60
|
end
|
53
61
|
|
54
62
|
Process.exit 1
|
@@ -58,7 +66,7 @@ module Doing
|
|
58
66
|
class PluginException < ::StandardError
|
59
67
|
attr_reader :plugin
|
60
68
|
|
61
|
-
def initialize(msg = 'Plugin error', type
|
69
|
+
def initialize(msg = 'Plugin error', type = nil, plugin = nil)
|
62
70
|
@plugin = plugin || 'Unknown Plugin'
|
63
71
|
|
64
72
|
type ||= 'Unknown'
|
@@ -73,8 +81,7 @@ module Doing
|
|
73
81
|
|
74
82
|
msg = "(#{@type}: #{@plugin}) #{msg}"
|
75
83
|
|
76
|
-
Doing.logger.error
|
77
|
-
Doing.logger.output_results
|
84
|
+
Doing.logger.log_now(:error, 'Plugin:', msg)
|
78
85
|
Process.exit 1
|
79
86
|
end
|
80
87
|
end
|
data/lib/doing/item.rb
CHANGED
@@ -60,21 +60,22 @@ module Doing
|
|
60
60
|
@title.scan(/(?<= |\A)@([^\s(]+)/).map {|tag| tag[0]}.sort.uniq
|
61
61
|
end
|
62
62
|
|
63
|
-
def tags?(tags, bool = :and)
|
63
|
+
def tags?(tags, bool = :and, negate: false)
|
64
64
|
tags = split_tags(tags)
|
65
65
|
bool = bool.normalize_bool
|
66
66
|
|
67
|
-
case bool
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
67
|
+
matches = case bool
|
68
|
+
when :and
|
69
|
+
all_tags?(tags)
|
70
|
+
when :not
|
71
|
+
no_tags?(tags)
|
72
|
+
else
|
73
|
+
any_tags?(tags)
|
74
|
+
end
|
75
|
+
negate ? !matches : matches
|
75
76
|
end
|
76
77
|
|
77
|
-
def search(search)
|
78
|
+
def search(search, negate: false)
|
78
79
|
text = @title + @note.to_s
|
79
80
|
pattern = case search.strip
|
80
81
|
when %r{^/.*?/$}
|
@@ -88,7 +89,7 @@ module Doing
|
|
88
89
|
end
|
89
90
|
rx = Regexp.new(pattern, !case_sensitive)
|
90
91
|
|
91
|
-
text =~ rx
|
92
|
+
negate ? text !~ rx : text =~ rx
|
92
93
|
end
|
93
94
|
|
94
95
|
def should_finish?
|
data/lib/doing/log_adapter.rb
CHANGED
@@ -18,17 +18,17 @@ module Doing
|
|
18
18
|
error: ::Logger::ERROR
|
19
19
|
}.freeze
|
20
20
|
|
21
|
-
COUNT_KEYS = [
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
21
|
+
COUNT_KEYS = %i[
|
22
|
+
added_tags
|
23
|
+
removed_tags
|
24
|
+
added
|
25
|
+
updated
|
26
|
+
deleted
|
27
|
+
completed
|
28
|
+
archived
|
29
|
+
moved
|
30
|
+
completed_archived
|
31
|
+
skipped
|
32
32
|
].freeze
|
33
33
|
|
34
34
|
#
|
@@ -293,6 +293,22 @@ module Doing
|
|
293
293
|
end
|
294
294
|
end
|
295
295
|
|
296
|
+
def output_results
|
297
|
+
total_counters
|
298
|
+
|
299
|
+
results = @results.select { |msg| write_message?(msg[:level]) }.uniq
|
300
|
+
|
301
|
+
if @logdev == $stdout
|
302
|
+
$stdout.print results.map {|res| res[:message].uncolor }.join("\n")
|
303
|
+
else
|
304
|
+
results.each do |msg|
|
305
|
+
@logdev.puts color_message(msg[:level], msg[:message])
|
306
|
+
end
|
307
|
+
end
|
308
|
+
end
|
309
|
+
|
310
|
+
private
|
311
|
+
|
296
312
|
def color_message(level, topic, message = nil, &block)
|
297
313
|
colors = Doing::Color
|
298
314
|
message = message(topic, message, &block)
|
@@ -324,19 +340,5 @@ module Doing
|
|
324
340
|
|
325
341
|
"#{prefix} #{message.highlight_tags}#{colors.reset}"
|
326
342
|
end
|
327
|
-
|
328
|
-
def output_results
|
329
|
-
total_counters
|
330
|
-
|
331
|
-
results = @results.select { |msg| write_message?(msg[:level]) }.uniq
|
332
|
-
|
333
|
-
if @logdev == $stdout
|
334
|
-
$stdout.print results.map {|res| res[:message].uncolor }.join("\n")
|
335
|
-
else
|
336
|
-
results.each do |msg|
|
337
|
-
@logdev.puts color_message(msg[:level], msg[:message])
|
338
|
-
end
|
339
|
-
end
|
340
|
-
end
|
341
343
|
end
|
342
344
|
end
|
data/lib/doing/plugin_manager.rb
CHANGED
@@ -113,7 +113,7 @@ module Doing
|
|
113
113
|
##
|
114
114
|
def list_plugins(options = {})
|
115
115
|
separator = options[:column] ? "\n" : "\t"
|
116
|
-
type = options[:type].nil? || options[:type] =~ /all/i ? 'all' :
|
116
|
+
type = options[:type].nil? || options[:type] =~ /all/i ? 'all' : valid_type(options[:type])
|
117
117
|
|
118
118
|
case type
|
119
119
|
when :import
|
@@ -56,7 +56,7 @@ module Doing
|
|
56
56
|
end_date: end_date,
|
57
57
|
title: title.strip, #+ " #{note}"
|
58
58
|
note: note.instance_of?(Array) ? note.to_s : note,
|
59
|
-
time: '%02d:%02d:%02d' % wwid.
|
59
|
+
time: '%02d:%02d:%02d' % wwid.format_time(interval),
|
60
60
|
tags: tags
|
61
61
|
}
|
62
62
|
|
@@ -68,7 +68,7 @@ module Doing
|
|
68
68
|
new_item = {
|
69
69
|
'id' => index + 1,
|
70
70
|
'content' => title.strip, #+ " #{note}"
|
71
|
-
'title' => title.strip + " (#{'%02d:%02d:%02d' % wwid.
|
71
|
+
'title' => title.strip + " (#{'%02d:%02d:%02d' % wwid.format_time(interval)})",
|
72
72
|
'start' => i.date.strftime('%F %T'),
|
73
73
|
'type' => 'box',
|
74
74
|
'style' => 'color:#4c566b;background-color:#d8dee9;'
|
@@ -132,7 +132,7 @@ module Doing
|
|
132
132
|
out += "#{output}\n"
|
133
133
|
end
|
134
134
|
# Doing.logger.debug('Template Export:', "#{items.count} items output to template #{opt[:template]}")
|
135
|
-
out += wwid.tag_times(format:
|
135
|
+
out += wwid.tag_times(format: wwid.config['timer_format'].to_sym, sort_by_name: opt[:sort_tags], sort_order: opt[:tag_order]) if opt[:totals]
|
136
136
|
out
|
137
137
|
end
|
138
138
|
|
@@ -64,9 +64,15 @@ module Doing
|
|
64
64
|
new_items.push(new_entry)
|
65
65
|
end
|
66
66
|
total = new_items.count
|
67
|
+
|
68
|
+
new_items = wwid.filter_items(new_items, opt: options)
|
69
|
+
filtered = total - new_items.count
|
70
|
+
Doing.logger.debug('Skipped:' , %(#{filtered} items that didn't match filter criteria)) if filtered.positive?
|
71
|
+
|
67
72
|
new_items = wwid.dedup(new_items, options[:no_overlap])
|
68
|
-
dups =
|
73
|
+
dups = filtered - new_items.count
|
69
74
|
Doing.logger.info(%(Skipped #{dups} items with overlapping times)) if dups.positive?
|
75
|
+
|
70
76
|
wwid.content[section][:items].concat(new_items)
|
71
77
|
Doing.logger.info(%(Imported #{new_items.count} items to #{section}))
|
72
78
|
end
|
@@ -40,13 +40,13 @@ module Doing
|
|
40
40
|
|
41
41
|
new_items = read_doing_file(path)
|
42
42
|
|
43
|
-
|
44
|
-
new_items = wwid.filter_items(new_items, opt: { count: 0, date_filter: options[:date_filter] })
|
45
|
-
end
|
43
|
+
total = new_items.count
|
46
44
|
|
47
|
-
|
48
|
-
|
49
|
-
|
45
|
+
options[:count] = 0
|
46
|
+
new_items = wwid.filter_items(new_items, opt: options)
|
47
|
+
|
48
|
+
skipped = total - new_items.count
|
49
|
+
Doing.logger.debug('Skipped:' , %(#{skipped} items that didn't match filter criteria)) if skipped.positive?
|
50
50
|
|
51
51
|
imported = []
|
52
52
|
|
@@ -66,9 +66,15 @@ module Doing
|
|
66
66
|
total = new_items.count
|
67
67
|
skipped = data.count - total
|
68
68
|
Doing.logger.debug('Skipped:' , %(#{skipped} items, invalid type or no time interval)) if skipped.positive?
|
69
|
+
|
70
|
+
new_items = wwid.filter_items(new_items, opt: options)
|
71
|
+
filtered = skipped - new_items.count
|
72
|
+
Doing.logger.debug('Skipped:' , %(#{filtered} items that didn't match filter criteria)) if filtered.positive?
|
73
|
+
|
69
74
|
new_items = wwid.dedup(new_items, options[:no_overlap])
|
70
|
-
dups =
|
75
|
+
dups = filtered - new_items.count
|
71
76
|
Doing.logger.debug('Skipped:' , %(#{dups} items with overlapping times)) if dups.positive?
|
77
|
+
|
72
78
|
wwid.content[section][:items].concat(new_items)
|
73
79
|
Doing.logger.info('Imported:', %(#{new_items.count} items to #{section}))
|
74
80
|
end
|
data/lib/doing/string.rb
CHANGED
@@ -209,11 +209,12 @@ module Doing
|
|
209
209
|
title
|
210
210
|
end
|
211
211
|
|
212
|
-
def tag!(tag, value: nil, remove: false, rename_to: nil, regex: false)
|
213
|
-
replace tag(tag, value: value, remove: remove, rename_to: rename_to, regex: regex)
|
212
|
+
def tag!(tag, value: nil, remove: false, rename_to: nil, regex: false, single: false)
|
213
|
+
replace tag(tag, value: value, remove: remove, rename_to: rename_to, regex: regex, single: single)
|
214
214
|
end
|
215
215
|
|
216
|
-
def tag(tag, value: nil, remove: false, rename_to: nil, regex: false)
|
216
|
+
def tag(tag, value: nil, remove: false, rename_to: nil, regex: false, single: false)
|
217
|
+
log_level = single ? :info : :debug
|
217
218
|
title = dup
|
218
219
|
title.chomp!
|
219
220
|
tag = tag.sub(/^@?/, '')
|
@@ -241,10 +242,10 @@ module Doing
|
|
241
242
|
if rename_to
|
242
243
|
f = "@#{tag}".cyan
|
243
244
|
t = "@#{rename_to}".cyan
|
244
|
-
Doing.logger.
|
245
|
+
Doing.logger.write(log_level, 'Tag:', %(renamed #{f} to #{t} in "#{title}"))
|
245
246
|
else
|
246
247
|
f = "@#{tag}".cyan
|
247
|
-
Doing.logger.
|
248
|
+
Doing.logger.write(log_level, 'Tag:', %(removed #{f} from "#{title}"))
|
248
249
|
end
|
249
250
|
else
|
250
251
|
Doing.logger.debug('Skipped:', "not tagged #{"@#{tag}".cyan}")
|
@@ -255,14 +256,15 @@ module Doing
|
|
255
256
|
else
|
256
257
|
add = tag
|
257
258
|
add += "(#{value})" unless value.nil?
|
259
|
+
title.chomp!
|
258
260
|
title += " @#{add}"
|
259
261
|
|
260
262
|
title.dedup_tags!
|
261
263
|
title.chomp!
|
262
|
-
|
264
|
+
Doing.logger.write(log_level, 'Tag:', %(added #{('@' + tag).cyan} to "#{title}"))
|
263
265
|
end
|
264
266
|
|
265
|
-
title
|
267
|
+
title.gsub(/ +/, ' ')
|
266
268
|
end
|
267
269
|
|
268
270
|
##
|
data/lib/doing/version.rb
CHANGED