sifttter-redux 0.2.5 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +8 -8
- data/HISTORY.md +12 -4
- data/README.md +232 -23
- data/Rakefile +2 -37
- data/bin/srd +47 -17
- data/lib/sifttter-redux/constants.rb +1 -1
- data/lib/sifttter-redux/date-range-maker.rb +119 -12
- data/sifttter-redux.gemspec +1 -0
- data/test/catch_up_test.rb +61 -10
- metadata +15 -1
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
YjZhZTIzMTI3NTM1Mjc1MjFhZThiODc5ZmI2YmFkZjc4YTk2ZDY3Yw==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
OTAxYzExZjZjNDc1MmU5NjVkY2RkYjE1MTU3YzYwNDliMmU5Nzk2YQ==
|
7
7
|
SHA512:
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
NDA2Y2VmYTg4YWIzNTFkZTg0YjYyMTAyZGQ1ODM1Y2IzMjE0ZDA5NDkwZjIy
|
10
|
+
ZmQ2NDBhYzExYjIxMjVjM2U1NTY4NDkxYWY2ZmI4NjhlYWY3OTU3ZTVkMjE5
|
11
|
+
M2NiMTFjNTY5NTlmYTljYjY2ZWY4ZDVkZGM3NTk5MWRhNmFkMzE=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
NDEzOTY5YWZkZmMyZDBiOWRlNWVkOTNhZGNjYmVhNjAzNjFhMmExYTc0ZTgx
|
14
|
+
MDg1ODY4YTM0M2U4MzRkMzkzM2M3YzFiNzdlMGIzZDVhNjQ5ZTAwMjc1NTAz
|
15
|
+
MjI4NmMzN2IzMmRiMjcwMjJlODVlZGRiOWQ5YWZmMGUyMzg4NzY=
|
data/HISTORY.md
CHANGED
@@ -1,3 +1,11 @@
|
|
1
|
+
# 0.3.0
|
2
|
+
|
3
|
+
* Added ability to create entries for the past N days (not just 7)
|
4
|
+
* Added ability to create entries for the past N weeks
|
5
|
+
* Refactorings of existing DateRangeMaker class
|
6
|
+
* Additional documentation
|
7
|
+
* Fixed a bug with using Chronic's language parsing using `-f`
|
8
|
+
|
1
9
|
# 0.2.5
|
2
10
|
|
3
11
|
* Fixed a bug where execution could prematurely halt if no Day One entries were found
|
@@ -16,13 +24,13 @@
|
|
16
24
|
|
17
25
|
# 0.2.1
|
18
26
|
|
19
|
-
* Fixed a bug where the config manager would fail on certain platforms
|
20
|
-
* Fixed a bug where the path to Dropbox Uploader became malformed
|
27
|
+
* Fixed a bug where the config manager would fail on certain platforms
|
28
|
+
* Fixed a bug where the path to Dropbox Uploader became malformed
|
21
29
|
|
22
30
|
# 0.2.0
|
23
31
|
|
24
|
-
* Implemented catch-up mode
|
32
|
+
* Implemented catch-up mode
|
25
33
|
|
26
34
|
# 0.1.0
|
27
35
|
|
28
|
-
* Initial release of Sifttter Redux
|
36
|
+
* Initial release of Sifttter Redux
|
data/README.md
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
Sifttter Redux
|
2
2
|
==============
|
3
3
|
|
4
|
-
Siftter Redux is a modification of Craig Eley's [
|
4
|
+
Siftter Redux is a modification of Craig Eley's [Sifttter](http://craigeley.com/post/72565974459/sifttter-an-ifttt-to-day-one-logger "Sifttter"), a script to collect information from [IFTTT](http://www.ifttt.com "IFTTT") and place it in a [Day One](http://dayoneapp.com, "Day One") journal.
|
5
5
|
|
6
6
|
Siftter Redux's primary difference is in its execution method: it intended to run autonomously so that it does not need to be manually activated. This allows IFTTT data to be synchronized to Day One on a schedule.
|
7
7
|
|
@@ -70,42 +70,183 @@ Initialization will perform the following steps:
|
|
70
70
|
3. The location on your filesystem where Day One files will be temporarily stored
|
71
71
|
4. The location of your Day One files in Dropbox
|
72
72
|
|
73
|
-
### Basic
|
73
|
+
### Basic Execution
|
74
74
|
|
75
75
|
```
|
76
|
-
# Creates an entry for today
|
77
76
|
$ srd exec
|
77
|
+
#### EXECUTING...
|
78
|
+
---> INFO: Creating entry for February 15, 2014...
|
79
|
+
---> INFO: Downloading Sifttter files...DONE.
|
80
|
+
---> SUCCESS: Entry logged for February 15, 2014...
|
81
|
+
---> INFO: Uploading Day One entries to Dropbox...DONE.
|
82
|
+
---> INFO: Removing downloaded Day One files...DONE.
|
83
|
+
---> INFO: Removing downloaded Sifttter files...DONE.
|
84
|
+
#### EXECUTION COMPLETE!
|
78
85
|
```
|
79
86
|
|
80
87
|
### "Catch-up" Mode
|
81
88
|
|
82
|
-
Sometimes, events occur that prevent Sifttter Redux from running (power loss to your device, a bad Cron job, etc.). In this case, Sifttter Redux's "catch-up" mode can be used to collect any valid journal
|
89
|
+
Sometimes, events occur that prevent Sifttter Redux from running (power loss to your device, a bad Cron job, etc.). In this case, Sifttter Redux's "catch-up" mode can be used to collect any valid journal on or before today's date.
|
83
90
|
|
84
|
-
There are many ways to use this mode:
|
91
|
+
There are many ways to use this mode (note that "today" in these examples is **February 15, 2014**):
|
85
92
|
|
86
|
-
####
|
93
|
+
#### Yesterday Catch-up
|
87
94
|
|
88
|
-
To create
|
95
|
+
To create an entry for yesterday:
|
89
96
|
|
90
97
|
```
|
91
|
-
|
92
|
-
|
98
|
+
$ srd exec -y
|
99
|
+
#### EXECUTING...
|
100
|
+
---> INFO: Creating entry for February 14, 2014...
|
101
|
+
---> INFO: Downloading Sifttter files...DONE.
|
102
|
+
---> SUCCESS: Entry logged for February 14, 2014...
|
103
|
+
---> INFO: Uploading Day One entries to Dropbox...DONE.
|
104
|
+
---> INFO: Removing downloaded Day One files...DONE.
|
105
|
+
---> INFO: Removing downloaded Sifttter files...DONE.
|
106
|
+
#### EXECUTION COMPLETE!
|
93
107
|
```
|
94
108
|
|
95
|
-
|
109
|
+
#### Last "N" Days Catch-up
|
110
|
+
|
111
|
+
Sifttter Redux allows you to specify the number of days back it should look for new entries:
|
96
112
|
|
97
113
|
```
|
98
|
-
|
99
|
-
|
114
|
+
$ srd exec -n 3
|
115
|
+
#### EXECUTING...
|
116
|
+
---> INFO: Creating entries for dates from February 12, 2014 to February 14, 2014...
|
117
|
+
---> INFO: Downloading Sifttter files...DONE.
|
118
|
+
---> SUCCESS: Entry logged for February 12, 2014...
|
119
|
+
---> SUCCESS: Entry logged for February 13, 2014...
|
120
|
+
---> SUCCESS: Entry logged for February 14, 2014...
|
121
|
+
---> INFO: Uploading Day One entries to Dropbox...DONE.
|
122
|
+
---> INFO: Removing downloaded Day One files...DONE.
|
123
|
+
---> INFO: Removing downloaded Sifttter files...DONE.
|
124
|
+
#### EXECUTION COMPLETE!
|
125
|
+
|
126
|
+
$ srd exec -n 12
|
127
|
+
---> INFO: Creating entries for dates from February 03, 2014 to February 14, 2014...
|
128
|
+
---> INFO: Downloading Sifttter files...DONE.
|
129
|
+
---> SUCCESS: February 03, 2014...
|
130
|
+
---> SUCCESS: February 04, 2014...
|
131
|
+
---> SUCCESS: February 05, 2014...
|
132
|
+
---> SUCCESS: February 06, 2014...
|
133
|
+
---> SUCCESS: February 07, 2014...
|
134
|
+
---> SUCCESS: February 08, 2014...
|
135
|
+
---> SUCCESS: February 09, 2014...
|
136
|
+
---> SUCCESS: February 10, 2014...
|
137
|
+
---> SUCCESS: February 11, 2014...
|
138
|
+
---> SUCCESS: February 12, 2014...
|
139
|
+
---> SUCCESS: February 13, 2014...
|
140
|
+
---> SUCCESS: February 14, 2014...
|
141
|
+
---> INFO: Uploading Day One entries to Dropbox...DONE.
|
142
|
+
---> INFO: Removing downloaded Day One files...DONE.
|
143
|
+
---> INFO: Removing downloaded Sifttter files...DONE.
|
144
|
+
#### EXECUTION COMPLETE!
|
100
145
|
```
|
101
146
|
|
102
|
-
|
147
|
+
Note that this option goes until yesterday ("yesterday" because you might not be ready to have today's entries scanned). If you'd rather include today's date, you can always add the `-i` switch:
|
103
148
|
|
104
|
-
|
149
|
+
```
|
150
|
+
$ srd exec -i -n 3
|
151
|
+
#### EXECUTING...
|
152
|
+
---> INFO: Creating entries for dates from February 12, 2014 to February 15, 2014...
|
153
|
+
---> INFO: Downloading Sifttter files...DONE.
|
154
|
+
---> SUCCESS: Entry logged for February 12, 2014...
|
155
|
+
---> SUCCESS: Entry logged for February 13, 2014...
|
156
|
+
---> SUCCESS: Entry logged for February 14, 2014...
|
157
|
+
---> SUCCESS: Entry logged for February 15, 2014...
|
158
|
+
---> INFO: Uploading Day One entries to Dropbox...DONE.
|
159
|
+
---> INFO: Removing downloaded Day One files...DONE.
|
160
|
+
---> INFO: Removing downloaded Sifttter files...DONE.
|
161
|
+
#### EXECUTION COMPLETE!
|
162
|
+
```
|
163
|
+
|
164
|
+
#### Last "N" Weeks Catch-up
|
165
|
+
|
166
|
+
Sifttter Redux also allows you to specify a number of weeks back that should be scanned for new entries:
|
105
167
|
|
106
168
|
```
|
107
|
-
|
108
|
-
|
169
|
+
$ srd exec -w 1
|
170
|
+
#### EXECUTING...
|
171
|
+
---> INFO: Creating entries for dates from February 03, 2014 to February 14, 2014...
|
172
|
+
---> INFO: Downloading Sifttter files...DONE.
|
173
|
+
---> SUCCESS: Entry logged for February 03, 2014...
|
174
|
+
---> SUCCESS: Entry logged for February 04, 2014...
|
175
|
+
---> SUCCESS: Entry logged for February 05, 2014...
|
176
|
+
---> SUCCESS: Entry logged for February 06, 2014...
|
177
|
+
---> SUCCESS: Entry logged for February 07, 2014...
|
178
|
+
---> SUCCESS: Entry logged for February 08, 2014...
|
179
|
+
---> SUCCESS: Entry logged for February 09, 2014...
|
180
|
+
---> SUCCESS: Entry logged for February 10, 2014...
|
181
|
+
---> SUCCESS: Entry logged for February 11, 2014...
|
182
|
+
---> SUCCESS: Entry logged for February 12, 2014...
|
183
|
+
---> SUCCESS: Entry logged for February 13, 2014...
|
184
|
+
---> SUCCESS: Entry logged for February 14, 2014...
|
185
|
+
---> INFO: Uploading Day One entries to Dropbox...DONE.
|
186
|
+
---> INFO: Removing downloaded Day One files...DONE.
|
187
|
+
---> INFO: Removing downloaded Sifttter files...DONE.
|
188
|
+
#### EXECUTION COMPLETE!
|
189
|
+
|
190
|
+
$ srd exec -w 3
|
191
|
+
#### EXECUTING...
|
192
|
+
---> INFO: Creating entries for dates from January 20, 2014 to February 14, 2014...
|
193
|
+
---> INFO: Downloading Sifttter files...DONE.
|
194
|
+
---> SUCCESS: Entry logged for January 20, 2014...
|
195
|
+
---> SUCCESS: Entry logged for January 21, 2014...
|
196
|
+
---> SUCCESS: Entry logged for January 22, 2014...
|
197
|
+
---> SUCCESS: Entry logged for January 23, 2014...
|
198
|
+
---> SUCCESS: Entry logged for January 24, 2014...
|
199
|
+
---> SUCCESS: Entry logged for January 25, 2014...
|
200
|
+
---> SUCCESS: Entry logged for January 26, 2014...
|
201
|
+
---> SUCCESS: Entry logged for January 27, 2014...
|
202
|
+
---> SUCCESS: Entry logged for January 28, 2014...
|
203
|
+
---> SUCCESS: Entry logged for January 29, 2014...
|
204
|
+
---> SUCCESS: Entry logged for January 30, 2014...
|
205
|
+
---> SUCCESS: Entry logged for January 31, 2014...
|
206
|
+
---> SUCCESS: Entry logged for February 01, 2014...
|
207
|
+
---> SUCCESS: Entry logged for February 02, 2014...
|
208
|
+
---> SUCCESS: Entry logged for February 03, 2014...
|
209
|
+
---> SUCCESS: Entry logged for February 04, 2014...
|
210
|
+
---> SUCCESS: Entry logged for February 05, 2014...
|
211
|
+
---> SUCCESS: Entry logged for February 06, 2014...
|
212
|
+
---> SUCCESS: Entry logged for February 07, 2014...
|
213
|
+
---> SUCCESS: Entry logged for February 08, 2014...
|
214
|
+
---> SUCCESS: Entry logged for February 09, 2014...
|
215
|
+
---> SUCCESS: Entry logged for February 10, 2014...
|
216
|
+
---> SUCCESS: Entry logged for February 11, 2014...
|
217
|
+
---> SUCCESS: Entry logged for February 12, 2014...
|
218
|
+
---> SUCCESS: Entry logged for February 13, 2014...
|
219
|
+
---> SUCCESS: Entry logged for February 14, 2014...
|
220
|
+
---> INFO: Uploading Day One entries to Dropbox...DONE.
|
221
|
+
---> INFO: Removing downloaded Day One files...DONE.
|
222
|
+
---> INFO: Removing downloaded Sifttter files...DONE.
|
223
|
+
#### EXECUTION COMPLETE!
|
224
|
+
```
|
225
|
+
|
226
|
+
As you'd expect, you can always add the `-i` switch:
|
227
|
+
|
228
|
+
```
|
229
|
+
$ srd exec -i -w 1
|
230
|
+
#### EXECUTING...
|
231
|
+
---> INFO: Creating entries for dates from February 03, 2014 to February 15, 2014...
|
232
|
+
---> INFO: Downloading Sifttter files...DONE.
|
233
|
+
---> SUCCESS: Entry logged for February 03, 2014...
|
234
|
+
---> SUCCESS: Entry logged for February 04, 2014...
|
235
|
+
---> SUCCESS: Entry logged for February 05, 2014...
|
236
|
+
---> SUCCESS: Entry logged for February 06, 2014...
|
237
|
+
---> SUCCESS: Entry logged for February 07, 2014...
|
238
|
+
---> SUCCESS: Entry logged for February 08, 2014...
|
239
|
+
---> SUCCESS: Entry logged for February 09, 2014...
|
240
|
+
---> SUCCESS: Entry logged for February 10, 2014...
|
241
|
+
---> SUCCESS: Entry logged for February 11, 2014...
|
242
|
+
---> SUCCESS: Entry logged for February 12, 2014...
|
243
|
+
---> SUCCESS: Entry logged for February 13, 2014...
|
244
|
+
---> SUCCESS: Entry logged for February 14, 2014...
|
245
|
+
---> SUCCESS: Entry logged for February 15, 2014...
|
246
|
+
---> INFO: Uploading Day One entries to Dropbox...DONE.
|
247
|
+
---> INFO: Removing downloaded Day One files...DONE.
|
248
|
+
---> INFO: Removing downloaded Sifttter files...DONE.
|
249
|
+
#### EXECUTION COMPLETE!
|
109
250
|
```
|
110
251
|
|
111
252
|
#### Date Range Catch-up
|
@@ -113,22 +254,79 @@ $ srd exec -y
|
|
113
254
|
To create entries for a range of dates:
|
114
255
|
|
115
256
|
```
|
116
|
-
# Creates an entry for each day from 2/1/2014 to 2/12/2014
|
117
257
|
$ srd exec -f 2014-02-01 -t 2014-02-12
|
258
|
+
#### EXECUTING...
|
259
|
+
---> INFO: Creating entries for dates from February 01, 2014 to February 12, 2014...
|
260
|
+
---> INFO: Downloading Sifttter files...DONE.
|
261
|
+
---> SUCCESS: Entry logged for February 01, 2014...
|
262
|
+
---> SUCCESS: Entry logged for February 02, 2014...
|
263
|
+
---> SUCCESS: Entry logged for February 03, 2014...
|
264
|
+
---> SUCCESS: Entry logged for February 04, 2014...
|
265
|
+
---> SUCCESS: Entry logged for February 05, 2014...
|
266
|
+
---> SUCCESS: Entry logged for February 06, 2014...
|
267
|
+
---> SUCCESS: Entry logged for February 07, 2014...
|
268
|
+
---> SUCCESS: Entry logged for February 08, 2014...
|
269
|
+
---> SUCCESS: Entry logged for February 09, 2014...
|
270
|
+
---> SUCCESS: Entry logged for February 10, 2014...
|
271
|
+
---> SUCCESS: Entry logged for February 11, 2014...
|
272
|
+
---> SUCCESS: Entry logged for February 12, 2014...
|
273
|
+
---> INFO: Uploading Day One entries to Dropbox...DONE.
|
274
|
+
---> INFO: Removing downloaded Day One files...DONE.
|
275
|
+
---> INFO: Removing downloaded Sifttter files...DONE.
|
276
|
+
#### EXECUTION COMPLETE!
|
118
277
|
```
|
119
278
|
|
120
279
|
Even more simply, to create entries from a specific point until yesterday ("yesterday" because you might not be ready to have today's entries scanned):
|
121
280
|
|
122
281
|
```
|
123
|
-
# Creates an entry for each day from 2/1/2014 to yesterday's date
|
124
282
|
$ srd exec -f 2014-02-01
|
283
|
+
#### EXECUTING...
|
284
|
+
---> INFO: Creating entries for dates from February 01, 2014 to February 12, 2014...
|
285
|
+
---> INFO: Downloading Sifttter files...DONE.
|
286
|
+
---> SUCCESS: Entry logged for February 01, 2014...
|
287
|
+
---> SUCCESS: Entry logged for February 02, 2014...
|
288
|
+
---> SUCCESS: Entry logged for February 03, 2014...
|
289
|
+
---> SUCCESS: Entry logged for February 04, 2014...
|
290
|
+
---> SUCCESS: Entry logged for February 05, 2014...
|
291
|
+
---> SUCCESS: Entry logged for February 06, 2014...
|
292
|
+
---> SUCCESS: Entry logged for February 07, 2014...
|
293
|
+
---> SUCCESS: Entry logged for February 08, 2014...
|
294
|
+
---> SUCCESS: Entry logged for February 09, 2014...
|
295
|
+
---> SUCCESS: Entry logged for February 10, 2014...
|
296
|
+
---> SUCCESS: Entry logged for February 11, 2014...
|
297
|
+
---> SUCCESS: Entry logged for February 12, 2014...
|
298
|
+
---> INFO: Uploading Day One entries to Dropbox...DONE.
|
299
|
+
---> INFO: Removing downloaded Day One files...DONE.
|
300
|
+
---> INFO: Removing downloaded Sifttter files...DONE.
|
301
|
+
#### EXECUTION COMPLETE!
|
125
302
|
```
|
126
303
|
|
127
|
-
|
304
|
+
In this case, once more, you can use the trusty `-i` switch if you want:
|
128
305
|
|
129
306
|
```
|
130
|
-
|
131
|
-
|
307
|
+
$ srd exec -i -f 2014-02-01
|
308
|
+
#### EXECUTING...
|
309
|
+
---> INFO: Creating entries for dates from February 01, 2014 to February 15, 2014...
|
310
|
+
---> INFO: Downloading Sifttter files...DONE.
|
311
|
+
---> SUCCESS: Entry logged for February 01, 2014...
|
312
|
+
---> SUCCESS: Entry logged for February 02, 2014...
|
313
|
+
---> SUCCESS: Entry logged for February 03, 2014...
|
314
|
+
---> SUCCESS: Entry logged for February 04, 2014...
|
315
|
+
---> SUCCESS: Entry logged for February 05, 2014...
|
316
|
+
---> SUCCESS: Entry logged for February 06, 2014...
|
317
|
+
---> SUCCESS: Entry logged for February 07, 2014...
|
318
|
+
---> SUCCESS: Entry logged for February 08, 2014...
|
319
|
+
---> SUCCESS: Entry logged for February 09, 2014...
|
320
|
+
---> SUCCESS: Entry logged for February 10, 2014...
|
321
|
+
---> SUCCESS: Entry logged for February 11, 2014...
|
322
|
+
---> SUCCESS: Entry logged for February 12, 2014...
|
323
|
+
---> SUCCESS: Entry logged for February 13, 2014...
|
324
|
+
---> SUCCESS: Entry logged for February 14, 2014...
|
325
|
+
---> SUCCESS: Entry logged for February 15, 2014...
|
326
|
+
---> INFO: Uploading Day One entries to Dropbox...DONE.
|
327
|
+
---> INFO: Removing downloaded Day One files...DONE.
|
328
|
+
---> INFO: Removing downloaded Sifttter files...DONE.
|
329
|
+
#### EXECUTION COMPLETE!
|
132
330
|
```
|
133
331
|
|
134
332
|
Two notes to be aware of:
|
@@ -139,8 +337,19 @@ Two notes to be aware of:
|
|
139
337
|
Sifttter Redux makes use of the excellent [Chronic gem](https://github.com/mojombo/chronic "Chronic"), which provides natural language parsing for dates and times. This means that you can run commands with more "human" dates:
|
140
338
|
|
141
339
|
```
|
142
|
-
|
143
|
-
|
340
|
+
$ srd exec -f "last monday" -t "yesterday"
|
341
|
+
#### EXECUTING...
|
342
|
+
---> INFO: Creating entries for dates from February 10, 2014 to February 14, 2014...
|
343
|
+
---> INFO: Downloading Sifttter files...DONE.
|
344
|
+
---> SUCCESS: Entry logged for February 10, 2014...
|
345
|
+
---> SUCCESS: Entry logged for February 11, 2014...
|
346
|
+
---> SUCCESS: Entry logged for February 12, 2014...
|
347
|
+
---> SUCCESS: Entry logged for February 13, 2014...
|
348
|
+
---> SUCCESS: Entry logged for February 14, 2014...
|
349
|
+
---> INFO: Uploading Day One entries to Dropbox...DONE.
|
350
|
+
---> INFO: Removing downloaded Day One files...DONE.
|
351
|
+
---> INFO: Removing downloaded Sifttter files...DONE.
|
352
|
+
#### EXECUTION COMPLETE!
|
144
353
|
```
|
145
354
|
|
146
355
|
See [Chronic's Examples section](https://github.com/mojombo/chronic#examples "Chronic Examples") for more examples.
|
data/Rakefile
CHANGED
@@ -1,44 +1,9 @@
|
|
1
1
|
require 'rake/clean'
|
2
|
-
require 'rubygems'
|
3
|
-
require 'rubygems/package_task'
|
4
|
-
require 'rdoc/task'
|
5
|
-
require 'cucumber'
|
6
|
-
require 'cucumber/rake/task'
|
7
|
-
Rake::RDocTask.new do |rd|
|
8
|
-
rd.main = "README.rdoc"
|
9
|
-
rd.rdoc_files.include("README.rdoc","lib/**/*.rb","bin/**/*")
|
10
|
-
rd.title = 'Your application title'
|
11
|
-
end
|
12
|
-
|
13
|
-
spec = eval(File.read('sifttter-redux.gemspec'))
|
14
|
-
|
15
|
-
Gem::PackageTask.new(spec) do |pkg|
|
16
|
-
end
|
17
|
-
CUKE_RESULTS = 'results.html'
|
18
|
-
CLEAN << CUKE_RESULTS
|
19
|
-
desc 'Run features'
|
20
|
-
Cucumber::Rake::Task.new(:features) do |t|
|
21
|
-
opts = "features --format html -o #{CUKE_RESULTS} --format progress -x"
|
22
|
-
opts += " --tags #{ENV['TAGS']}" if ENV['TAGS']
|
23
|
-
t.cucumber_opts = opts
|
24
|
-
t.fork = false
|
25
|
-
end
|
26
|
-
|
27
|
-
desc 'Run features tagged as work-in-progress (@wip)'
|
28
|
-
Cucumber::Rake::Task.new('features:wip') do |t|
|
29
|
-
tag_opts = ' --tags ~@pending'
|
30
|
-
tag_opts = ' --tags @wip'
|
31
|
-
t.cucumber_opts = "features --format html -o #{CUKE_RESULTS} --format pretty -x -s#{tag_opts}"
|
32
|
-
t.fork = false
|
33
|
-
end
|
34
|
-
|
35
|
-
task :cucumber => :features
|
36
|
-
task 'cucumber:wip' => 'features:wip'
|
37
|
-
task :wip => 'features:wip'
|
38
2
|
require 'rake/testtask'
|
3
|
+
|
39
4
|
Rake::TestTask.new do |t|
|
40
5
|
t.libs << "test"
|
41
6
|
t.test_files = FileList['test/*_test.rb']
|
42
7
|
end
|
43
8
|
|
44
|
-
task :default => [:test
|
9
|
+
task :default => [:test]
|
data/bin/srd
CHANGED
@@ -92,54 +92,76 @@ desc 'Execute the script'
|
|
92
92
|
command :exec do |c|
|
93
93
|
|
94
94
|
c.flag(
|
95
|
-
[:f
|
95
|
+
[:f],
|
96
96
|
:desc => 'Run catch-up mode with this start date',
|
97
97
|
)
|
98
98
|
|
99
99
|
c.flag(
|
100
|
-
[:
|
101
|
-
:desc => 'Run catch-up mode
|
100
|
+
[:n],
|
101
|
+
:desc => 'Run catch-up mode for the last N days'
|
102
|
+
)
|
103
|
+
|
104
|
+
c.flag(
|
105
|
+
[:t],
|
106
|
+
:desc => 'Run catch-up mode with this end date (must be accompanied by -f)',
|
107
|
+
)
|
108
|
+
|
109
|
+
c.flag(
|
110
|
+
[:w],
|
111
|
+
:desc => 'Run catch-up mode for the last N weeks'
|
102
112
|
)
|
103
113
|
|
104
114
|
c.switch(
|
105
|
-
[:c
|
106
|
-
:desc => 'Run catch-up mode for the
|
115
|
+
[:c],
|
116
|
+
:desc => 'Run catch-up mode for the current week (i.e., the beginning of the week to yesterday)'
|
107
117
|
)
|
108
118
|
|
109
119
|
c.switch(
|
110
|
-
[:i
|
120
|
+
[:i],
|
111
121
|
:desc => 'Include today\'s date in catch-up'
|
112
122
|
)
|
113
123
|
|
114
124
|
c.switch(
|
115
|
-
[:y
|
125
|
+
[:y],
|
116
126
|
:desc => 'Run catch-up mode for yesterday'
|
117
127
|
)
|
118
128
|
|
119
129
|
c.action do |global_options, options, args|
|
120
130
|
command_complete = false
|
121
|
-
|
131
|
+
|
122
132
|
CliMessage.section('EXECUTING...')
|
133
|
+
|
134
|
+
if (options[:c] || options[:n] || options[:w] || options[:y] || options[:f] || options[:t])
|
123
135
|
|
124
|
-
|
136
|
+
# Current Week
|
125
137
|
if (!command_complete && options[:c])
|
126
|
-
dates = $date_range_maker.
|
138
|
+
dates = $date_range_maker.last_n_weeks(0, {:include_today => options[:i]})
|
127
139
|
command_complete = true
|
128
140
|
end
|
129
141
|
|
142
|
+
# Last N Days
|
143
|
+
if (!command_complete && options[:n])
|
144
|
+
dates = $date_range_maker.last_n_days(options[:n].to_i, {:include_today => options[:i]})
|
145
|
+
command_complete = true
|
146
|
+
end
|
147
|
+
|
148
|
+
# Yesterday
|
130
149
|
if (!command_complete && options[:y])
|
131
150
|
dates = $date_range_maker.yesterday
|
132
151
|
command_complete = true
|
133
152
|
end
|
134
153
|
|
154
|
+
# Last N Weeks
|
155
|
+
if (!command_complete && options[:w])
|
156
|
+
dates = $date_range_maker.last_n_weeks(options[:w].to_i, {:include_today => options[:i]})
|
157
|
+
command_complete = true
|
158
|
+
end
|
159
|
+
|
160
|
+
# Specific Range
|
135
161
|
if (!command_complete && (options[:f] || options[:t]))
|
136
162
|
begin
|
137
|
-
dates = $date_range_maker.range({
|
138
|
-
|
139
|
-
:end_date => options[:t],
|
140
|
-
:include_today => options[:i],
|
141
|
-
})
|
142
|
-
|
163
|
+
dates = $date_range_maker.range(options[:f], options[:t], {:include_today => options[:i]})
|
164
|
+
|
143
165
|
if (dates.last > Date.today)
|
144
166
|
CliMessage.warning("Ignoring overextended end date and using today's date (#{Date.today})")
|
145
167
|
dates = (dates.first..Date.today)
|
@@ -155,13 +177,21 @@ command :exec do |c|
|
|
155
177
|
end
|
156
178
|
|
157
179
|
if (!dates.nil?)
|
158
|
-
|
180
|
+
first_date = dates.first
|
181
|
+
second_date = dates.reverse_each.first
|
182
|
+
|
183
|
+
if (first_date == second_date)
|
184
|
+
CliMessage.info("Creating entry for #{first_date.strftime('%B %d, %Y')}...")
|
185
|
+
else
|
186
|
+
CliMessage.info("Creating entries for dates from #{first_date.strftime('%B %d, %Y')} to #{second_date.strftime('%B %d, %Y')}...")
|
187
|
+
end
|
159
188
|
|
160
189
|
download_sifttter_files
|
161
190
|
|
162
191
|
dates.each do |date|
|
163
192
|
run_sifttter(date)
|
164
193
|
end
|
194
|
+
|
165
195
|
# Upload any Day One entries to Dropbox (if there are any).
|
166
196
|
if (!Dir[$config.sifttter_redux["dayone_local_filepath"] + "/*"].empty?)
|
167
197
|
CliMessage.info("Uploading Day One entries to Dropbox...", false)
|
@@ -1,29 +1,51 @@
|
|
1
|
+
require 'active_support/core_ext'
|
1
2
|
require 'chronic'
|
2
3
|
|
4
|
+
#| ======================================================
|
5
|
+
#| DateRangeMakerError Class
|
6
|
+
#| ======================================================
|
3
7
|
class DateRangeMakerError < StandardError
|
4
8
|
def initialize(msg = "You've triggered a DateRangeMakerError")
|
5
9
|
super
|
6
10
|
end
|
7
11
|
end
|
8
12
|
|
13
|
+
#| ======================================================
|
14
|
+
#| BadChronicDateError Class
|
15
|
+
#| ======================================================
|
9
16
|
class BadChronicDateError < DateRangeMakerError
|
10
17
|
def initialize(msg = "Invalid date provided to Chronic...")
|
11
18
|
super
|
12
19
|
end
|
13
20
|
end
|
14
21
|
|
22
|
+
#| ======================================================
|
23
|
+
#| BadDateOrderError Class
|
24
|
+
#| ======================================================
|
15
25
|
class BadDateOrderError < DateRangeMakerError
|
16
26
|
def initialize(msg = "The start date must be before or equal to the end date...")
|
17
27
|
super
|
18
28
|
end
|
19
29
|
end
|
20
30
|
|
31
|
+
#| ======================================================
|
32
|
+
#| InvalidFlagsError Class
|
33
|
+
#| ======================================================
|
21
34
|
class InvalidFlagsError < DateRangeMakerError
|
22
35
|
def initialize(msg = "You can't specify -t without specifying -f...")
|
23
36
|
super
|
24
37
|
end
|
25
38
|
end
|
26
39
|
|
40
|
+
#| ======================================================
|
41
|
+
#| NegativeDaysError Class
|
42
|
+
#| ======================================================
|
43
|
+
class NegativeDaysError < DateRangeMakerError
|
44
|
+
def initialize(msg = "You must specify a positive number of days to look back...")
|
45
|
+
super
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
27
49
|
#| ======================================================
|
28
50
|
#| DateRangeMaker Class
|
29
51
|
#|
|
@@ -32,25 +54,98 @@ end
|
|
32
54
|
#| ======================================================
|
33
55
|
class DateRangeMaker
|
34
56
|
|
57
|
+
#| ------------------------------------------------------
|
58
|
+
#| initialize method
|
59
|
+
#| @return Void
|
60
|
+
#| ------------------------------------------------------
|
35
61
|
def initialize
|
36
62
|
|
37
63
|
end
|
38
64
|
|
39
|
-
|
40
|
-
|
41
|
-
|
65
|
+
#| ------------------------------------------------------
|
66
|
+
#| last_n_days method
|
67
|
+
#|
|
68
|
+
#| Returns a date range for the last N days (including
|
69
|
+
#| today's date if specified).
|
70
|
+
#| @param num_days The number of days to look back
|
71
|
+
#| @param options Miscellaneous options hash
|
72
|
+
#| @return Range
|
73
|
+
#| ------------------------------------------------------
|
74
|
+
def last_n_days(num_days, options = {})
|
75
|
+
raise NegativeDaysError if num_days < 0
|
76
|
+
|
77
|
+
opts = {
|
78
|
+
:include_today => false
|
79
|
+
}
|
80
|
+
|
81
|
+
options.each do |k, v|
|
82
|
+
k = k.to_sym
|
83
|
+
raise ArgumentError, "Unknown property: #{k}" unless opts.key?(k)
|
84
|
+
opts[k] = v
|
85
|
+
end
|
86
|
+
|
87
|
+
if (opts[:include_today])
|
88
|
+
_r = (Date.today - num_days..Date.today)
|
42
89
|
else
|
43
|
-
_r = (Date.today -
|
90
|
+
_r = (Date.today - num_days...Date.today)
|
44
91
|
end
|
45
92
|
|
46
93
|
return _r
|
47
94
|
end
|
48
95
|
|
49
|
-
|
96
|
+
#| ------------------------------------------------------
|
97
|
+
#| last_n_weeks method
|
98
|
+
#|
|
99
|
+
#| Returns a date range for the last N weeks (including
|
100
|
+
#| today's date if specified).
|
101
|
+
#| @param num_days The number of weeks to look back
|
102
|
+
#| @param options Miscellaneous options hash
|
103
|
+
#| @return Range
|
104
|
+
#| ------------------------------------------------------
|
105
|
+
def last_n_weeks(num_weeks = 0, options = {})
|
106
|
+
raise NegativeDaysError if num_weeks < 0
|
107
|
+
|
108
|
+
opts = {
|
109
|
+
:include_today => false
|
110
|
+
}
|
111
|
+
|
112
|
+
options.each do |k, v|
|
113
|
+
k = k.to_sym
|
114
|
+
raise ArgumentError, "Unknown property: #{k}" unless opts.key?(k)
|
115
|
+
opts[k] = v
|
116
|
+
end
|
117
|
+
|
118
|
+
beginning_date = Date.today.at_beginning_of_week
|
119
|
+
end_date = Date.today.at_end_of_week
|
50
120
|
|
121
|
+
# We're currently before the end of the week, so
|
122
|
+
# reset the new ending date to today.
|
123
|
+
if (end_date > Date.today)
|
124
|
+
end_date = Date.today
|
125
|
+
end
|
126
|
+
|
127
|
+
if (opts[:include_today])
|
128
|
+
_r = (beginning_date - num_weeks.week..end_date)
|
129
|
+
else
|
130
|
+
_r = (beginning_date - num_weeks.week...end_date)
|
131
|
+
end
|
132
|
+
|
133
|
+
return _r
|
134
|
+
end
|
135
|
+
|
136
|
+
#| ------------------------------------------------------
|
137
|
+
#| range method
|
138
|
+
#|
|
139
|
+
#| Returns a date range for specified start dates and
|
140
|
+
#| end dates. Note that specifying an end date greater
|
141
|
+
#| than today's date will force today to be the end date.
|
142
|
+
#| @param start_date The start date
|
143
|
+
#| @param end_date The end date
|
144
|
+
#| @param options Miscellaneous options hash
|
145
|
+
#| @return Range
|
146
|
+
#| ------------------------------------------------------
|
147
|
+
def range(start_date, end_date, options = {})
|
51
148
|
opts = {
|
52
|
-
:start_date => Date.today,
|
53
|
-
:end_date => nil,
|
54
149
|
:include_today => false
|
55
150
|
}
|
56
151
|
|
@@ -61,20 +156,20 @@ class DateRangeMaker
|
|
61
156
|
end
|
62
157
|
|
63
158
|
begin
|
64
|
-
chronic_start_date = Chronic.parse(
|
159
|
+
chronic_start_date = Chronic.parse(start_date).to_date
|
65
160
|
rescue
|
66
|
-
raise BadChronicDateError.new("Invalid date provided to Chronic: #{
|
161
|
+
raise BadChronicDateError.new("Invalid date provided to Chronic: #{start_date}") if !start_date.nil?
|
67
162
|
nil
|
68
163
|
end
|
69
164
|
|
70
165
|
begin
|
71
|
-
chronic_end_date = Chronic.parse(
|
166
|
+
chronic_end_date = Chronic.parse(end_date).to_date
|
72
167
|
rescue
|
73
|
-
raise BadChronicDateError.new("Invalid date provided to Chronic: #{
|
168
|
+
raise BadChronicDateError.new("Invalid date provided to Chronic: #{end_date}") if !end_date.nil?
|
74
169
|
nil
|
75
170
|
end
|
76
171
|
|
77
|
-
raise InvalidFlagsError.new if (
|
172
|
+
raise InvalidFlagsError.new if (start_date.nil? && !end_date.nil?)
|
78
173
|
raise BadDateOrderError.new if (chronic_end_date && chronic_start_date > chronic_end_date)
|
79
174
|
|
80
175
|
if (!chronic_start_date.nil?)
|
@@ -92,10 +187,22 @@ class DateRangeMaker
|
|
92
187
|
return dates
|
93
188
|
end
|
94
189
|
|
190
|
+
#| ------------------------------------------------------
|
191
|
+
#| today method
|
192
|
+
#|
|
193
|
+
#| Returns a date range for today
|
194
|
+
#| @return Range
|
195
|
+
#| ------------------------------------------------------
|
95
196
|
def today
|
96
197
|
return (Date.today..Date.today)
|
97
198
|
end
|
98
199
|
|
200
|
+
#| ------------------------------------------------------
|
201
|
+
#| yesterday method
|
202
|
+
#|
|
203
|
+
#| Returns a date range for yesterday
|
204
|
+
#| @return Range
|
205
|
+
#| ------------------------------------------------------
|
99
206
|
def yesterday
|
100
207
|
return (Date.today - 1..Date.today - 1)
|
101
208
|
end
|
data/sifttter-redux.gemspec
CHANGED
@@ -22,6 +22,7 @@ spec = Gem::Specification.new do |s|
|
|
22
22
|
s.extra_rdoc_files = %w[README.md HISTORY.md LICENSE]
|
23
23
|
|
24
24
|
s.add_development_dependency('rake', '~> 0')
|
25
|
+
s.add_runtime_dependency('activesupport', '~> 0')
|
25
26
|
s.add_runtime_dependency('chronic', '0.10.2')
|
26
27
|
s.add_runtime_dependency('colored','1.2')
|
27
28
|
s.add_runtime_dependency('gli','2.9.0')
|
data/test/catch_up_test.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
require 'active_support/core_ext'
|
1
2
|
require 'date'
|
2
3
|
require 'test_helper'
|
3
4
|
require File.join(File.dirname(__FILE__), '..', 'lib/sifttter-redux/date-range-maker.rb')
|
@@ -16,41 +17,91 @@ class DefaultTest < Test::Unit::TestCase
|
|
16
17
|
assert_equal($drm.yesterday, (Date.today - 1..Date.today - 1))
|
17
18
|
end
|
18
19
|
|
19
|
-
def
|
20
|
-
assert_equal($drm.
|
20
|
+
def test_last_5_days
|
21
|
+
assert_equal($drm.last_n_days(5), (Date.today - 5...Date.today))
|
21
22
|
end
|
22
23
|
|
23
|
-
def
|
24
|
-
assert_equal($drm.
|
24
|
+
def test_last_5_days_include_today
|
25
|
+
assert_equal($drm.last_n_days(5, {:include_today => true}), (Date.today - 5..Date.today))
|
26
|
+
end
|
27
|
+
|
28
|
+
def test_last_12_days
|
29
|
+
assert_equal($drm.last_n_days(12), (Date.today - 12...Date.today))
|
30
|
+
end
|
31
|
+
|
32
|
+
def test_last_12_days_include_today
|
33
|
+
assert_equal($drm.last_n_days(12, {:include_today => true}), (Date.today - 12..Date.today))
|
34
|
+
end
|
35
|
+
|
36
|
+
def test_current_week
|
37
|
+
end_date = Date.today.at_end_of_week
|
38
|
+
if Date.today.at_end_of_week > Date.today
|
39
|
+
end_date = Date.today
|
40
|
+
end
|
41
|
+
|
42
|
+
assert_equal($drm.last_n_weeks, (Date.today.at_beginning_of_week...end_date))
|
43
|
+
end
|
44
|
+
|
45
|
+
def test_current_week_include_today
|
46
|
+
end_date = Date.today.at_end_of_week
|
47
|
+
if Date.today.at_end_of_week > Date.today
|
48
|
+
end_date = Date.today
|
49
|
+
end
|
50
|
+
|
51
|
+
assert_equal($drm.last_n_weeks(0, {:include_today => true}), (Date.today.at_beginning_of_week..end_date))
|
52
|
+
end
|
53
|
+
|
54
|
+
def test_last_2_weeks
|
55
|
+
end_date = Date.today.at_end_of_week
|
56
|
+
if Date.today.at_end_of_week > Date.today
|
57
|
+
end_date = Date.today
|
58
|
+
end
|
59
|
+
|
60
|
+
assert_equal($drm.last_n_weeks(2), (Date.today.at_beginning_of_week - 2.week...end_date))
|
61
|
+
end
|
62
|
+
|
63
|
+
def test_last_2_weeks_include_today
|
64
|
+
end_date = Date.today.at_end_of_week
|
65
|
+
if Date.today.at_end_of_week > Date.today
|
66
|
+
end_date = Date.today
|
67
|
+
end
|
68
|
+
|
69
|
+
assert_equal($drm.last_n_weeks(2, {:include_today => true}), (Date.today.at_beginning_of_week - 2.week..end_date))
|
25
70
|
end
|
26
71
|
|
27
72
|
def test_range_only_start_date
|
28
|
-
assert_equal($drm.range(
|
73
|
+
assert_equal($drm.range("2014-02-01", nil), (Date.parse("2014-02-01")...Date.today))
|
29
74
|
end
|
30
75
|
|
31
76
|
def test_range_only_start_date_include_today
|
32
|
-
assert_equal($drm.range(
|
77
|
+
assert_equal($drm.range("2014-02-01", nil, {:include_today => true}), (Date.parse("2014-02-01")..Date.today))
|
33
78
|
end
|
34
79
|
|
35
80
|
def test_range_start_date_and_end_date
|
36
|
-
assert_equal($drm.range(
|
81
|
+
assert_equal($drm.range("2014-02-01", "2014-02-05"), (Date.parse("2014-02-01")..Date.parse("2014-02-05")))
|
37
82
|
end
|
38
83
|
|
39
84
|
def test_range_bad_dates
|
40
85
|
assert_raise BadChronicDateError do
|
41
|
-
$drm.range(
|
86
|
+
$drm.range("Bad Start Date", "Bad End Date")
|
42
87
|
end
|
43
88
|
end
|
44
89
|
|
45
90
|
def test_range_end_date_with_no_start_date
|
46
91
|
assert_raise InvalidFlagsError do
|
47
|
-
$drm.range(
|
92
|
+
$drm.range(nil, Date.today)
|
48
93
|
end
|
49
94
|
end
|
50
95
|
|
51
96
|
def test_range_end_date_before_start_date
|
52
97
|
assert_raise BadDateOrderError do
|
53
|
-
$drm.range(
|
98
|
+
$drm.range(Date.today, Date.today - 1)
|
99
|
+
end
|
100
|
+
end
|
101
|
+
|
102
|
+
def test_range_negative_look_back
|
103
|
+
assert_raise NegativeDaysError do
|
104
|
+
$drm.last_n_days(-5)
|
54
105
|
end
|
55
106
|
end
|
56
107
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sifttter-redux
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Aaron Bach
|
@@ -24,6 +24,20 @@ dependencies:
|
|
24
24
|
- - ~>
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: activesupport
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ~>
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ~>
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
27
41
|
- !ruby/object:Gem::Dependency
|
28
42
|
name: chronic
|
29
43
|
requirement: !ruby/object:Gem::Requirement
|