chronic_cron 0.3.6 → 0.6.1
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 +0 -0
- data/lib/chronic_cron.rb +187 -18
- metadata +42 -39
- 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: a592752d6002e699c468d42d5bb44557ae37dd07269cbb9a242aeaaaa3705e7c
|
4
|
+
data.tar.gz: d65322901ada5081ad53d3a6bffc407dc5195142069766d05e2ff62a540c75b6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8c270f38875374250ab0281be21729fd21f3fc5d468a08989537cd32f1eb3575b5ca5e9bd7459da297b6995729456ff06fb8fd756dd19f662ededf3dedc50b66
|
7
|
+
data.tar.gz: debbbca0aed6c3edeeed46d071273c9bacabdb9ba191a79fea1d4b62ae36b1c80e1267ff6b1ba8062703de9004adafbcb6addb351494acb5fb0c8064ee0b2c8b
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data.tar.gz.sig
CHANGED
Binary file
|
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,30 +73,45 @@ class ChronicCron
|
|
45
73
|
def to_time()
|
46
74
|
@cf.to_time
|
47
75
|
end
|
76
|
+
|
77
|
+
def valid?
|
78
|
+
!@cf.nil?
|
79
|
+
end
|
48
80
|
|
49
81
|
protected
|
50
82
|
|
51
83
|
def expressions(params)
|
84
|
+
|
85
|
+
log = @log
|
52
86
|
|
53
87
|
r = '[0-9\*,\?\/\-]+'
|
54
88
|
daily = '(?:every day|daily)'
|
55
89
|
|
56
90
|
# e.g. 00 5 15 * *
|
57
91
|
get /(#{r}\s+#{r}\s+#{r}\s#{r}\s#{r})(\s#{r})?/ do
|
92
|
+
|
93
|
+
puts 'ChronicCron#expressions 10' if @debug
|
94
|
+
|
58
95
|
"%s%s" % params[:captures]
|
59
96
|
end
|
60
97
|
|
61
98
|
# e.g. 9:00-18:00 every day
|
62
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
|
+
|
63
103
|
"%s %s-%s * * *" % params[:captures].values_at(1,0,2)
|
64
104
|
end
|
65
105
|
|
66
106
|
# e.g. every 30mins from 8:00am until 8:00pm mon-fri
|
67
|
-
get /every\s+(\d+)\s*mins\s+from\s+(\d{1,2}):(\d{1,2})([ap]m)(?:\s+until\s+|\s*-\s*)(\d{1,2}):\d{1,2}([ap]m)\s+(\w+\-\w+)/ do
|
107
|
+
get /every\s+(\d+)\s*mins\s+from\s+(\d{1,2}):(\d{1,2})([ap]m)(?:\s+until\s+|\s*-\s*)(\d{1,2}):\d{1,2}([ap]m)\s+(\w+\-\w+)/x do
|
68
108
|
|interval_mins, r_hrs1, mins1, meridiem1, r_hrs2, meridiem2, wdays|
|
69
109
|
|
70
110
|
hrs1 = meridiem1 == 'pm' ? r_hrs1.to_i + 12 : r_hrs1
|
71
111
|
hrs2 = meridiem2 == 'pm' ? r_hrs2.to_i + 12 : r_hrs2
|
112
|
+
|
113
|
+
puts 'ChronicCron#expressions 30' if @debug
|
114
|
+
|
72
115
|
"%s/%s %s-%s * * %s" % [mins1.to_i, interval_mins, hrs1, hrs2, wdays]
|
73
116
|
end
|
74
117
|
|
@@ -77,6 +120,9 @@ class ChronicCron
|
|
77
120
|
|interval_mins, r_hrs1, mins1, meridiem1, r_hrs2, meridiem2|
|
78
121
|
hrs1 = meridiem1 == 'pm' ? r_hrs1.to_i + 12 : r_hrs1
|
79
122
|
hrs2 = meridiem2 == 'pm' ? r_hrs2.to_i + 12 : r_hrs2
|
123
|
+
|
124
|
+
puts 'ChronicCron#expressions 40' if @debug
|
125
|
+
|
80
126
|
"%s/%s %s-%s * * *" % [mins1.to_i, interval_mins, hrs1, hrs2]
|
81
127
|
end
|
82
128
|
|
@@ -85,12 +131,18 @@ class ChronicCron
|
|
85
131
|
|r_hrs1, mins1, meridiem1, r_hrs2, meridiem2|
|
86
132
|
hrs1 = meridiem1 == 'pm' ? r_hrs1.to_i + 12 : r_hrs1
|
87
133
|
hrs2 = meridiem2 == 'pm' ? r_hrs2.to_i + 12 : r_hrs2
|
134
|
+
|
135
|
+
puts 'ChronicCron#expressions 50' if @debug
|
136
|
+
|
88
137
|
"%s %s-%s * * *" % [mins1.to_i, hrs1, hrs2]
|
89
138
|
end
|
90
139
|
|
91
140
|
# e.g. 10:15am every day
|
92
141
|
get /(\d{1,2}):?(\d{1,2})([ap]m)?\s+#{daily}/ do |raw_hrs, mins, meridiem|
|
93
142
|
hrs = in24hrs(raw_hrs, meridiem)
|
143
|
+
|
144
|
+
puts 'ChronicCron#expressions 60' if @debug
|
145
|
+
|
94
146
|
"%s %s * * *" % [mins.to_i, hrs]
|
95
147
|
end
|
96
148
|
|
@@ -98,11 +150,17 @@ class ChronicCron
|
|
98
150
|
get /(\d{1,2}):?(\d{1,2})([ap]m)?\s+(\w+) to (\w+)/ do
|
99
151
|
|raw_hrs, mins, meridiem, wday1, wday2|
|
100
152
|
hrs = in24hrs(raw_hrs, meridiem)
|
153
|
+
|
154
|
+
puts 'ChronicCron#expressions 70' if @debug
|
155
|
+
|
101
156
|
"%s %s * * %s-%s" % [mins.to_i, hrs , wday1, wday2]
|
102
157
|
end
|
103
158
|
|
104
159
|
# e.g. at 11:00 and 16:00 on every day
|
105
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
|
+
|
106
164
|
"%s %s,%s * * *" % params[:captures].values_at(1,0,2)
|
107
165
|
end
|
108
166
|
|
@@ -121,6 +179,9 @@ class ChronicCron
|
|
121
179
|
get /(\d{1,2}):?(\d{1,2})([ap]m)?\s+(?:on )?every #{weekday}/i do
|
122
180
|
|raw_hrs, mins, meridiem, wday|
|
123
181
|
hrs = in24hrs(raw_hrs, meridiem)
|
182
|
+
|
183
|
+
puts 'ChronicCron#expressions 90' if @debug
|
184
|
+
|
124
185
|
"%s %s * * %s" % [mins, hrs , wday]
|
125
186
|
end
|
126
187
|
|
@@ -128,6 +189,9 @@ class ChronicCron
|
|
128
189
|
get /(\d{1,2})([ap]m)?\s+(?:on )?every #{weekday}/i do
|
129
190
|
|raw_hrs, meridiem, wday|
|
130
191
|
hrs = in24hrs(raw_hrs, meridiem)
|
192
|
+
|
193
|
+
puts 'ChronicCron#expressions 100' if @debug
|
194
|
+
|
131
195
|
"0 %s * * %s" % [hrs , wday]
|
132
196
|
end
|
133
197
|
|
@@ -140,7 +204,14 @@ class ChronicCron
|
|
140
204
|
get(/every hour/){ "0 * * * *"}
|
141
205
|
|
142
206
|
# e.g. every 2 days
|
143
|
-
get(/every (\d{1,2}) days?/)
|
207
|
+
get(/every (\d{1,2}) days?/) do |days|
|
208
|
+
|
209
|
+
log.info 'ChronicCron/expressions/get: r130' if log
|
210
|
+
puts 'ChronicCron#expressions 150' if @debug
|
211
|
+
|
212
|
+
"* * */%s * *" % [days]
|
213
|
+
end
|
214
|
+
|
144
215
|
get(/#{daily}/){ "0 0 * * *"}
|
145
216
|
|
146
217
|
get /(?:any\s?time)?(?: today)? between (\S+) and (\S+)/ do |s1, s2|
|
@@ -151,6 +222,9 @@ class ChronicCron
|
|
151
222
|
t
|
152
223
|
end
|
153
224
|
)
|
225
|
+
|
226
|
+
puts 'ChronicCron#expressions 170' if @debug
|
227
|
+
|
154
228
|
"%s %s %s %s *" % TimeToday.between(s1,s2).to_a[1..4]
|
155
229
|
end
|
156
230
|
|
@@ -162,6 +236,8 @@ class ChronicCron
|
|
162
236
|
t
|
163
237
|
end
|
164
238
|
)
|
239
|
+
puts 'ChronicCron#expressions 180' if @debug
|
240
|
+
|
165
241
|
"%s %s %s %s *" % TimeToday.future.to_a[1..4]
|
166
242
|
end
|
167
243
|
|
@@ -186,6 +262,9 @@ class ChronicCron
|
|
186
262
|
raw_time ||= '6:00am'
|
187
263
|
|
188
264
|
minute, hour = Chronic.parse(raw_time).to_a[1,2]
|
265
|
+
|
266
|
+
puts 'ChronicCron#expressions 190' if @debug
|
267
|
+
|
189
268
|
"%s %s %s * %s" % [minute, hour, day_range, wday]
|
190
269
|
|
191
270
|
end
|
@@ -196,6 +275,8 @@ class ChronicCron
|
|
196
275
|
|
197
276
|
hrs = in24hrs(raw_hrs, meridiem)
|
198
277
|
|
278
|
+
puts 'ChronicCron#expressions 200' if @debug
|
279
|
+
|
199
280
|
"0 %s * * %s" % [hrs , Date::DAYNAMES.index(wday.capitalize)]
|
200
281
|
end
|
201
282
|
|
@@ -207,20 +288,41 @@ class ChronicCron
|
|
207
288
|
([ap]m)/i do |day, month, raw_hrs, mins, meridiem|
|
208
289
|
|
209
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
|
210
295
|
|
211
|
-
t = Chronic.parse(month, now:
|
212
|
-
Time.local(now > @now ? now.year : now.year.next))
|
213
|
-
t2 = Chronic.parse('last ' + day, now:
|
214
|
-
Time.local(t.year, t.month.next)).to_date
|
215
296
|
hrs = in24hrs(raw_hrs, meridiem)
|
216
297
|
|
217
|
-
|
298
|
+
puts 'ChronicCron#expressions 210' if @debug
|
299
|
+
|
300
|
+
"%s %s %s %s *" % [mins.to_i, hrs, d.day, d.month]
|
218
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
|
+
|
219
317
|
|
220
318
|
# e.g. every 2nd tuesday at 4:40pm
|
221
319
|
get /every\s+2nd\s+#{weekday}\s+at\s+(\d{1,2})(?::(\d{1,2}))?([ap]m)/i do
|
222
320
|
|wday, raw_hrs, mins, meridiem, |
|
223
321
|
hrs = in24hrs(raw_hrs, meridiem)
|
322
|
+
log.info 'ChronicCron/expressions/get: r230' if log
|
323
|
+
|
324
|
+
puts 'ChronicCron#expressions 220' if @debug
|
325
|
+
|
224
326
|
"%s %s * * %s/2" % [mins.to_i, hrs , wday]
|
225
327
|
end
|
226
328
|
|
@@ -228,6 +330,9 @@ class ChronicCron
|
|
228
330
|
get /every\s+#{weekday}\s+at\s+(\d{1,2}):(\d{1,2})([ap]m)/i do
|
229
331
|
|wday, raw_hrs, mins, meridiem, |
|
230
332
|
hrs = in24hrs(raw_hrs, meridiem)
|
333
|
+
|
334
|
+
puts 'ChronicCron#expressions 230' if @debug
|
335
|
+
|
231
336
|
"%s %s * * %s" % [mins, hrs , wday]
|
232
337
|
end
|
233
338
|
|
@@ -236,7 +341,9 @@ class ChronicCron
|
|
236
341
|
get /every 2nd week\s+at\s+([^\s]+)/ do |raw_time|
|
237
342
|
|
238
343
|
t = Chronic.parse(raw_time, :now => @now)
|
239
|
-
|
344
|
+
log.info 'ChronicCron/expressions/get: r250' if log
|
345
|
+
puts 'ChronicCron#expressions 240' if @debug
|
346
|
+
|
240
347
|
"%s %s * * %s/2" % [t.min,t.hour,t.wday]
|
241
348
|
|
242
349
|
end
|
@@ -245,16 +352,50 @@ class ChronicCron
|
|
245
352
|
# e.g. every 2nd monday
|
246
353
|
get /every 2nd #{weekday}/ do |wday|
|
247
354
|
|
355
|
+
puts 'ChronicCron#expressions 250' if @debug
|
248
356
|
"* * * * %s/2" % [wday]
|
249
357
|
|
250
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
|
251
381
|
|
252
382
|
# e.g. every 2 weeks at 6am starting from 7th Jan
|
253
|
-
get
|
383
|
+
get /^every (\w+) weeks(?:\s+at\s+([^\s]+))?/ do |interval, raw_time|
|
254
384
|
|
255
|
-
|
385
|
+
if @debug then
|
386
|
+
puts ('raw_time: ' + raw_time.inspect).debug
|
387
|
+
puts ('now: ' + @now.inspect).debug
|
388
|
+
end
|
389
|
+
|
390
|
+
t = raw_time ? Chronic.parse(raw_time, :now => @now) : @now
|
256
391
|
t += WEEK * interval.to_i until t > @now
|
257
392
|
mins, hrs = t.to_a.values_at(1,2)
|
393
|
+
|
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
|
258
399
|
|
259
400
|
"%s %s * * %s/%s" % [mins, hrs, t.wday, interval]
|
260
401
|
end
|
@@ -265,6 +406,8 @@ class ChronicCron
|
|
265
406
|
|
266
407
|
t = Chronic.parse(raw_date, :now => @now)
|
267
408
|
mins, hrs = t.to_a.values_at(1,2)
|
409
|
+
puts 'ChronicCron#expressions 280' if @debug
|
410
|
+
|
268
411
|
"%s %s * * %s/%s" % [mins, hrs, t.wday, interval]
|
269
412
|
end
|
270
413
|
|
@@ -273,6 +416,8 @@ class ChronicCron
|
|
273
416
|
|
274
417
|
t = Chronic.parse(raw_date, :now => @now)
|
275
418
|
mins, hrs, day, month, year = t.to_a.values_at(1,2,3,4,5)
|
419
|
+
puts 'ChronicCron#expressions 290' if @debug
|
420
|
+
|
276
421
|
"%s %s %s %s %s/2 %s" % [mins, hrs, day, month, t.wday, year]
|
277
422
|
end
|
278
423
|
|
@@ -281,11 +426,16 @@ class ChronicCron
|
|
281
426
|
|
282
427
|
t = Chronic.parse(raw_date, :now => @now)
|
283
428
|
mins, hrs, day, month, year = t.to_a.values_at(1,2,3,4,5)
|
429
|
+
puts 'ChronicCron#expressions 300' if @debug
|
430
|
+
|
284
431
|
"%s %s %s %s %s %s" % [mins, hrs, day, month, t.wday, year]
|
285
432
|
end
|
286
433
|
|
287
434
|
# e.g. every sunday
|
288
435
|
get /every\s+#{weekday}/ do |wday|
|
436
|
+
|
437
|
+
puts 'ChronicCron#expressions 310' if @debug
|
438
|
+
|
289
439
|
"0 12 * * %s" % wday
|
290
440
|
end
|
291
441
|
|
@@ -293,7 +443,11 @@ class ChronicCron
|
|
293
443
|
get '*' do
|
294
444
|
|
295
445
|
t = Chronic.parse(params[:input], :now => @now)
|
296
|
-
|
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
|
297
451
|
end
|
298
452
|
|
299
453
|
def in24hrs(raw_hrs, meridiem)
|
@@ -306,6 +460,21 @@ class ChronicCron
|
|
306
460
|
end
|
307
461
|
end
|
308
462
|
|
463
|
+
|
309
464
|
alias find_expression run_route
|
310
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
|
+
|
311
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.1
|
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
|
+
YXN0ZXIvREM9amFtZXNyb2JlcnRzb24vREM9ZXUwHhcNMjAxMTA2MjI1NDExWhcN
|
15
|
+
MjExMTA2MjI1NDExWjAsMSowKAYDVQQDDCFnZW1tYXN0ZXIvREM9amFtZXNyb2Jl
|
16
|
+
cnRzb24vREM9ZXUwggGiMA0GCSqGSIb3DQEBAQUAA4IBjwAwggGKAoIBgQDOybkb
|
17
|
+
e05urfbOlnahAdXyF2BABMxwCz8Z07BgC78nOYER2ONb8Wt1o4wIoZnfzsrUK5Ff
|
18
|
+
bCNY0bAsdp9DbB4S/i8L0T5Bs2Jr/b2xk/y9igE+lA2w6Q2gXnip2p/GjRJcjdAP
|
19
|
+
Xm2ZV8QS+EMl2h23bte9FtX/mQuH+E/zdCn9wtvyhxHDox8tLYnanjhv6tvMBDPE
|
20
|
+
gb5wgXHudArg8t+7zA29iiQPRJ6qwnDLbRdBodC/P5CwCK40EIPmhshOznaGI57V
|
21
|
+
jYg8sunmT2Q2etsBCoV1d0PoNJRzDivkL6s9imRrONJMP9bt1k+qLdtrrCz1hFj1
|
22
|
+
NZJWIvRNmnOSBecETfycIzpN5r89uTDl5qXeFXPBPk+aUpeBFB1Ntic2pcbJvAQb
|
23
|
+
nIL4TL6Xe9Md+q/uA0ufnHRbKeRQl7HHUE0j3EzHuwHgEn1FuJhVPifDl+2qtB4j
|
24
|
+
ps38QmZLa+UFSTuArU4ur24zg+J4XTOkCNR1bPYQJjuGO9Oyj0GI2QyqP6UCAwEA
|
25
|
+
AaOBijCBhzAJBgNVHRMEAjAAMAsGA1UdDwQEAwIEsDAdBgNVHQ4EFgQU9eCFvE24
|
26
|
+
Mq+pXeKKzmUwTNmn62wwJgYDVR0RBB8wHYEbZ2VtbWFzdGVyQGphbWVzcm9iZXJ0
|
27
|
+
c29uLmV1MCYGA1UdEgQfMB2BG2dlbW1hc3RlckBqYW1lc3JvYmVydHNvbi5ldTAN
|
28
|
+
BgkqhkiG9w0BAQsFAAOCAYEAaUlfcuP6kAan4TbMfsLwTtpKDRgmPvX0xPCzZK9Y
|
29
|
+
C47NhmUz3j4M1Tfbz6R6PUXYS50KtZ83rk9lTbiSRJ3ZbR/Q+I8WCci1342SkMSX
|
30
|
+
R3M0TPq2gK5OB0Dv/oyYhzR2iXChWD88KH74NTFHPHBoJHtlHytBUYpMG/wtbKr3
|
31
|
+
ZLF/ga/SF8CuiJdoA160i0cn1Rb4rEmmkP9y/J5jO43CF/Zs6aDjDM8bYqslntX5
|
32
|
+
Sl0J29FpvFrEiRBj3k/NEJWeArhmqaDW/7kA4CBbWDB7lpmV98IiJ8HrEDQOn7lt
|
33
|
+
VdN1c4pVVB5CiS9JlmpbB1bALwq7NcM9MGIwGjjdBDOe2i2XjgWDCjfNrT7iqjUN
|
34
|
+
Gs7jYeqFD5zboPtQtb3SiWnAbJgeGF9ojFFCO2qUwZh1PuZbCEnC80ZbM7AmAxJ7
|
35
|
+
5/R97FUsc8ka/0HRADqJU3kQxMvTx/YlBFjaiBqJ3XO/3ZBHwLPyIXVKEmbNT5Wz
|
36
|
+
p1yxSFG+W4RfwEZu4aKdGsuB
|
33
37
|
-----END CERTIFICATE-----
|
34
|
-
date:
|
38
|
+
date: 2020-11-06 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: []
|
@@ -139,10 +143,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
139
143
|
- !ruby/object:Gem::Version
|
140
144
|
version: '0'
|
141
145
|
requirements: []
|
142
|
-
|
143
|
-
rubygems_version: 2.6.8
|
146
|
+
rubygems_version: 3.0.3
|
144
147
|
signing_key:
|
145
148
|
specification_version: 4
|
146
|
-
summary: Converts a human-readable time (e.g. 10:15 daily)
|
149
|
+
summary: Converts a human-readable time (e.g. 10:15 daily) into a cron format (e,g,
|
147
150
|
15 10 * * *)
|
148
151
|
test_files: []
|
metadata.gz.sig
CHANGED
Binary file
|