doto 0.0.1.pre.alpha.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (179) hide show
  1. checksums.yaml +7 -0
  2. data/.env.test +1 -0
  3. data/.reek.yml +20 -0
  4. data/.rspec +3 -0
  5. data/.rubocop.yml +206 -0
  6. data/.ruby-version +1 -0
  7. data/CHANGELOG.md +7 -0
  8. data/CODE_OF_CONDUCT.md +84 -0
  9. data/Gemfile +30 -0
  10. data/Gemfile.lock +179 -0
  11. data/LICENSE.txt +21 -0
  12. data/README.md +38 -0
  13. data/Rakefile +16 -0
  14. data/bin/console +36 -0
  15. data/bin/doto +3 -0
  16. data/bin/setup +18 -0
  17. data/exe/doto +33 -0
  18. data/lib/core/ruby/color_theme_colors.rb +16 -0
  19. data/lib/core/ruby/color_theme_mode.rb +42 -0
  20. data/lib/core/ruby/wrap_and_join.rb +31 -0
  21. data/lib/doto/base_cli.rb +56 -0
  22. data/lib/doto/cli.rb +131 -0
  23. data/lib/doto/command_services/add_entry_service.rb +50 -0
  24. data/lib/doto/crud/json_file.rb +161 -0
  25. data/lib/doto/env.rb +44 -0
  26. data/lib/doto/migration/base_service.rb +118 -0
  27. data/lib/doto/migration/migrator.rb +24 -0
  28. data/lib/doto/migration/raw_helpers/color_theme_hash.rb +13 -0
  29. data/lib/doto/migration/raw_helpers/configuration_hash.rb +15 -0
  30. data/lib/doto/migration/raw_helpers/entry_group_hash.rb +13 -0
  31. data/lib/doto/migration/raw_json_file.rb +15 -0
  32. data/lib/doto/migration/raw_json_files.rb +56 -0
  33. data/lib/doto/migration/v20230613121411/service.rb +94 -0
  34. data/lib/doto/migration/v20240210161248/service.rb +148 -0
  35. data/lib/doto/migration/version.rb +7 -0
  36. data/lib/doto/models/color_theme.rb +224 -0
  37. data/lib/doto/models/configuration.rb +185 -0
  38. data/lib/doto/models/entry.rb +63 -0
  39. data/lib/doto/models/entry_group.rb +223 -0
  40. data/lib/doto/models/migration_version.rb +49 -0
  41. data/lib/doto/models/project.rb +295 -0
  42. data/lib/doto/presenters/base_presenter.rb +32 -0
  43. data/lib/doto/presenters/base_presenter_ex.rb +15 -0
  44. data/lib/doto/presenters/color_theme_presenter.rb +52 -0
  45. data/lib/doto/presenters/color_theme_show_presenter.rb +55 -0
  46. data/lib/doto/presenters/configuration_presenter.rb +50 -0
  47. data/lib/doto/presenters/entry_group/list/date_presenter.rb +77 -0
  48. data/lib/doto/presenters/entry_group/list/dates_presenter.rb +60 -0
  49. data/lib/doto/presenters/entry_group/list/messages.rb +15 -0
  50. data/lib/doto/presenters/entry_group/list/nothing_to_list.rb +15 -0
  51. data/lib/doto/presenters/entry_group_presenter.rb +35 -0
  52. data/lib/doto/presenters/entry_presenter.rb +25 -0
  53. data/lib/doto/presenters/export/all_presenter.rb +44 -0
  54. data/lib/doto/presenters/export/dates_presenter.rb +55 -0
  55. data/lib/doto/presenters/import/all_presenter.rb +57 -0
  56. data/lib/doto/presenters/import/dates_presenter.rb +70 -0
  57. data/lib/doto/presenters/import/import_entry.rb +22 -0
  58. data/lib/doto/presenters/import/import_file.rb +33 -0
  59. data/lib/doto/presenters/project/create_presenter.rb +44 -0
  60. data/lib/doto/presenters/project/defaultable.rb +15 -0
  61. data/lib/doto/presenters/project/delete_by_number_presenter.rb +54 -0
  62. data/lib/doto/presenters/project/delete_presenter.rb +53 -0
  63. data/lib/doto/presenters/project/list_presenter.rb +24 -0
  64. data/lib/doto/presenters/project/rename_by_number_presenter.rb +63 -0
  65. data/lib/doto/presenters/project/rename_presenter.rb +57 -0
  66. data/lib/doto/presenters/project/use_by_number_presenter.rb +57 -0
  67. data/lib/doto/presenters/project/use_presenter.rb +56 -0
  68. data/lib/doto/services/color_theme/hydrator_service.rb +42 -0
  69. data/lib/doto/services/configuration/hydrator_service.rb +42 -0
  70. data/lib/doto/services/entry/hydrator_service.rb +33 -0
  71. data/lib/doto/services/entry_group/browse_service.rb +100 -0
  72. data/lib/doto/services/entry_group/counter_service.rb +32 -0
  73. data/lib/doto/services/entry_group/deleter_service.rb +35 -0
  74. data/lib/doto/services/entry_group/editor_service.rb +103 -0
  75. data/lib/doto/services/entry_group/exporter_service.rb +98 -0
  76. data/lib/doto/services/entry_group/hydrator_service.rb +37 -0
  77. data/lib/doto/services/entry_group/importer_service.rb +117 -0
  78. data/lib/doto/services/migration_version/hydrator_service.rb +36 -0
  79. data/lib/doto/services/project/hydrator_service.rb +40 -0
  80. data/lib/doto/services/project/rename_service.rb +70 -0
  81. data/lib/doto/services/stderr_redirector_service.rb +27 -0
  82. data/lib/doto/services/stdout_redirector_service.rb +27 -0
  83. data/lib/doto/services/temp_file/reader_service.rb +33 -0
  84. data/lib/doto/services/temp_file/writer_service.rb +35 -0
  85. data/lib/doto/subcommands/base_subcommand.rb +12 -0
  86. data/lib/doto/subcommands/browse.rb +49 -0
  87. data/lib/doto/subcommands/config.rb +81 -0
  88. data/lib/doto/subcommands/delete.rb +108 -0
  89. data/lib/doto/subcommands/edit.rb +48 -0
  90. data/lib/doto/subcommands/export.rb +62 -0
  91. data/lib/doto/subcommands/import.rb +72 -0
  92. data/lib/doto/subcommands/list.rb +95 -0
  93. data/lib/doto/subcommands/project.rb +146 -0
  94. data/lib/doto/subcommands/theme.rb +131 -0
  95. data/lib/doto/support/ask.rb +44 -0
  96. data/lib/doto/support/color_themable.rb +36 -0
  97. data/lib/doto/support/command_help_colorizeable.rb +34 -0
  98. data/lib/doto/support/command_hookable.rb +71 -0
  99. data/lib/doto/support/command_options/doto_times.rb +48 -0
  100. data/lib/doto/support/command_options/time.rb +84 -0
  101. data/lib/doto/support/command_options/time_mnemonic.rb +108 -0
  102. data/lib/doto/support/command_options/time_mnemonics.rb +16 -0
  103. data/lib/doto/support/descriptable.rb +29 -0
  104. data/lib/doto/support/entry_group_browsable.rb +104 -0
  105. data/lib/doto/support/field_errors.rb +11 -0
  106. data/lib/doto/support/fileable.rb +136 -0
  107. data/lib/doto/support/presentable.rb +11 -0
  108. data/lib/doto/support/project_file_system.rb +118 -0
  109. data/lib/doto/support/short_string.rb +24 -0
  110. data/lib/doto/support/time_comparable.rb +21 -0
  111. data/lib/doto/support/time_formatable.rb +65 -0
  112. data/lib/doto/support/times_sortable.rb +71 -0
  113. data/lib/doto/support/transform_project_name.rb +24 -0
  114. data/lib/doto/support/utils.rb +11 -0
  115. data/lib/doto/validators/color_theme_validator.rb +74 -0
  116. data/lib/doto/validators/description_validator.rb +51 -0
  117. data/lib/doto/validators/entries_validator.rb +77 -0
  118. data/lib/doto/validators/project_name_validator.rb +58 -0
  119. data/lib/doto/validators/time_validator.rb +25 -0
  120. data/lib/doto/validators/version_validator.rb +29 -0
  121. data/lib/doto/version.rb +6 -0
  122. data/lib/doto/views/base_list_view.rb +41 -0
  123. data/lib/doto/views/color_theme/index.rb +62 -0
  124. data/lib/doto/views/color_theme/show.rb +107 -0
  125. data/lib/doto/views/configuration/show.rb +41 -0
  126. data/lib/doto/views/entry_group/edit.rb +121 -0
  127. data/lib/doto/views/entry_group/list.rb +23 -0
  128. data/lib/doto/views/entry_group/shared/no_entries_to_display.rb +53 -0
  129. data/lib/doto/views/entry_group/shared/no_entries_to_display_for_month_of.rb +32 -0
  130. data/lib/doto/views/entry_group/shared/no_entries_to_display_for_week_of.rb +33 -0
  131. data/lib/doto/views/entry_group/shared/no_entries_to_display_for_year_of.rb +33 -0
  132. data/lib/doto/views/entry_group/show.rb +63 -0
  133. data/lib/doto/views/export.rb +82 -0
  134. data/lib/doto/views/import.rb +105 -0
  135. data/lib/doto/views/import_dates.rb +17 -0
  136. data/lib/doto/views/project/create.rb +87 -0
  137. data/lib/doto/views/project/delete.rb +96 -0
  138. data/lib/doto/views/project/delete_by_number.rb +19 -0
  139. data/lib/doto/views/project/list.rb +115 -0
  140. data/lib/doto/views/project/rename.rb +98 -0
  141. data/lib/doto/views/project/rename_by_number.rb +21 -0
  142. data/lib/doto/views/project/use.rb +97 -0
  143. data/lib/doto/views/project/use_by_number.rb +19 -0
  144. data/lib/doto/views/shared/error.rb +17 -0
  145. data/lib/doto/views/shared/info.rb +17 -0
  146. data/lib/doto/views/shared/message.rb +85 -0
  147. data/lib/doto/views/shared/model_errors.rb +32 -0
  148. data/lib/doto/views/shared/success.rb +17 -0
  149. data/lib/doto/views/shared/warning.rb +17 -0
  150. data/lib/doto.rb +33 -0
  151. data/lib/locales/en/active_record.yml +17 -0
  152. data/lib/locales/en/commands.yml +165 -0
  153. data/lib/locales/en/miscellaneous.yml +29 -0
  154. data/lib/locales/en/presenters.yml +19 -0
  155. data/lib/locales/en/services.yml +14 -0
  156. data/lib/locales/en/subcommands.yml +786 -0
  157. data/lib/seed_data/0/.todo +5 -0
  158. data/lib/seed_data/20230613121411/.doto +8 -0
  159. data/lib/seed_data/20230613121411/doto/migration_version.json +3 -0
  160. data/lib/seed_data/20230613121411/doto/themes/cherry.json +79 -0
  161. data/lib/seed_data/20230613121411/doto/themes/christmas.json +79 -0
  162. data/lib/seed_data/20230613121411/doto/themes/default.json +79 -0
  163. data/lib/seed_data/20230613121411/doto/themes/lemon.json +79 -0
  164. data/lib/seed_data/20230613121411/doto/themes/light.json +79 -0
  165. data/lib/seed_data/20230613121411/doto/themes/matrix.json +79 -0
  166. data/lib/seed_data/20230613121411/doto/themes/whiteout.json +79 -0
  167. data/lib/seed_data/20240210161248/.doto +9 -0
  168. data/lib/seed_data/20240210161248/doto/current_project.json +4 -0
  169. data/lib/seed_data/20240210161248/doto/migration_version.json +3 -0
  170. data/lib/seed_data/20240210161248/doto/projects/default/project.json +5 -0
  171. data/lib/seed_data/20240210161248/doto/themes/cherry.json +79 -0
  172. data/lib/seed_data/20240210161248/doto/themes/christmas.json +79 -0
  173. data/lib/seed_data/20240210161248/doto/themes/default.json +79 -0
  174. data/lib/seed_data/20240210161248/doto/themes/lemon.json +79 -0
  175. data/lib/seed_data/20240210161248/doto/themes/light.json +79 -0
  176. data/lib/seed_data/20240210161248/doto/themes/matrix.json +79 -0
  177. data/lib/seed_data/20240210161248/doto/themes/whiteout.json +79 -0
  178. data/sig/dsu.rbs +4 -0
  179. metadata +406 -0
