dooby 0.2.0 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- data/.rspec +2 -0
- data/CHANGELOG.md +38 -0
- data/Gemfile +13 -3
- data/Gemfile.lock +24 -0
- data/README.md +109 -99
- data/Rakefile +36 -37
- data/VERSION +1 -1
- data/bin/dooby +36 -20
- data/dooby.gemspec +62 -31
- data/lib/dooby.rb +12 -13
- data/lib/dooby/cli_helper.rb +5 -2
- data/lib/dooby/config.rb +29 -0
- data/lib/dooby/core_ext.rb +15 -1
- data/lib/dooby/dates_helper.rb +23 -0
- data/lib/dooby/list.rb +60 -18
- data/lib/dooby/status_generator.rb +13 -0
- data/lib/dooby/task.rb +14 -30
- data/spec/dooby_module_spec.rb +53 -0
- data/spec/list_spec.rb +167 -0
- data/spec/spec_helper.rb +22 -0
- data/spec/task_spec.rb +51 -0
- metadata +154 -33
- data/.gitignore +0 -21
- data/lib/dooby/formatter.rb +0 -7
data/.rspec
ADDED
data/CHANGELOG.md
ADDED
@@ -0,0 +1,38 @@
|
|
1
|
+
CHANGELOG
|
2
|
+
=========
|
3
|
+
|
4
|
+
Version 0.3.0 (November 06, 2010)
|
5
|
+
--------------------------------
|
6
|
+
|
7
|
+
* use as git commit message the item marked as :doing wth **$ dooby commit**
|
8
|
+
* fix autocompletion of strings starting with an at sign (@)
|
9
|
+
* due dates handled through curly braces containing a date in this format: {mmm/dd/yyyy}, ie. {May/02/2011}
|
10
|
+
* **#tomorrow** tag is replaced by tomorrow's date, ie. {Nov/04/2010} and then replaced by #today at the next day.
|
11
|
+
* show items containing the tomorrow's date if user issues **$ dooby list #tomorrow** or **tomorrow**
|
12
|
+
* fix error when autocompletion isn't set
|
13
|
+
* add autocompletion to **ilist** (interactive)
|
14
|
+
* colorize strings starting with a colon (statuses)
|
15
|
+
|
16
|
+
---
|
17
|
+
|
18
|
+
Version 0.2.0 (October 28, 2010)
|
19
|
+
----------------------------
|
20
|
+
|
21
|
+
* add sections for items marked as **#today** and **#urgent**
|
22
|
+
* add messages when user executes dooby without arguments and list is empty
|
23
|
+
* add **bulk delete** (interactive and completion)
|
24
|
+
$ dooby bulkdelete
|
25
|
+
* add **shortcuts** to list tags
|
26
|
+
$ dooby l@
|
27
|
+
$ dooby l#
|
28
|
+
$ dooby l%
|
29
|
+
|
30
|
+
---
|
31
|
+
|
32
|
+
Version 0.1.0 (October 27, 2010)
|
33
|
+
--------------------------------
|
34
|
+
|
35
|
+
* add, edit, list, interactive list, delete, trash and flush
|
36
|
+
* colorize strings starting with @, # and %
|
37
|
+
|
38
|
+
* Initial release
|
data/Gemfile
CHANGED
@@ -1,5 +1,15 @@
|
|
1
1
|
source "http://rubygems.org"
|
2
2
|
|
3
|
-
|
4
|
-
gem "
|
5
|
-
gem "
|
3
|
+
group :development do
|
4
|
+
gem "rspec", "~> 2.0.0"
|
5
|
+
gem "bundler", "~> 1.0.0"
|
6
|
+
gem "jeweler", "~> 1.5.0.pre5"
|
7
|
+
gem "rcov", ">= 0"
|
8
|
+
end
|
9
|
+
|
10
|
+
group :production do
|
11
|
+
gem "main", "4.2.0"
|
12
|
+
gem "colored", "1.2"
|
13
|
+
gem "highline", "1.6.1"
|
14
|
+
gem "chronic", "0.3.0"
|
15
|
+
end
|
data/Gemfile.lock
CHANGED
@@ -2,17 +2,41 @@ GEM
|
|
2
2
|
remote: http://rubygems.org/
|
3
3
|
specs:
|
4
4
|
arrayfields (4.7.4)
|
5
|
+
chronic (0.3.0)
|
5
6
|
colored (1.2)
|
7
|
+
diff-lcs (1.1.2)
|
6
8
|
fattr (2.1.0)
|
9
|
+
git (1.2.5)
|
7
10
|
highline (1.6.1)
|
11
|
+
jeweler (1.5.0.pre5)
|
12
|
+
bundler (~> 1.0.0)
|
13
|
+
git (>= 1.2.5)
|
14
|
+
rake
|
8
15
|
main (4.2.0)
|
9
16
|
arrayfields (>= 4.7.4)
|
10
17
|
fattr (>= 2.1.0)
|
18
|
+
rake (0.8.7)
|
19
|
+
rcov (0.9.9)
|
20
|
+
rspec (2.0.1)
|
21
|
+
rspec-core (~> 2.0.1)
|
22
|
+
rspec-expectations (~> 2.0.1)
|
23
|
+
rspec-mocks (~> 2.0.1)
|
24
|
+
rspec-core (2.0.1)
|
25
|
+
rspec-expectations (2.0.1)
|
26
|
+
diff-lcs (>= 1.1.2)
|
27
|
+
rspec-mocks (2.0.1)
|
28
|
+
rspec-core (~> 2.0.1)
|
29
|
+
rspec-expectations (~> 2.0.1)
|
11
30
|
|
12
31
|
PLATFORMS
|
13
32
|
ruby
|
14
33
|
|
15
34
|
DEPENDENCIES
|
35
|
+
bundler (~> 1.0.0)
|
36
|
+
chronic (= 0.3.0)
|
16
37
|
colored (= 1.2)
|
17
38
|
highline (= 1.6.1)
|
39
|
+
jeweler (~> 1.5.0.pre5)
|
18
40
|
main (= 4.2.0)
|
41
|
+
rcov
|
42
|
+
rspec (~> 2.0.0)
|
data/README.md
CHANGED
@@ -3,33 +3,23 @@ dooby
|
|
3
3
|
|
4
4
|
A **very simplistic** command-line to-do/note list manager in Ruby.
|
5
5
|
|
6
|
-
WARNING!!!
|
7
|
-
-------
|
8
|
-
|
9
|
-
You should know this gem lacks of fancy things, meaning: social, cloud, mobile, web interface, etc.
|
10
|
-
|
11
6
|
Why another to-do list manager?
|
12
7
|
----
|
13
8
|
|
14
|
-
I spend a lot of time in the terminal and I
|
9
|
+
I spend a lot of time in the terminal and I haven't liked any of the current options.
|
15
10
|
|
16
11
|
How does Dooby works?
|
17
12
|
---------------------
|
18
13
|
|
19
14
|
### A bunch of lists
|
20
|
-
Dooby
|
21
|
-
|
22
|
-
For instance, I use one to-do list per project, that way I don't have all the tasks in one place so I can get focused in just one set of tasks, in one context.
|
23
|
-
|
24
|
-
### Priorities
|
25
|
-
Dooby doesn't like to handle priorities, that's your concern. The main goal of Dooby is to help me to handle my today/tomorrow tasks and to handle my personal notes.
|
15
|
+
Dooby can handle one list per directory.
|
26
16
|
|
27
|
-
|
28
|
-
Due dates for today/tomorrow tasks? well, maybe later.
|
17
|
+
For instance, I use one to-do list per project, that way I don't have all the items in one place so I can get focused in just one set of items, in one context.
|
29
18
|
|
30
|
-
###
|
19
|
+
### A bunch of tags
|
20
|
+
#### #tag #tag and #tag again and tell @jim :now to #tag everything in his %life as well
|
31
21
|
|
32
|
-
Dooby uses some special characters to visually help us to differentiate between things and let us search
|
22
|
+
Dooby uses some special characters to visually help us to differentiate between things and let us search items very easily, the ones that you might recognize are **@** and **#**, I stole the idea from Twitter, but of course they don't behave as in Twitter, the **@** sign is not an username but a character to tag a person, that's all, nothing else (so far).
|
33
23
|
|
34
24
|
People
|
35
25
|
|
@@ -43,64 +33,88 @@ Contexts (states of mind, mood, places, etc)
|
|
43
33
|
|
44
34
|
#thinking, #sad
|
45
35
|
|
46
|
-
|
36
|
+
Item sets (for objectives that takes more than one task to achieve)
|
47
37
|
|
48
|
-
%
|
49
|
-
|
50
|
-
|
38
|
+
%fix_computer, %shopping_list, %subproject, %today
|
39
|
+
|
40
|
+
As you can see we can use % as if it were #, I mean, as a context, this is because most of these tags are meaningless to Dooby, she (yes, she's a woman) isn't aware of them, Dooby is aware only of some of them:
|
51
41
|
|
52
42
|
#today
|
53
43
|
#urgent
|
54
44
|
#tomorrow
|
45
|
+
:doing
|
55
46
|
|
56
|
-
|
47
|
+
#### #today and #urgent (**not %today, not %urgent**)
|
48
|
+
All the items tagged with *#today* and *#urgent* will be shown in a special section every time you list your to-dos/notes.
|
57
49
|
|
58
|
-
|
50
|
+
#### #tomorrow
|
51
|
+
It will be converted into tomorrow's date and marked with the tag *#today* at the next day.
|
52
|
+
Say today is November, 2 2010, and you create an item like this:
|
59
53
|
|
60
|
-
|
61
|
-
|
54
|
+
I need to #fix the #bug #tomorrow
|
55
|
+
|
56
|
+
Dooby will save it as
|
57
|
+
|
58
|
+
I need to #fix the #bug {Nov/03/2010}
|
59
|
+
|
60
|
+
Now say today is November, 3 2010, Dooby will show it like this:
|
61
|
+
|
62
|
+
I need to #fix the #bug #today
|
63
|
+
|
64
|
+
Of course it'd be shown in the TODAY section.
|
65
|
+
|
66
|
+
#### :doing
|
67
|
+
`xThe item tagged as **:doing** will be the *current item* and some commands will affect it or use it for specifying an item id.
|
62
68
|
|
63
|
-
|
69
|
+
Basic Usage
|
70
|
+
-----------
|
71
|
+
|
72
|
+
NOTE: All the commands have a shortcut, which is the first or two first letters of it.
|
73
|
+
|
74
|
+
First of all, create an alias if you want to save some keystrokes:
|
64
75
|
|
65
76
|
$ alias d='dooby'
|
66
77
|
|
67
78
|
### Initializing Dooby
|
68
79
|
|
69
80
|
$ d init
|
81
|
+
$ d i
|
70
82
|
|
71
|
-
This creates a **.dooby/list.yml** file in the current directory. Dooby will save all the
|
83
|
+
This creates a **.dooby/list.yml** file in the current directory. Dooby will save all the items in it.
|
72
84
|
|
73
85
|
### Adding items
|
74
86
|
|
75
|
-
$ d add "#fix the email error in %website,
|
87
|
+
$ d add "#fix the email error in %website, check this out with @peter #today"
|
76
88
|
|
77
89
|
$ d a "learn to use the #aliases of the #commands"
|
90
|
+
|
91
|
+
$ d a "#pair with @jim on the %tickets module"
|
78
92
|
|
79
93
|
### Listing items
|
80
94
|
|
95
|
+
Try the following commands once you create the items above:
|
96
|
+
|
81
97
|
$ d list @peter
|
82
98
|
|
83
99
|
$ d l today
|
84
100
|
|
85
|
-
$ d l \#today
|
86
|
-
|
87
101
|
$ d l "#today"
|
88
102
|
|
89
103
|
$ d l %website
|
90
104
|
|
91
105
|
$ d l @
|
92
|
-
> shows tasks related to people
|
93
106
|
|
94
107
|
$ d l %
|
95
|
-
> shows all the tasks with a related project
|
96
108
|
|
97
|
-
#### Listing items interactively
|
109
|
+
#### Listing items interactively (use q or ctrl-c to interrupt)
|
98
110
|
|
111
|
+
You can use the [TAB] key to autocomplete tags
|
112
|
+
|
99
113
|
$ d il
|
100
114
|
|
101
|
-
> #
|
115
|
+
> #t[TAB]oday
|
102
116
|
Showing items containing: #today
|
103
|
-
(
|
117
|
+
(393415) #fix the email error in %website, check this out with @peter #today
|
104
118
|
(9cfbf4) Need to go to the #doctor @hendrix #today
|
105
119
|
|
106
120
|
> #doctor
|
@@ -109,9 +123,9 @@ This creates a **.dooby/list.yml** file in the current directory. Dooby will sav
|
|
109
123
|
|
110
124
|
> email
|
111
125
|
Showing items containing: email
|
112
|
-
(
|
126
|
+
(393415) #fix the email error in %website, check this out with @peter #today
|
113
127
|
|
114
|
-
**Note:** Dooby uses SHA1 as
|
128
|
+
**Note:** Dooby uses SHA1 as Item ID.
|
115
129
|
|
116
130
|
#### Listing all the hashtags you have used
|
117
131
|
|
@@ -119,120 +133,106 @@ This creates a **.dooby/list.yml** file in the current directory. Dooby will sav
|
|
119
133
|
#today
|
120
134
|
#doctor
|
121
135
|
#fix
|
136
|
+
#pair
|
122
137
|
|
123
138
|
#### Listing all the people you have tagged
|
124
139
|
|
125
140
|
$ d l@
|
126
141
|
@peter
|
127
142
|
@hendrix
|
143
|
+
@jim
|
128
144
|
|
129
|
-
#### Listing all the
|
145
|
+
#### Listing all the item sets
|
130
146
|
|
131
147
|
$ d l%
|
132
148
|
%website
|
149
|
+
%tickets
|
133
150
|
|
134
|
-
### Editing items
|
135
|
-
|
136
|
-
**Dooby** supports autocompletion of task IDs in the *delete* and the *edit* commands, to fire it just do the same as in a bash shell, press TAB TAB.
|
137
|
-
|
138
|
-
$ d edit
|
139
|
-
|
140
|
-
or
|
141
|
-
|
142
|
-
$ d e
|
143
|
-
Task ID > TAB TAB
|
144
|
-
b954bf 9cfbf4 (we only have 2 tasks)
|
145
|
-
|
146
|
-
$ d e
|
147
|
-
Task ID > b TAB
|
151
|
+
### Editing items (use q or ctrl-c to interrupt)
|
148
152
|
|
149
|
-
|
153
|
+
**Dooby** supports autocompletion of item IDs in the *delete*, *bulkdelete* and the *edit* commands as well.
|
150
154
|
|
151
|
-
$ d
|
152
|
-
|
155
|
+
$ d edit
|
156
|
+
Item ID > b[TAB]954bf
|
153
157
|
|
154
|
-
now press Enter and TAB
|
158
|
+
now press Enter and [TAB] again if you want the original text of the item:
|
155
159
|
|
156
160
|
$ d e
|
157
|
-
|
158
|
-
TAB or up arrow to edit > TAB
|
161
|
+
Item ID > b954bf
|
162
|
+
TAB or up arrow to edit > [TAB]#fix the email error in %website, check this out with @peter #today
|
159
163
|
|
160
|
-
|
161
|
-
Task ID > b954bf
|
162
|
-
TAB or up arrow to edit > #fix the email error in %website, talk to @peter #today
|
164
|
+
Edit it and press Enter and the item will be saved.
|
163
165
|
|
164
166
|
$ d e
|
165
|
-
|
167
|
+
Item ID > b954bf
|
166
168
|
TAB or up arrow to edit > #fix the email error in %website #today
|
167
169
|
|
168
|
-
|
169
|
-
|
170
|
-
### Deleting items
|
170
|
+
### Deleting items (use q or ctrl-c to interrupt)
|
171
171
|
|
172
172
|
$ d delete
|
173
|
+
Item ID > 5[TAB]21a3d
|
173
174
|
|
174
|
-
|
175
|
-
|
176
|
-
$ d d
|
177
|
-
Task ID > TAB TAB
|
178
|
-
521a3d 9cfbf4
|
179
|
-
|
180
|
-
**Note:** the *SHA1* of the task we edited previously has changed because it's based on the content
|
175
|
+
**Note:** the *SHA1* of the item we edited previously has changed because it's based on the content
|
181
176
|
|
182
177
|
$ d d
|
183
|
-
|
178
|
+
Item ID > 9cfbf4
|
184
179
|
9cfbf4 deleted...
|
185
180
|
|
186
|
-
**Dooby** won't ask you if you really want to delete the
|
181
|
+
**Dooby** won't ask you if you really really want to delete the item.
|
187
182
|
|
188
183
|
$ d l
|
189
184
|
Showing all items...
|
190
|
-
(
|
185
|
+
(c733ff) #fix the email error in %website #today
|
191
186
|
|
192
187
|
### Bulk delete
|
193
188
|
|
194
|
-
If you want to delete all the
|
189
|
+
If you want to delete all the items containing an exact tag or set of tags or a tag starting with some text you can use bulk delete to do so. This feature will delete only by tag, not simple text, actually if you enter simple text it will simply ignore it.
|
195
190
|
|
196
|
-
Bulk delete supports auto-completion too. Say you want to delete all the
|
191
|
+
Bulk delete supports auto-completion too. Say you want to delete all the items containing @hendrix AND #today.
|
197
192
|
|
198
193
|
$ d bulkdelete
|
194
|
+
What do you want to bulk delete?
|
195
|
+
> #t[TAB]oday @h[TAB]endrix
|
199
196
|
|
200
|
-
|
201
|
-
|
202
|
-
$ d b
|
203
|
-
What do you want to bulk delete? (@, #, % allowed)
|
204
|
-
_ #TAB TAB
|
205
|
-
#today #doctor
|
197
|
+
What if you want to delete all the items containing a tag starting with **#ma** like *#mac*, *#manual*, and *#macro*?, simple:
|
206
198
|
|
207
199
|
$ d b
|
208
|
-
What do you want to bulk delete?
|
209
|
-
#
|
200
|
+
What do you want to bulk delete?
|
201
|
+
> #ma [ENTER]
|
210
202
|
|
211
203
|
That's it
|
212
204
|
|
213
205
|
### Deleting all the items
|
214
206
|
|
215
207
|
$ d flush
|
216
|
-
|
217
|
-
or
|
218
|
-
|
219
|
-
$ d f
|
220
208
|
Sure??? (yes/no)
|
221
209
|
yes
|
222
|
-
All the
|
210
|
+
All the items were deleted!
|
223
211
|
|
224
|
-
### Deleting the **.dooby** directory
|
212
|
+
### Deleting the **.dooby** directory (list.yml included, of course)
|
225
213
|
|
226
214
|
$ d trash
|
227
|
-
|
228
|
-
or
|
229
|
-
|
230
|
-
$ d t
|
231
215
|
Sure??? (yes/no)
|
232
216
|
yes
|
233
217
|
No more dooby here T_T
|
234
218
|
|
235
|
-
|
219
|
+
## The current item (item tagged with **:doing**)
|
220
|
+
|
221
|
+
### Use an item as commit message (git)
|
222
|
+
|
223
|
+
Let's say we add a task we need to get done:
|
224
|
+
|
225
|
+
$ d a "#fix the bug in cart :doing"
|
226
|
+
|
227
|
+
and that once we get the task done we want to commit the fix:
|
228
|
+
|
229
|
+
$ git add the_file
|
230
|
+
|
231
|
+
$ d commit
|
232
|
+
The commit message was #fix the bug in cart
|
233
|
+
|
234
|
+
|
235
|
+
## Help
|
236
236
|
|
237
237
|
You can check the help out using the -h flag
|
238
238
|
|
@@ -248,7 +248,7 @@ You can check the help out using the -h flag
|
|
248
248
|
dooby list [what_to_show*] [options]+
|
249
249
|
|
250
250
|
DESCRIPTION
|
251
|
-
Lists @people, #tags, %projects or
|
251
|
+
Lists @people, #tags, %projects or items (default)
|
252
252
|
|
253
253
|
PARAMETERS
|
254
254
|
what_to_show (-1 ~> what_to_show)
|
@@ -257,7 +257,18 @@ You can check the help out using the -h flag
|
|
257
257
|
Known bugs
|
258
258
|
----------
|
259
259
|
|
260
|
-
*
|
260
|
+
* In Windows the text is shown with the color codes even installing the *win32console* gem
|
261
|
+
|
262
|
+
To Do
|
263
|
+
-----
|
264
|
+
|
265
|
+
* refactor List#find method, it must return a hash of items not the strings to show in terminal
|
266
|
+
* **$ dooby done** should tag the current item as *:done*
|
267
|
+
* Make it configurable through an external file
|
268
|
+
* Get rid of special chars (@, #, %) when item is used as git commit message
|
269
|
+
* if item is tagged as *:doing* check if there are others tagged with the same tag, if so, tag them with *:hold*
|
270
|
+
* Hide items tagged as *:hidden*
|
271
|
+
* Only show items not containing the specified word(s)
|
261
272
|
|
262
273
|
Special Thanks
|
263
274
|
--------------
|
@@ -270,7 +281,6 @@ Most of the the ideas to code **dooby** were based on the work of other programm
|
|
270
281
|
|
271
282
|
Thanks all of you!
|
272
283
|
|
273
|
-
|
274
284
|
Note on Patches/Pull Requests
|
275
285
|
-----------------------------
|
276
286
|
|
@@ -285,4 +295,4 @@ Note on Patches/Pull Requests
|
|
285
295
|
Copyright
|
286
296
|
---------
|
287
297
|
|
288
|
-
Copyright (c) 2010 Rafael Magana. See LICENSE for details.
|
298
|
+
Copyright (c) 2010 Rafael Magana. See LICENSE for details.
|