chronic_cron 0.3.7 → 0.6.2
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 +5 -5
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +2 -4
- data/lib/chronic_cron.rb +171 -13
- metadata +42 -38
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: e96a490a0772cc3fb664d21a43ff08e1c75c57313a22d5ae439e4f8a0d9afe66
|
4
|
+
data.tar.gz: 7408f6ee2a8cf3b96f49df24701f497b5d9b5bb4a38589e0c16f5c89ba9ebdf3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f75d5c571167e0f57ad4af8dbd5f79597f2eed929f03d83050b9b6e8e24bd90d9aca7cad1e029c2bb768b1db7fa9e24b96f91d1a0ce866b9b25fdcc15511b460
|
7
|
+
data.tar.gz: 793fdf3d0f8ba26a03450d9a8ba939f6dd8d54e472eff0c872b3793942a494b5eac98306e04866d2ebad27ef5b29ad11e407eebffd3242dd62258aff72a1bd72
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data.tar.gz.sig
CHANGED
@@ -1,4 +1,2 @@
|
|
1
|
-
|
2
|
-
�
|
3
|
-
�i@�y)�q6��AR9�ϵ�-�^��µ��ɾJd�
|
4
|
-
����F���&�J�+�hVC���gᾤ9r�*�
|
1
|
+
��t^�lL�����]cW�h�tI�����O��U4��;����� �l�� ���r�}����gs�� 0�s��<]��KL��¡�R��\Bz{� )cMP�C8� �m`�F2��#��,���(?�9���Se�Y�=F.9��X$��3��ElbS�q!b����,/��}lܻ�{j��Y�xA(<��gg�쭡
|
2
|
+
,03�\=n�AU�a�6��7/o#(���k'sX�.�*�u|�@\J��P�s�i�dU'?z��|r���5b2�.L%}��p_i�~_Ђu�`���&��V���Yv'?,/p+���R������j[�)"u��#5`H~h�r����o`,�4D�$�T�W�s��;E��m�i�D+�V�[
|
data/lib/chronic_cron.rb
CHANGED
@@ -10,28 +10,56 @@ require 'timetoday'
|
|
10
10
|
|
11
11
|
class ChronicCron
|
12
12
|
include AppRoutes
|
13
|
+
using ColouredText
|
13
14
|
|
14
15
|
attr_reader :to_expression
|
15
16
|
|
16
|
-
def
|
17
|
+
def self.parse(s)
|
18
|
+
r = new(s)
|
19
|
+
r.valid? ? r : nil
|
20
|
+
end
|
21
|
+
|
22
|
+
def initialize(s, now=Time.now, log: nil, debug: false)
|
23
|
+
|
24
|
+
@now, @log, @debug = now, log, debug
|
17
25
|
|
18
|
-
@now
|
26
|
+
puts ('@now: ' + @now.inspect).debug if @debug
|
19
27
|
|
20
28
|
super()
|
21
29
|
@params = {input: s}
|
22
30
|
expressions(@params)
|
23
31
|
|
24
|
-
|
32
|
+
if s =~ /^tomorrow/i then
|
33
|
+
|
34
|
+
s.sub!(/^tomorrow /i,'')
|
35
|
+
expression = find_expression(s.downcase\
|
36
|
+
.sub(/^(?:is|on|at|from|starting)\s+/,''))
|
37
|
+
@cf = CronFormat.new(expression, now)
|
38
|
+
@cf.adjust_date @cf.to_time - (24 * 60 * 60)
|
39
|
+
|
40
|
+
else
|
41
|
+
|
42
|
+
expression = find_expression(s.downcase\
|
25
43
|
.sub(/^(?:on|at|from|starting)\s+/,''))
|
26
|
-
|
27
|
-
|
44
|
+
puts 'expression: ' + expression.inspect if @debug
|
45
|
+
return unless expression
|
46
|
+
|
47
|
+
@cf = CronFormat.new(expression, now)
|
48
|
+
|
49
|
+
end
|
50
|
+
|
51
|
+
|
28
52
|
@to_expression = @cf.to_expression
|
29
53
|
|
30
54
|
end
|
31
55
|
|
32
|
-
def inspect()
|
33
|
-
|
56
|
+
def inspect()
|
57
|
+
if @cf then
|
58
|
+
"#<ChronicCron:%s @to_expression=\"%s\", @to_time=\"%s\">" %
|
34
59
|
[self.object_id, @to_expression, @cf.to_time]
|
60
|
+
else
|
61
|
+
"#<ChronicCron:%s >" % [self.object_id]
|
62
|
+
end
|
35
63
|
end
|
36
64
|
|
37
65
|
def next()
|
@@ -45,6 +73,10 @@ class ChronicCron
|
|
45
73
|
def to_time()
|
46
74
|
@cf.to_time
|
47
75
|
end
|
76
|
+
|
77
|
+
def valid?
|
78
|
+
@cf.respond_to? :to_time
|
79
|
+
end
|
48
80
|
|
49
81
|
protected
|
50
82
|
|
@@ -57,11 +89,17 @@ class ChronicCron
|
|
57
89
|
|
58
90
|
# e.g. 00 5 15 * *
|
59
91
|
get /(#{r}\s+#{r}\s+#{r}\s#{r}\s#{r})(\s#{r})?/ do
|
92
|
+
|
93
|
+
puts 'ChronicCron#expressions 10' if @debug
|
94
|
+
|
60
95
|
"%s%s" % params[:captures]
|
61
96
|
end
|
62
97
|
|
63
98
|
# e.g. 9:00-18:00 every day
|
64
99
|
get /(\d{1,2}):(\d{1,2})-(\d{1,2}):\d{1,2}\s+#{daily}/ do
|
100
|
+
|
101
|
+
puts 'ChronicCron#expressions 20' if @debug
|
102
|
+
|
65
103
|
"%s %s-%s * * *" % params[:captures].values_at(1,0,2)
|
66
104
|
end
|
67
105
|
|
@@ -71,6 +109,9 @@ class ChronicCron
|
|
71
109
|
|
72
110
|
hrs1 = meridiem1 == 'pm' ? r_hrs1.to_i + 12 : r_hrs1
|
73
111
|
hrs2 = meridiem2 == 'pm' ? r_hrs2.to_i + 12 : r_hrs2
|
112
|
+
|
113
|
+
puts 'ChronicCron#expressions 30' if @debug
|
114
|
+
|
74
115
|
"%s/%s %s-%s * * %s" % [mins1.to_i, interval_mins, hrs1, hrs2, wdays]
|
75
116
|
end
|
76
117
|
|
@@ -79,6 +120,9 @@ class ChronicCron
|
|
79
120
|
|interval_mins, r_hrs1, mins1, meridiem1, r_hrs2, meridiem2|
|
80
121
|
hrs1 = meridiem1 == 'pm' ? r_hrs1.to_i + 12 : r_hrs1
|
81
122
|
hrs2 = meridiem2 == 'pm' ? r_hrs2.to_i + 12 : r_hrs2
|
123
|
+
|
124
|
+
puts 'ChronicCron#expressions 40' if @debug
|
125
|
+
|
82
126
|
"%s/%s %s-%s * * *" % [mins1.to_i, interval_mins, hrs1, hrs2]
|
83
127
|
end
|
84
128
|
|
@@ -87,12 +131,18 @@ class ChronicCron
|
|
87
131
|
|r_hrs1, mins1, meridiem1, r_hrs2, meridiem2|
|
88
132
|
hrs1 = meridiem1 == 'pm' ? r_hrs1.to_i + 12 : r_hrs1
|
89
133
|
hrs2 = meridiem2 == 'pm' ? r_hrs2.to_i + 12 : r_hrs2
|
134
|
+
|
135
|
+
puts 'ChronicCron#expressions 50' if @debug
|
136
|
+
|
90
137
|
"%s %s-%s * * *" % [mins1.to_i, hrs1, hrs2]
|
91
138
|
end
|
92
139
|
|
93
140
|
# e.g. 10:15am every day
|
94
141
|
get /(\d{1,2}):?(\d{1,2})([ap]m)?\s+#{daily}/ do |raw_hrs, mins, meridiem|
|
95
142
|
hrs = in24hrs(raw_hrs, meridiem)
|
143
|
+
|
144
|
+
puts 'ChronicCron#expressions 60' if @debug
|
145
|
+
|
96
146
|
"%s %s * * *" % [mins.to_i, hrs]
|
97
147
|
end
|
98
148
|
|
@@ -100,11 +150,17 @@ class ChronicCron
|
|
100
150
|
get /(\d{1,2}):?(\d{1,2})([ap]m)?\s+(\w+) to (\w+)/ do
|
101
151
|
|raw_hrs, mins, meridiem, wday1, wday2|
|
102
152
|
hrs = in24hrs(raw_hrs, meridiem)
|
153
|
+
|
154
|
+
puts 'ChronicCron#expressions 70' if @debug
|
155
|
+
|
103
156
|
"%s %s * * %s-%s" % [mins.to_i, hrs , wday1, wday2]
|
104
157
|
end
|
105
158
|
|
106
159
|
# e.g. at 11:00 and 16:00 on every day
|
107
160
|
get /(\d{1,2}):?(\d{1,2}) and (\d{1,2}):?\d{1,2} (?:on )?#{daily}/ do
|
161
|
+
|
162
|
+
puts 'ChronicCron#expressions 80' if @debug
|
163
|
+
|
108
164
|
"%s %s,%s * * *" % params[:captures].values_at(1,0,2)
|
109
165
|
end
|
110
166
|
|
@@ -123,6 +179,9 @@ class ChronicCron
|
|
123
179
|
get /(\d{1,2}):?(\d{1,2})([ap]m)?\s+(?:on )?every #{weekday}/i do
|
124
180
|
|raw_hrs, mins, meridiem, wday|
|
125
181
|
hrs = in24hrs(raw_hrs, meridiem)
|
182
|
+
|
183
|
+
puts 'ChronicCron#expressions 90' if @debug
|
184
|
+
|
126
185
|
"%s %s * * %s" % [mins, hrs , wday]
|
127
186
|
end
|
128
187
|
|
@@ -130,6 +189,9 @@ class ChronicCron
|
|
130
189
|
get /(\d{1,2})([ap]m)?\s+(?:on )?every #{weekday}/i do
|
131
190
|
|raw_hrs, meridiem, wday|
|
132
191
|
hrs = in24hrs(raw_hrs, meridiem)
|
192
|
+
|
193
|
+
puts 'ChronicCron#expressions 100' if @debug
|
194
|
+
|
133
195
|
"0 %s * * %s" % [hrs , wday]
|
134
196
|
end
|
135
197
|
|
@@ -145,6 +207,8 @@ class ChronicCron
|
|
145
207
|
get(/every (\d{1,2}) days?/) do |days|
|
146
208
|
|
147
209
|
log.info 'ChronicCron/expressions/get: r130' if log
|
210
|
+
puts 'ChronicCron#expressions 150' if @debug
|
211
|
+
|
148
212
|
"* * */%s * *" % [days]
|
149
213
|
end
|
150
214
|
|
@@ -158,6 +222,9 @@ class ChronicCron
|
|
158
222
|
t
|
159
223
|
end
|
160
224
|
)
|
225
|
+
|
226
|
+
puts 'ChronicCron#expressions 170' if @debug
|
227
|
+
|
161
228
|
"%s %s %s %s *" % TimeToday.between(s1,s2).to_a[1..4]
|
162
229
|
end
|
163
230
|
|
@@ -169,6 +236,8 @@ class ChronicCron
|
|
169
236
|
t
|
170
237
|
end
|
171
238
|
)
|
239
|
+
puts 'ChronicCron#expressions 180' if @debug
|
240
|
+
|
172
241
|
"%s %s %s %s *" % TimeToday.future.to_a[1..4]
|
173
242
|
end
|
174
243
|
|
@@ -193,6 +262,9 @@ class ChronicCron
|
|
193
262
|
raw_time ||= '6:00am'
|
194
263
|
|
195
264
|
minute, hour = Chronic.parse(raw_time).to_a[1,2]
|
265
|
+
|
266
|
+
puts 'ChronicCron#expressions 190' if @debug
|
267
|
+
|
196
268
|
"%s %s %s * %s" % [minute, hour, day_range, wday]
|
197
269
|
|
198
270
|
end
|
@@ -203,6 +275,8 @@ class ChronicCron
|
|
203
275
|
|
204
276
|
hrs = in24hrs(raw_hrs, meridiem)
|
205
277
|
|
278
|
+
puts 'ChronicCron#expressions 200' if @debug
|
279
|
+
|
206
280
|
"0 %s * * %s" % [hrs , Date::DAYNAMES.index(wday.capitalize)]
|
207
281
|
end
|
208
282
|
|
@@ -214,21 +288,41 @@ class ChronicCron
|
|
214
288
|
([ap]m)/i do |day, month, raw_hrs, mins, meridiem|
|
215
289
|
|
216
290
|
now = Chronic.parse(month, now: @now)
|
291
|
+
puts ('now: ' + now.inspect).debug if @debug
|
292
|
+
|
293
|
+
d = last_wdayofmonth(day, now)
|
294
|
+
puts ('d: ' + d.inspect).debug if @debug
|
217
295
|
|
218
|
-
t = Chronic.parse(month, now:
|
219
|
-
Time.local(now > @now ? now.year : now.year.next))
|
220
|
-
t2 = Chronic.parse('last ' + day, now:
|
221
|
-
Time.local(t.year, t.month.next)).to_date
|
222
296
|
hrs = in24hrs(raw_hrs, meridiem)
|
223
297
|
|
224
|
-
|
298
|
+
puts 'ChronicCron#expressions 210' if @debug
|
299
|
+
|
300
|
+
"%s %s %s %s *" % [mins.to_i, hrs, d.day, d.month]
|
225
301
|
end
|
302
|
+
|
303
|
+
# e.g. last sunday of October
|
304
|
+
|
305
|
+
get /last (#{Date::DAYNAMES.join('|')}) (?:of|in) \
|
306
|
+
(#{Date::MONTHNAMES[1..-1].join('|')})/i do |day, month|
|
307
|
+
|
308
|
+
now = Chronic.parse(month, now: @now)
|
309
|
+
|
310
|
+
d = last_wdayofmonth(day, now)
|
311
|
+
|
312
|
+
puts 'ChronicCron#expressions 220' if @debug
|
313
|
+
|
314
|
+
"* * %s %s *" % [d.day, d.month]
|
315
|
+
end
|
316
|
+
|
226
317
|
|
227
318
|
# e.g. every 2nd tuesday at 4:40pm
|
228
319
|
get /every\s+2nd\s+#{weekday}\s+at\s+(\d{1,2})(?::(\d{1,2}))?([ap]m)/i do
|
229
320
|
|wday, raw_hrs, mins, meridiem, |
|
230
321
|
hrs = in24hrs(raw_hrs, meridiem)
|
231
322
|
log.info 'ChronicCron/expressions/get: r230' if log
|
323
|
+
|
324
|
+
puts 'ChronicCron#expressions 220' if @debug
|
325
|
+
|
232
326
|
"%s %s * * %s/2" % [mins.to_i, hrs , wday]
|
233
327
|
end
|
234
328
|
|
@@ -236,6 +330,9 @@ class ChronicCron
|
|
236
330
|
get /every\s+#{weekday}\s+at\s+(\d{1,2}):(\d{1,2})([ap]m)/i do
|
237
331
|
|wday, raw_hrs, mins, meridiem, |
|
238
332
|
hrs = in24hrs(raw_hrs, meridiem)
|
333
|
+
|
334
|
+
puts 'ChronicCron#expressions 230' if @debug
|
335
|
+
|
239
336
|
"%s %s * * %s" % [mins, hrs , wday]
|
240
337
|
end
|
241
338
|
|
@@ -245,6 +342,7 @@ class ChronicCron
|
|
245
342
|
|
246
343
|
t = Chronic.parse(raw_time, :now => @now)
|
247
344
|
log.info 'ChronicCron/expressions/get: r250' if log
|
345
|
+
puts 'ChronicCron#expressions 240' if @debug
|
248
346
|
|
249
347
|
"%s %s * * %s/2" % [t.min,t.hour,t.wday]
|
250
348
|
|
@@ -254,18 +352,50 @@ class ChronicCron
|
|
254
352
|
# e.g. every 2nd monday
|
255
353
|
get /every 2nd #{weekday}/ do |wday|
|
256
354
|
|
355
|
+
puts 'ChronicCron#expressions 250' if @debug
|
257
356
|
"* * * * %s/2" % [wday]
|
258
357
|
|
259
358
|
end
|
359
|
+
|
360
|
+
|
361
|
+
# e.g. every 2 weeks (starting 7th Jan 2020)
|
362
|
+
get /^every (\w+) weeks \(starting ([^\)]+)/ do |interval, raw_date|
|
363
|
+
|
364
|
+
if @debug then
|
365
|
+
puts ('raw_date: ' + raw_date.inspect).debug
|
366
|
+
puts ('now: ' + @now.inspect).debug
|
367
|
+
end
|
368
|
+
|
369
|
+
t = raw_date ? Chronic.parse(raw_date, :now => @now) : @now
|
370
|
+
t += WEEK * interval.to_i until t > @now
|
371
|
+
mins, hrs = t.to_a.values_at(1,2)
|
372
|
+
|
373
|
+
log.info 'ChronicCron/expressions/get: r260' if log
|
374
|
+
if @debug then
|
375
|
+
puts 'ChronicCron#expressions 260'
|
376
|
+
puts ('t: ' + t.inspect).debug
|
377
|
+
end
|
378
|
+
|
379
|
+
"%s %s * * %s/%s" % [mins, hrs, t.wday, interval]
|
380
|
+
end
|
260
381
|
|
261
382
|
# e.g. every 2 weeks at 6am starting from 7th Jan
|
262
383
|
get /^every (\w+) weeks(?:\s+at\s+([^\s]+))?/ do |interval, raw_time|
|
263
384
|
|
385
|
+
if @debug then
|
386
|
+
puts ('raw_time: ' + raw_time.inspect).debug
|
387
|
+
puts ('now: ' + @now.inspect).debug
|
388
|
+
end
|
389
|
+
|
264
390
|
t = raw_time ? Chronic.parse(raw_time, :now => @now) : @now
|
265
391
|
t += WEEK * interval.to_i until t > @now
|
266
392
|
mins, hrs = t.to_a.values_at(1,2)
|
267
393
|
|
268
394
|
log.info 'ChronicCron/expressions/get: r270' if log
|
395
|
+
if @debug then
|
396
|
+
puts 'ChronicCron#expressions 270'
|
397
|
+
puts ('t: ' + t.inspect).debug
|
398
|
+
end
|
269
399
|
|
270
400
|
"%s %s * * %s/%s" % [mins, hrs, t.wday, interval]
|
271
401
|
end
|
@@ -276,6 +406,8 @@ class ChronicCron
|
|
276
406
|
|
277
407
|
t = Chronic.parse(raw_date, :now => @now)
|
278
408
|
mins, hrs = t.to_a.values_at(1,2)
|
409
|
+
puts 'ChronicCron#expressions 280' if @debug
|
410
|
+
|
279
411
|
"%s %s * * %s/%s" % [mins, hrs, t.wday, interval]
|
280
412
|
end
|
281
413
|
|
@@ -284,6 +416,8 @@ class ChronicCron
|
|
284
416
|
|
285
417
|
t = Chronic.parse(raw_date, :now => @now)
|
286
418
|
mins, hrs, day, month, year = t.to_a.values_at(1,2,3,4,5)
|
419
|
+
puts 'ChronicCron#expressions 290' if @debug
|
420
|
+
|
287
421
|
"%s %s %s %s %s/2 %s" % [mins, hrs, day, month, t.wday, year]
|
288
422
|
end
|
289
423
|
|
@@ -292,11 +426,16 @@ class ChronicCron
|
|
292
426
|
|
293
427
|
t = Chronic.parse(raw_date, :now => @now)
|
294
428
|
mins, hrs, day, month, year = t.to_a.values_at(1,2,3,4,5)
|
429
|
+
puts 'ChronicCron#expressions 300' if @debug
|
430
|
+
|
295
431
|
"%s %s %s %s %s %s" % [mins, hrs, day, month, t.wday, year]
|
296
432
|
end
|
297
433
|
|
298
434
|
# e.g. every sunday
|
299
435
|
get /every\s+#{weekday}/ do |wday|
|
436
|
+
|
437
|
+
puts 'ChronicCron#expressions 310' if @debug
|
438
|
+
|
300
439
|
"0 12 * * %s" % wday
|
301
440
|
end
|
302
441
|
|
@@ -304,7 +443,11 @@ class ChronicCron
|
|
304
443
|
get '*' do
|
305
444
|
|
306
445
|
t = Chronic.parse(params[:input], :now => @now)
|
307
|
-
|
446
|
+
puts 'ChronicCron#expressions 330' if @debug
|
447
|
+
puts 't: ' + t.inspect if @debug
|
448
|
+
if t then
|
449
|
+
"%s %s %s %s * %s" % t.to_a.values_at(1,2,3,4,5)
|
450
|
+
end
|
308
451
|
end
|
309
452
|
|
310
453
|
def in24hrs(raw_hrs, meridiem)
|
@@ -317,6 +460,21 @@ class ChronicCron
|
|
317
460
|
end
|
318
461
|
end
|
319
462
|
|
463
|
+
|
320
464
|
alias find_expression run_route
|
321
465
|
|
466
|
+
private
|
467
|
+
|
468
|
+
def last_wdayofmonth(day, now)
|
469
|
+
|
470
|
+
wday = Date::DAYNAMES.map(&:downcase).index(day)
|
471
|
+
|
472
|
+
d2 = Date.today
|
473
|
+
date = Date.civil(now.year, now.month, -1)
|
474
|
+
date -= 1 until date.wday == wday
|
475
|
+
|
476
|
+
return date
|
477
|
+
|
478
|
+
end
|
479
|
+
|
322
480
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: chronic_cron
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.6.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- James Robertson
|
@@ -10,28 +10,32 @@ bindir: bin
|
|
10
10
|
cert_chain:
|
11
11
|
- |
|
12
12
|
-----BEGIN CERTIFICATE-----
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
13
|
+
MIIEXjCCAsagAwIBAgIBATANBgkqhkiG9w0BAQsFADAsMSowKAYDVQQDDCFnZW1t
|
14
|
+
YXN0ZXIvREM9amFtZXNyb2JlcnRzb24vREM9ZXUwHhcNMjEwMjIzMTIwMDUxWhcN
|
15
|
+
MjIwMjIzMTIwMDUxWjAsMSowKAYDVQQDDCFnZW1tYXN0ZXIvREM9amFtZXNyb2Jl
|
16
|
+
cnRzb24vREM9ZXUwggGiMA0GCSqGSIb3DQEBAQUAA4IBjwAwggGKAoIBgQCjirUC
|
17
|
+
k7cKAs7ZfV4qGlKIc5eRA/6/kpqIpAb8+YDEIpS5shCWGrGfwRczcO2imBsEcpBb
|
18
|
+
Lj7T0ol0tw0124awanj9q7E+8eJSPwvNrP891onsuJz9VBclOWHFAk0hNrJNGMYE
|
19
|
+
feeUY+LJO2DL8lVZctqMQsNtlmFq3ISm0fE9U8Uy8vaSd8ocBoZNE+ttRcVR69/R
|
20
|
+
bSZJOa+b2SizTJyXs+ynE0MLrQI0Upk6Ze2Pha3Mkuzn9JN5ylPmF7u+Ylh8NtM8
|
21
|
+
C1s0tWl91nN45k3TJQzJCjtBoobl30Fp+mRc36BttLhVs6DNjgNTSWWISbw6yWun
|
22
|
+
yYi5nb+AgbwZIGUGeuXUpiWgPR9IKYw63LQCYUkLqhMzg91Yb7xZrvSi/CkqzE8I
|
23
|
+
ApelfP+IlFac/Sue0BL+YOqCgT1UMY7S73jjInppGYQh/FiTElfyEKZallSWV5BI
|
24
|
+
liIktwj2xfFTY+gMTVkOOdPfxluHYfY26zvgy2Amgtb+quzrvYK2n0wndn8CAwEA
|
25
|
+
AaOBijCBhzAJBgNVHRMEAjAAMAsGA1UdDwQEAwIEsDAdBgNVHQ4EFgQUYicTvE9t
|
26
|
+
tQvwBoKkP+W51JemQaUwJgYDVR0RBB8wHYEbZ2VtbWFzdGVyQGphbWVzcm9iZXJ0
|
27
|
+
c29uLmV1MCYGA1UdEgQfMB2BG2dlbW1hc3RlckBqYW1lc3JvYmVydHNvbi5ldTAN
|
28
|
+
BgkqhkiG9w0BAQsFAAOCAYEAdbeP6iericAYpjgKrroRdFU+IXPXMwF48IoESx00
|
29
|
+
Wa4bqUsy+UnXe8mCP8VA2WK/4QJJKljU2hrS/9FumREOnwF4vPYnLVNJ8nITIpTh
|
30
|
+
1DSDinlg/hhaW/0cUwdJrFttoFqfe4EC32VgZkFlXPCD90ZX3pda6n/I4uvUVujb
|
31
|
+
LZgwewGILIRZ2UfV4cPq9gVJRMuL0Dz/9C5t0jjrXuQpScSKyZ814bBv4mvh1xWm
|
32
|
+
WEnkNkO9YKsS1PqWy3tVYd2hgfTGXRJk/THYT2Qyj07z2ksG8FzsjhV7VeKZmkBf
|
33
|
+
ow4kIK/ches8x97aJ5zbrHwK+he3lLFThcvjAJ0GbwYZrCuDaXIxBj0k+R4lWUpp
|
34
|
+
G6VQycIWs0Nb6F5NLLSO4k/mtOduJhmyPWkL3R/KMChXk0hu8xM2Orw1CpipzAX+
|
35
|
+
Yot8KuDDSCrW7txuQr8nBdP8TtGBceStvkqoqSGvzsppfoAzykAkc8zujoN1s8d2
|
36
|
+
ioSUG4tmSnO/l+mykryWcbFA
|
33
37
|
-----END CERTIFICATE-----
|
34
|
-
date:
|
38
|
+
date: 2021-02-23 00:00:00.000000000 Z
|
35
39
|
dependencies:
|
36
40
|
- !ruby/object:Gem::Dependency
|
37
41
|
name: app-routes
|
@@ -57,22 +61,22 @@ dependencies:
|
|
57
61
|
name: cron_format
|
58
62
|
requirement: !ruby/object:Gem::Requirement
|
59
63
|
requirements:
|
60
|
-
- - "~>"
|
61
|
-
- !ruby/object:Gem::Version
|
62
|
-
version: '0.3'
|
63
64
|
- - ">="
|
64
65
|
- !ruby/object:Gem::Version
|
65
|
-
version: 0.
|
66
|
+
version: 0.6.0
|
67
|
+
- - "~>"
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: '0.6'
|
66
70
|
type: :runtime
|
67
71
|
prerelease: false
|
68
72
|
version_requirements: !ruby/object:Gem::Requirement
|
69
73
|
requirements:
|
70
|
-
- - "~>"
|
71
|
-
- !ruby/object:Gem::Version
|
72
|
-
version: '0.3'
|
73
74
|
- - ">="
|
74
75
|
- !ruby/object:Gem::Version
|
75
|
-
version: 0.
|
76
|
+
version: 0.6.0
|
77
|
+
- - "~>"
|
78
|
+
- !ruby/object:Gem::Version
|
79
|
+
version: '0.6'
|
76
80
|
- !ruby/object:Gem::Dependency
|
77
81
|
name: chronic
|
78
82
|
requirement: !ruby/object:Gem::Requirement
|
@@ -97,22 +101,22 @@ dependencies:
|
|
97
101
|
name: timetoday
|
98
102
|
requirement: !ruby/object:Gem::Requirement
|
99
103
|
requirements:
|
100
|
-
- - "~>"
|
101
|
-
- !ruby/object:Gem::Version
|
102
|
-
version: '0.2'
|
103
104
|
- - ">="
|
104
105
|
- !ruby/object:Gem::Version
|
105
106
|
version: 0.2.0
|
107
|
+
- - "~>"
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
version: '0.2'
|
106
110
|
type: :runtime
|
107
111
|
prerelease: false
|
108
112
|
version_requirements: !ruby/object:Gem::Requirement
|
109
113
|
requirements:
|
110
|
-
- - "~>"
|
111
|
-
- !ruby/object:Gem::Version
|
112
|
-
version: '0.2'
|
113
114
|
- - ">="
|
114
115
|
- !ruby/object:Gem::Version
|
115
116
|
version: 0.2.0
|
117
|
+
- - "~>"
|
118
|
+
- !ruby/object:Gem::Version
|
119
|
+
version: '0.2'
|
116
120
|
description:
|
117
121
|
email: james@jamesrobertson.eu
|
118
122
|
executables: []
|
@@ -140,9 +144,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
140
144
|
version: '0'
|
141
145
|
requirements: []
|
142
146
|
rubyforge_project:
|
143
|
-
rubygems_version: 2.
|
147
|
+
rubygems_version: 2.7.10
|
144
148
|
signing_key:
|
145
149
|
specification_version: 4
|
146
|
-
summary: Converts a human-readable time (e.g. 10:15 daily)
|
150
|
+
summary: Converts a human-readable time (e.g. 10:15 daily) into a cron format (e,g,
|
147
151
|
15 10 * * *)
|
148
152
|
test_files: []
|
metadata.gz.sig
CHANGED
Binary file
|