@@ -0,0 +1,786 @@
1
+ # lib/doto/subcommands
2
+ en:
3
+ subcommands:
4
+ browse:
5
+ week:
6
+ desc: week|w
7
+ usage: Browse TODO entries for the current week
8
+ long_desc: |
9
+ Browse TODO entries for the current week.
10
+
11
+ $ doto browse w
12
+
13
+ $ doto browse w
14
+ month:
15
+ desc: month|m
16
+ usage: Browse TODO entries for the current month
17
+ long_desc: |
18
+ Browse TODO entries for the current month.
19
+
20
+ $ doto browse month
21
+
22
+ $ doto browse m
23
+ year:
24
+ desc: year|y
25
+ usage: Browse TODO entries for the current year
26
+ long_desc: |
27
+ Browse TODO entries for the current year.
28
+
29
+ $ doto browse year
30
+
31
+ $ doto browse y
32
+ headers:
33
+ browsing: Browsing TODO entries for %{of} (%{from} thru %{to})
34
+ week_of: Week of %{week}
35
+ month_of: Month of %{month}
36
+ year_of: Year of %{year}
37
+ config:
38
+ delete:
39
+ desc: delete
40
+ usage: Deletes the configuration file
41
+ long_desc: |
42
+ Deletes the configuration file.
43
+
44
+ EXAMPLES
45
+
46
+ doto config delete
47
+
48
+ NOTES
49
+
50
+ Deleting the doto configuration file will simply cause doto to use the default configuration options (`Doto::Models::Configuration::DEFAULT_CONFIGURATION`).
51
+ info:
52
+ desc: info
53
+ usage: Displays information about this gem configuration
54
+ long_desc: |
55
+ Displays information about this gem configuration.
56
+
57
+ EXAMPLES
58
+
59
+ $ doto config info
60
+ init:
61
+ desc: init
62
+ usage: Creates and initializes a .doto file in your home folder
63
+ long_desc: |
64
+ Creates and initializes a .doto file in your home folder (%{home_folder}) that may be edited.
65
+
66
+ EXAMPLES
67
+
68
+ $ doto config init
69
+
70
+ CONFIGURATION FILE ENTRIES
71
+
72
+ The following configuration file options are available:
73
+
74
+ version:
75
+
76
+ The configuration version - DO NOT ALTER THIS VALUE!
77
+
78
+ editor:
79
+
80
+ The default editor to use when editing entry groups if the EDITOR environment variable on your system is not set. The default is 'nano'. You'll need to change the default editor on Windows systems.
81
+
82
+ Default: "nano" on nix sytems.
83
+
84
+ entries_display_order:
85
+
86
+ The order by which entries will be displayed, "asc" or "desc" (ascending or descending, respectively).
87
+
88
+ Default: "desc"
89
+
90
+ carry_over_entries_to_today:
91
+
92
+ Applicable to the `doto edit` command. Valid values are true|false. If true, when editing TODO entries for the first time on any given day (e.g. `doto edit today`), TODO entries from the previous day will be copied into the current editing session. If there are no TODO entries from the previous day, doto will search backwards up to 7 days to find a TODO date that has entries to copy. If after searching back 7 days, no TODO entries are found, the editor session will simply provide no previous TODO entries.
93
+
94
+ Default: false
95
+
96
+ include_all:
97
+
98
+ Applicable to doto commands that display TODO date lists (e.g. `doto list` commands). Valid values are true|false. If true, all TODO dates within the specified range will be displayed, regardless of whether or not a particular date has entries. If false, only TODO dates between the first and last TODO dates that have entries will be displayed.
99
+
100
+ Default: false
101
+
102
+ theme_name:
103
+
104
+ Default: "default"
105
+ delete:
106
+ date:
107
+ desc: date|d DATE|MNEMONIC
108
+ usage: Deletes the TODO entries for the given DATE or MNEMONIC
109
+ long_desc: |
110
+ Deletes the TODO entries for the given DATE or MNEMONIC.
111
+
112
+ %{date_option_description}
113
+
114
+ %{mnemonic_option_description}
115
+ dates:
116
+ desc: dates|dd OPTIONS
117
+ usage: Deletes the TODO entries for the OPTIONS provided
118
+ long_desc: |
119
+ Deletes the TODO entries for the given OPTIONS.
120
+
121
+ $ doto delete dates OPTIONS
122
+
123
+ $ doto d dd OPTIONS
124
+
125
+ OPTIONS:
126
+
127
+ -f|--from DATE|MNEMONIC: The DATE or MNEMONIC that represents the start of the range of TODO dates to delete. If a relative mnemonic is used (+/-n, e.g +1, -1, etc.), the date calculated will be relative to the current date (e.g. `<MNEMONIC>.to_i.days.from_now(Time.now)`).
128
+
129
+ -t|--to DATE|MNEMONIC: The DATE or MNEMONIC that represents the end of the range of TODO dates to delete. If a relative mnemonic is used (+/-n, e.g +1, -1, etc.), the date calculated will be relative to the date that resulting from the `--from` option date calculation.
130
+
131
+ %{date_option_description}
132
+
133
+ %{mnemonic_option_description}
134
+
135
+ EXAMPLES
136
+
137
+ NOTE: All examples can substitute their respective short form options (e.g. `-f`, `-t`, etc. for `--from`, `--to`, etc.).
138
+
139
+ The below will delete the TODO entries for the range of dates from 1/1 to 1/4 for the current year:
140
+
141
+ $ doto delete dates --from 1/1 --to +3
142
+
143
+ This will delete the TODO entries for the range of dates from 1/2 to 1/5 for the year 2022:
144
+
145
+ $ doto delete dates --from 1/5/2022 --to -3
146
+
147
+ This (assuming "today" is 1/10) will delete the TODO entries for the last week 1/10 to 1/3 of the current year:
148
+
149
+ $ doto delete dates --from today --to -7
150
+
151
+ This (assuming "today" is 5/23) will delete the TODO entries for the last week 5/16 to 5/22.
152
+ This example simply illustrates the fact that you can use relative mnemonics for
153
+ both `--from` and `--to` options; this doesn't mean you should do so...
154
+
155
+ While you can use relative mnemonics for both `--from` and `--to` options,
156
+ there is always a more intuitive way. The below example basically deletes one week of TODO entries back 1 week from yesterday's date:
157
+
158
+ $ doto delete dates --from -7 --to +6
159
+
160
+ The above can be accomplished MUCH easier by simply using the `yesterday` mnemonic...
161
+
162
+ This (assuming "today" is 5/23) will delete the TODO entries back 1 week from yesterday's date 5/16 to 5/22:
163
+
164
+ $ doto delete dates --from yesterday --to -6
165
+ today:
166
+ desc: today|n
167
+ usage: Deletes the TODO entries for today
168
+ long_desc: |
169
+ Deletes the TODO entries for today.
170
+
171
+ $ doto delete today
172
+
173
+ $ doto delete n
174
+ tomorrow:
175
+ desc: tomorrow|t
176
+ usage: Deletes the TODO entries for tomorrow
177
+ long_desc: |
178
+ Deletes the TODO entries for tomorrow.
179
+
180
+ $ doto delete tomorrow
181
+
182
+ $ doto delete t
183
+ yesterday:
184
+ desc: yesterday|y
185
+ usage: Deletes the TODO entries for yesterday
186
+ long_desc: |
187
+ Deletes the TODO entries for yesterday.
188
+
189
+ $ doto delete yesterday
190
+
191
+ $ doto delete y
192
+ messages:
193
+ deleted: Deleted %{count} entry group(s).
194
+ cancelled: Cancelled.
195
+ prompts:
196
+ are_you_sure: Are you sure you want to delete all the entries for %{dates} (%{count} entry groups)?
197
+ edit:
198
+ date:
199
+ desc: date|d DATE
200
+ usage: Edits the TODO entries for DATE
201
+ long_desc: |
202
+ Edits the TODO entries for DATE.
203
+
204
+ %{date_option_description}
205
+ today:
206
+ desc: today|n
207
+ usage: Edits the TODO entries for today
208
+ long_desc: |
209
+ Edits the TODO entries for today.
210
+ tomorrow:
211
+ desc: tomorrow|t
212
+ usage: Edits the TODO entries for tomorrow
213
+ long_desc: |
214
+ Edits the TODO entries for tomorrow.
215
+ yesterday:
216
+ desc: yesterday|y
217
+ usage: Edits the TODO entries for yesterday
218
+ long_desc: |
219
+ Edits the TODO entries for yesterday.
220
+ export:
221
+ dates:
222
+ desc: dates|dd OPTIONS
223
+ usage: Exports the TODO entries for the OPTIONS provided
224
+ long_desc: |
225
+ Exports the TODO entries for the given OPTIONS.
226
+
227
+ $ doto export dates OPTIONS
228
+
229
+ $ doto x dd OPTIONS
230
+
231
+ OPTIONS:
232
+
233
+ -f|--from DATE|MNEMONIC: The DATE or MNEMONIC that represents the start of the range of TODO dates to export. If a relative mnemonic is used (+/-n, e.g +1, -1, etc.), the date calculated will be relative to the current date (e.g. `<MNEMONIC>.to_i.days.from_now(Time.now)`).
234
+
235
+ -t|--to DATE|MNEMONIC: The DATE or MNEMONIC that represents the end of the range of TODO dates to export. If a relative mnemonic is used (+/-n, e.g +1, -1, etc.), the date calculated will be relative to the date that resulting from the `--from` option date calculation.
236
+
237
+ %{date_option_description}
238
+
239
+ %{mnemonic_option_description}
240
+
241
+ EXAMPLES
242
+
243
+ NOTE: All examples can substitute their respective short form options (e.g. `-f`, `-t`, etc. for `--from`, `--to`, etc.).
244
+
245
+ The below will export the TODO entries for the range of dates from 1/1 to 1/4 for the current year:
246
+
247
+ $ doto export dates --from 1/1 --to +3
248
+
249
+ This will export the TODO entries for the range of dates from 1/2 to 1/5 for the year 2022:
250
+
251
+ $ doto x dd --from 1/5/2022 --to -3
252
+
253
+ This (assuming "today" is 1/10) will export the TODO entries for the last week 1/10 to 1/3 of the current year:
254
+
255
+ $ doto export dates --from today --to -7
256
+
257
+ This (assuming "today" is 5/23) will export the TODO entries for the last week 5/16 to 5/22.
258
+ This example simply illustrates the fact that you can use relative mnemonics for
259
+ both `--from` and `--to` options; this doesn't mean you should do so...
260
+
261
+ While you can use relative mnemonics for both `--from` and `--to` options,
262
+ there is always a more intuitive way. The below example basically exports one week of TODO entries back 1 week from yesterday's date:
263
+
264
+ $ doto export dates --from -7 --to +6
265
+
266
+ The above can be accomplished MUCH easier by simply using the `yesterday` mnemonic...
267
+
268
+ This (assuming "today" is 5/23) will delete the TODO entries back 1 week from yesterday's date 5/16 to 5/22:
269
+
270
+ $ doto x dd --from yesterday --to -6
271
+ all:
272
+ desc: all|a
273
+ usage: Exports all TODO entries
274
+ long_desc: |
275
+ Exports all TODO entries.
276
+
277
+ $ doto export all
278
+
279
+ $ doto x a
280
+ messages:
281
+ exported: Export successful.
282
+ exported_to: Entry groups exported to %{file_path}.
283
+ nothing_to_export: No entry groups to export.
284
+ cancelled: Cancelled.
285
+ prompts:
286
+ export_all_confirm: Export all the entries (%{count} entry groups)?
287
+ export_dates_confirm: Export all the entries for %{from} thru %{to} (%{count} entry groups)?
288
+ options:
289
+ - y
290
+ - n
291
+ import:
292
+ dates:
293
+ desc: dates|dd OPTIONS
294
+ usage: Imports the TODO entries given the OPTIONS provided
295
+ long_desc: |
296
+ Imports the TODO entries for the given OPTIONS provided.
297
+
298
+ $ doto import dates OPTIONS
299
+
300
+ $ doto m dd OPTIONS
301
+
302
+ OPTIONS:
303
+
304
+ -o|--override true|false (default: false): If true, the import process will ignore the project name found in the import file and import the entries into the current project. If false, the import process will use the project name found in the import file.
305
+
306
+ -i|--import-file IMPORT_CVS_FILE: The IMPORT_CVS_FILE file to import. IMPORT_CVS_FILE should be a fully qualified path to a file that was previously created as a result of running `doto export`. see `doto help export`.
307
+
308
+ -m|--merge true|false (default: true): If true, imported entries will be added to the entry group if the entry group already exists. If false, the imported entries will replace all existing entries for the entry group if the entry group already exists. If the entry group does not exist, it will be created using the imported entries.
309
+
310
+ -f|--from DATE|MNEMONIC: The DATE or MNEMONIC that represents the start of the range of TODO dates to import. If a relative mnemonic is used (+/-n, e.g +1, -1, etc.), the date calculated will be relative to the current date (e.g. `<MNEMONIC>.to_i.days.from_now(Time.now)`).
311
+
312
+ -t|--to DATE|MNEMONIC: The DATE or MNEMONIC that represents the end of the range of TODO dates to import. If a relative mnemonic is used (+/-n, e.g +1, -1, etc.), the date calculated will be relative to the date that resulting from the `--from` option date calculation.
313
+
314
+ %{date_option_description}
315
+
316
+ %{mnemonic_option_description}
317
+
318
+ NOTES
319
+
320
+ Entry groups in the import file whose project name does not match the current project, will be ignored (see `doto project use`).
321
+
322
+ If the `--override` option is used, the import process will ignore the project name found in the import file and import the entries into the current project.
323
+
324
+ EXAMPLES
325
+
326
+ NOTE: All examples can substitute their respective short form options (e.g. `-f`, `-t`, etc. for `--from`, `--to`, etc.).
327
+
328
+ The below will import the TODO entries for the range of dates from 1/1 to 1/4 for the current year, from the import file, and replace all the entries for the respective entry groups imported:
329
+
330
+ $ doto import dates --from 1/1 --to +3 -i /path/to/import.csv -m false
331
+
332
+ This will import the TODO entries for the range of dates from 1/2 to 1/5 for the year 2022, from the import file, and merge all the entries for the respective entry groups imported:
333
+
334
+ $ doto m dd --from 1/5/2022 --to -3 -i /path/to/import.csv
335
+
336
+ This (assuming "today" is 1/10) will import the TODO entries for the last week 1/10 to 1/3 of the current year, from the import file, and merge all the entries for the respective entry groups imported:
337
+
338
+ $ doto import dates --from today --to -7 -i /path/to/import.csv -m true
339
+
340
+ This (assuming "today" is 5/23) will import the TODO entries for the last week 5/16 to 5/22.
341
+ This example simply illustrates the fact that you can use relative mnemonics for
342
+ both `--from` and `--to` options; this doesn't mean you should do so...
343
+
344
+ While you can use relative mnemonics for both `--from` and `--to` options,
345
+ there is always a more intuitive way. The below example basically imports one week of TODO entries back 1 week from yesterday's date, from the import file, and merge all the entries for the respective entry groups imported:
346
+
347
+ $ doto import dates --from -7 --to +6 -i /path/to/import.csv
348
+
349
+ The above can be accomplished MUCH easier by simply using the `yesterday` mnemonic...
350
+
351
+ This (assuming "today" is 5/23) will import the TODO entries back 1 week from yesterday's date 5/16 to 5/22, from the import file, and merge all the entries for the respective entry groups imported:
352
+
353
+ $ doto m dd --from yesterday --to -6 -i /path/to/import.csv
354
+
355
+ This (assuming the current year is 2024) will import the TODO entries for 1/1/2024 to 3/15/2024 from the import file, and ignore the project name found in the import file and import the entries into the current project:
356
+
357
+ $ doto m dd -f 1/1 -t 3/15 -o true -i /path/to/import.csv
358
+ all:
359
+ desc: all|a OPTIONS
360
+ usage: Imports all TODO entries from a given TODO export .csv file
361
+ long_desc: |
362
+ Imports all TODO entries from a given TODO export .csv file.
363
+
364
+ $ doto import all OPTIONS
365
+
366
+ $ doto m a OPTIONS
367
+
368
+ OPTIONS:
369
+
370
+ -o|--override true|false (default: false): If true, the import process will ignore the project name found in the import file and import the entries into the current project. If false, the import process will use the project name found in the import file.
371
+
372
+ -i|--import-file IMPORT_CVS_FILE: The IMPORT_CVS_FILE file to import. IMPORT_CVS_FILE should be a fully qualified path to a file that was previously created as a result of running `doto export`. see `doto help export`.
373
+
374
+ -m|--merge true|false (default: true): If true, imported entries will be added to the entry group if the entry group already exists. If false, the imported entries will replace all existing entries for the entry group if the entry group already exists. If the entry group does not exist, it will be created using the imported entries.
375
+
376
+ NOTES
377
+
378
+ Entry groups in the import file whose project name does not match the current project, will be ignored (see `doto project use`).
379
+
380
+ If the `--override` option is used, the import process will ignore the project name found in the import file and import the entries into the current project.
381
+
382
+ EXAMPLES
383
+
384
+ This will import all the TODO entries from the import file, and replace all the entries for the respective entry groups imported:
385
+
386
+ $ doto import all -m false -i /path/to/import.csv
387
+
388
+ This will import all the TODO entries from the import file, and merge all the entries for the respective entry groups imported:
389
+
390
+ $ doto import all -i /path/to/import.csv
391
+
392
+ This will import all the TODO entries from the import file, and ignore the project name found in the import file and import the entries into the current project:
393
+
394
+ $ doto import all -o true -i /path/to/import.csv
395
+ messages:
396
+ import_success: Entry group for %{date} imported successfully.
397
+ import_error: "Entry group for %{date} imported with an error: %{error}"
398
+ import_error_raised: "The entry groups failed to import. The following error was raised: \"%{error}\"."
399
+ nothing_to_import: No entry groups to import.
400
+ cancelled: Cancelled.
401
+ file_not_exist: Import file %{file_path} does not exist.
402
+ prompts:
403
+ import_all_confirm: Import all entry groups (%{count} entry groups) for project "%{project}"?
404
+ project_override_confirm: You have chosen to override the project found in the import file, are you sure you want to continue?
405
+ import_dates_confirm: Import all the entry groups for %{from} thru %{to} (%{count} entry groups) for project "%{project}"?
406
+ options:
407
+ - Y
408
+ - n
409
+ list:
410
+ date:
411
+ desc: date|d DATE|MNEMONIC
412
+ usage: Displays the TODO entries for the given DATE or MNEMONIC
413
+ long_desc: |
414
+ Displays the TODO entries for the given DATE or MNEMONIC.
415
+
416
+ %{date_option_description}
417
+
418
+ %{mnemonic_option_description}
419
+ dates:
420
+ desc: dates|dd OPTIONS
421
+ usage: Displays the TODO entries for the OPTIONS provided
422
+ long_desc: |
423
+ Displays the TODO entries for the given OPTIONS.
424
+
425
+ $ doto list dates OPTIONS
426
+
427
+ $ doto l dd OPTIONS
428
+
429
+ OPTIONS:
430
+
431
+ -a|--include-all true|false: If true, all TODO dates within the specified range will be displayed. If false, TODO dates between the first and last TODO dates that have NO entries will NOT be displayed.. The default is taken from the doto configuration setting :include_all, see `doto config info`.
432
+
433
+ -f|--from DATE|MNEMONIC: The DATE or MNEMONIC that represents the start of the range of TODO dates to display. If a relative mnemonic is used (+/-n, e.g +1, -1, etc.), the date calculated will be relative to the current date (e.g. `<MNEMONIC>.to_i.days.from_now(Time.now)`).
434
+
435
+ -t|--to DATE|MNEMONIC: The DATE or MNEMONIC that represents the end of the range of TODO dates to display. If a relative mnemonic is used (+/-n, e.g +1, -1, etc.), the date calculated will be relative to the date that resulting from the `--from` option date calculation.
436
+
437
+ %{date_option_description}
438
+
439
+ %{mnemonic_option_description}
440
+
441
+ EXAMPLES
442
+
443
+ NOTE: All example results are subject to the `--include-all|-a` option.
444
+
445
+ NOTE: All examples can substitute their respective short form options (e.g. `-f`, `-t`, etc. for `--from`, `--to`, etc.).
446
+
447
+ The below will display the TODO entries for the range of dates from 1/1 to 1/4 for the current year:
448
+
449
+ $ doto list dates --from 1/1 --to +3
450
+
451
+ This will display the TODO entries for the range of dates from 1/2 to 1/5 for the year 2022:
452
+
453
+ $ doto list dates --from 1/5/2022 --to -3
454
+
455
+ This (assuming "today" is 1/10) will display the TODO entries for the last week 1/10 to 1/3 of the current year:
456
+
457
+ $ doto list dates --from today --to -7
458
+
459
+ This (assuming "today" is 5/23) will display the TODO entries for the last week 5/16 to 5/22.
460
+ This example simply illustrates the fact that you can use relative mnemonics for
461
+ both `--from` and `--to` options; this doesn't mean you should do so...
462
+
463
+ While you can use relative mnemonics for both `--from` and `--to` options,
464
+ there is always a more intuitive way. The below example basically lists one week
465
+ of TODO entries back 1 week from yesterday's date:
466
+
467
+ $ doto list dates --from -7 --to +6
468
+
469
+ The above can be accomplished MUCH easier by simply using the `yesterday` mnemonic...
470
+
471
+ This (assuming "today" is 5/23) will display the TODO entries back 1 week from yesterday's date 5/16 to 5/22:
472
+
473
+ $ doto list dates --from yesterday --to -6
474
+ today:
475
+ desc: today|n
476
+ usage: Displays the TODO entries for today
477
+ long_desc: |
478
+ Displays the TODO entries for today.
479
+
480
+ $ doto list today
481
+
482
+ $ doto list n
483
+ tomorrow:
484
+ desc: tomorrow|t
485
+ usage: Displays the TODO entries for tomorrow
486
+ long_desc: |
487
+ Displays the TODO entries for tomorrow.
488
+
489
+ $ doto list tomorrow
490
+
491
+ $ doto list t
492
+ yesterday:
493
+ desc: yesterday|y
494
+ usage: Displays the TODO entries for yesterday
495
+ long_desc: |
496
+ Displays the TODO entries for yesterday.
497
+
498
+ $ doto list yesterday
499
+
500
+ $ doto list y
501
+ project:
502
+ create:
503
+ desc: create|c PROJECT_NAME [PROJECT_DESCRIPTION]
504
+ usage: Creates a doto project using the given PROJECT_NAME and optional PROJECT_DESCRIPTION
505
+ long_desc: |
506
+ Creates a doto project using the given PROJECT_NAME and optional PROJECT_DESCRIPTION.
507
+
508
+ doto project create PROJECT_NAME [PROJECT_DESCRIPTION]
509
+
510
+ doto p c PROJECT_NAME [PROJECT_DESCRIPTION]
511
+
512
+ PROJECT_NAME
513
+
514
+ The name of the project to create. PROJECT_NAME must be between 2 and 32 characters (inclusive) in length.
515
+
516
+ PROJECT_DESCRIPTION
517
+
518
+ Optional. The description of the project. PROJECT_DESCRIPTION must be between 2 and 64 characters (inclusive) in length. If PROJECT_DESCRIPTION is not provided, the project description will be "<PROJECT_NAME> project" where <PROJECT_NAME> = the name of the project.
519
+
520
+ EXAMPLES
521
+
522
+ $ doto project create "My project" "My project description"
523
+
524
+ $ doto p c "My project" "My project description"
525
+
526
+ The below example will create a project called "Alpa" with the description "Alpa project".
527
+
528
+ $ doto p c "Alpha"
529
+ messages:
530
+ created: Created project "%{project_name}".
531
+ prompts:
532
+ create_confirm: Create project "%{project_name}"?
533
+ create_options:
534
+ - Y
535
+ - n
536
+ use_confirm: Use project "%{project_name}"?
537
+ use_options:
538
+ - Y
539
+ - n
540
+ delete:
541
+ desc: delete|d [PROJECT_NAME|PROJECT_NUMBER]
542
+ usage: Permanently deletes the TODO project indicated by the optional PROJECT_NAME or PROJECT_NUMBER
543
+ long_desc: |
544
+ Permanently deletes the TODO project indicated by given option PROJECT_NAME or PROJECT_NUMBER.
545
+
546
+ doto project delete [PROJECT_NAME|PROJECT_NUMBER]
547
+
548
+ doto p d [PROJECT_NAME|PROJECT_NUMBER]
549
+
550
+ PROJECT_NAME
551
+
552
+ The name of the project to delete.
553
+
554
+ PROJECT_NUMBER
555
+
556
+ The number of the project to delete. If PROJECT_NUMBER is used, the project equating to the nth project in the list of projects will be deleted (see `doto project list`).
557
+
558
+ NOTES
559
+
560
+ PROJECT_NAME and PROJECT_NUMBER are optional. If neither are provided, the current, default project will be deleted.
561
+
562
+ EXAMPLES
563
+
564
+ $ doto project delete "My project"
565
+
566
+ $ doto p d "My project"
567
+
568
+ The below examples delete the project equating to the nth project in the list of projects (see `doto project list`).
569
+
570
+ $ doto project delete 2
571
+
572
+ $ doto p d 2
573
+
574
+ The below examples delete the current, default project.
575
+
576
+ $ doto project delete
577
+
578
+ $ doto p d
579
+ messages:
580
+ deleted: Deleted project "%{project_name}".
581
+ prompts:
582
+ delete_confirm: Delete project "%{project_name} - %{description}"?
583
+ delete_options:
584
+ - Y
585
+ - n
586
+ list:
587
+ desc: list|l
588
+ usage: Lists all the TODO projects
589
+ long_desc: |
590
+ Lists all the TODO projects.
591
+
592
+ doto project list
593
+
594
+ doto p l
595
+
596
+ EXAMPLES
597
+
598
+ $ doto project list
599
+
600
+ $ doto p l
601
+ rename:
602
+ desc: rename|r PROJECT_NAME|PROJECT_NUMBER NEW_PROJECT_NAME [NEW_PROJECT_DESCRIPTION]
603
+ usage: Renames a doto project using the given PROJECT_NAME or PROJECT_NUMBER, NEW_PROJECT_NAME and optional NEW_PROJECT_DESCRIPTION
604
+ long_desc: |
605
+ Renames a doto project using the given PROJECT_NAME or PROJECT_NUMBER, NEW_PROJECT_NAME and optional NEW_PROJECT_DESCRIPTION
606
+
607
+ doto project rename PROJECT_NAME|PROJECT_NUMBER NEW_PROJECT_NAME [NEW_PROJECT_DESCRIPTION]
608
+
609
+ doto p r PROJECT_NAME|PROJECT_NUMBER NEW_PROJECT_NAME [NEW_PROJECT_DESCRIPTION]
610
+
611
+ PROJECT_NAME
612
+
613
+ The name of the project to create. PROJECT_NAME must be between 2 and 32 characters (inclusive) in length.
614
+
615
+ PROJECT_NUMBER
616
+
617
+ The number of the project to rename. If PROJECT_NUMBER is used, the project equating to the nth project in the list of projects will be renamed (see `doto project list`).
618
+
619
+ NEW_PROJECT_NAME
620
+
621
+ The new name of the project. NEW_PROJECT_NAME must be between 2 and 32 characters (inclusive) in length.
622
+
623
+ NEW_PROJECT_DESCRIPTION
624
+
625
+ Optional. The description of the project. NEW_PROJECT_DESCRIPTION must be between 2 and 64 characters (inclusive) in length. If NEW_PROJECT_DESCRIPTION is not provided, the project description will be "<NEW_PROJECT_NAME> project" where <NEW_PROJECT_NAME> = the name of the project.
626
+
627
+ EXAMPLES
628
+
629
+ $ doto project rename "My Project" "My New Project" "My new project description"
630
+
631
+ $ doto p r "My Project" "My New Project" "My new project description"
632
+
633
+ $ doto project rename 1 "My New Project" "My new project description"
634
+
635
+ $ doto p r 1 "My New Project" "My new project description"
636
+
637
+ The below example will rename the project called "Alpa" with the "Beta" and add the description "Beta project".
638
+
639
+ $ doto p r Alpha Beta
640
+ messages:
641
+ # created: Created project "%{project_name}".
642
+ new_project_already_exists: A project for new project name "%{new_project_name}" already exists.
643
+ # project_name_blank: No value provided for project name.
644
+ renamed_project: Renamed project "%{project_name}" to "%{new_project_name}".
645
+ prompts:
646
+ rename_confirm: Rename project "%{project_name}" to "%{new_project_name} - %{new_project_description}"?.
647
+ rename_options:
648
+ - Y
649
+ - n
650
+ use:
651
+ desc: use|u [OPTIONS] [PROJECT_NAME|PROJECT_NUMBER]
652
+ usage: Selects the TODO project to use, based on the given PROJECT_NAME or PROJECT_NUMBER
653
+ long_desc: |
654
+ Selects the TODO project to use, based on the given PROJECT_NAME or PROJECT_NUMBER.
655
+
656
+ doto project use [OPTIONS] [PROJECT_NAME|PROJECT_NUMBER]
657
+
658
+ doto p u [OPTIONS] [PROJECT_NAME|PROJECT_NUMBER]
659
+
660
+ OPTIONS:
661
+
662
+ -d|--default true|false (default: false): If true, the PROJECT_NAME|PROJECT_NUMBER will become the default project.
663
+
664
+ PROJECT_NAME
665
+
666
+ The name of the project to use.
667
+
668
+ PROJECT_NUMBER
669
+
670
+ The number of the project to use. If PROJECT_NUMBER is used, the project equating to the nth project in the list of projects will be used (see `doto project list`).
671
+
672
+ NOTES
673
+
674
+ PROJECT_NAME|PROJECT_NUMBER are optional. The project name or project number of the project to use. If PRONECT_NAME is not provided, the default project will be used. If PROJECT_NUMBER is used, the project equating to the nth project in the list of projects will be used (see `doto project list`).
675
+
676
+ EXAMPLES
677
+
678
+ These will use the default project.
679
+
680
+ $ doto project use
681
+
682
+ $ doto p u
683
+
684
+ These will use the project named "My project".
685
+
686
+ $ doto project use "My project"
687
+
688
+ $ doto p u "My project"
689
+
690
+ These will use the 2nd project in the list of projects.
691
+
692
+ $ doto project use 2
693
+
694
+ $ doto p u 2
695
+
696
+ These will use "Project A" and make it the default project if it is not the default project.
697
+
698
+ $ doto project use --default "Project A"
699
+
700
+ $ doto p u -d "Project A"
701
+ messages:
702
+ using_project: Now using project "%{project_name}".
703
+ prompts:
704
+ use_confirm: "Use project \"%{project_name} - %{description}\"?"
705
+ use_options:
706
+ - Y
707
+ - n
708
+ messages:
709
+ cancelled: Cancelled.
710
+ does_not_exist: Project "%{project_name}" does not exist.
711
+ no_projects: No projects are available to list.
712
+ number_does_not_exist: A project for number %{project_number} does not exist.
713
+ already_exists: Project "%{project_name}" already exists.
714
+ project_name_blank: No value provided for project name.
715
+ new_project_name_blank: No value provided for new project name.
716
+ already_current_project: Project "%{project_name}" is already the current project.
717
+ theme:
718
+ create:
719
+ desc: create THEME_NAME [OPTIONS]
720
+ usage: Creates a doto color theme named THEME_NAME
721
+ long_desc: |
722
+ Creates a doto color theme named THEME_NAME in the %{themes_folder} folder.
723
+
724
+ $ doto create THEME_NAME [-d|--description DESCRIPTION]
725
+
726
+ OPTIONS:
727
+
728
+ -d|--description DESCRIPTION: Creates the doto color theme with having DESCRIPTION as the color theme description.
729
+
730
+ DESCRIPTION
731
+
732
+ Must be be between 2 and 256 characters (inclusive) in length.
733
+ prompts:
734
+ create_theme: Create color theme "%{theme_name}"?
735
+ errors:
736
+ already_exists: Color theme "%{theme_name}" already exists.
737
+ messages:
738
+ created: Created color theme "%{theme_name}".
739
+ cancelled: Cancelled.
740
+ delete:
741
+ desc: delete THEME_NAME
742
+ usage: Deletes the existing doto color theme THEME_NAME
743
+ long_desc: |
744
+ Deletes the existing doto color theme THEME_NAME in the %{themes_folder} folder.
745
+
746
+ $ doto theme delete THEME_NAME
747
+ prompts:
748
+ delete_theme: Delete color theme "%{theme_name}"?
749
+ errors:
750
+ cannot_delete: Color theme "%{theme_name}" cannot be deleted.
751
+ messages:
752
+ cancelled: Cancelled.
753
+ deleted: Deleted color theme "%{theme_name}".
754
+ list:
755
+ desc: list
756
+ usage: Lists the available doto color themes.
757
+ long_desc: |
758
+ Lists the available doto color themes in the %{themes_folder} folder.
759
+
760
+ $ doto theme list
761
+ use:
762
+ desc: use [THEME_NAME]
763
+ usage: Sets the doto color theme to THEME_NAME
764
+ long_desc: |
765
+ Sets the doto color theme to THEME_NAME.
766
+
767
+ $ doto theme use [THEME_NAME]
768
+
769
+ NOTES
770
+
771
+ If THEME_NAME is not provided, the default theme will be used.
772
+
773
+ If THEME_NAME does not exist, you will be given the option to create a new theme.
774
+ messages:
775
+ using_color_theme: Using color theme "%{theme_name}".
776
+ show:
777
+ desc: show THEME_NAME
778
+ usage: Displays the doto color theme THEME_NAME
779
+ long_desc: |
780
+ Displays the doto color theme THEME_NAME.
781
+
782
+ $ doto theme show THEME_NAME
783
+ generic:
784
+ color_theme: "%{theme_name} color theme"
785
+ errors:
786
+ does_not_exist: Color theme "%{theme_name}" does not exist.