dynarex_cron 0.9.4 → 0.9.5
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/lib/dynarex_cron.rb +37 -34
- data.tar.gz.sig +0 -0
- metadata +36 -32
- metadata.gz.sig +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: b3a65ddcd1590f382710f6f67cb50ac1143fed13c8af76dde93c76fce3a99e24
|
4
|
+
data.tar.gz: f2c111a396fc622e35cdbcd18007dc03df688a705813be5e25338bc6e55655d3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e782e76c62832d6cb67d090e1c074e368d1f5ffde353b53f20a7d7f4f14a029d0f287cb2da7a4b916da9a4f517eba1d616a9f05a4b95698e70b60dc8e9751a4b
|
7
|
+
data.tar.gz: cfece8f878d52864670ef0751b8ca6b3f1eeab8b256c63f243bf1497e073b76f7720ff21c2bcb14c6c42ef1852e610ff0e3d38fc88409b8405dbfc35cc545bba
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data/lib/dynarex_cron.rb
CHANGED
@@ -5,47 +5,49 @@
|
|
5
5
|
require 'dynarex'
|
6
6
|
require 'chronic_cron'
|
7
7
|
require 'sps-pub'
|
8
|
+
require 'rxfreader'
|
8
9
|
|
9
10
|
|
10
11
|
DF = "%Y-%m-%d %H:%M"
|
11
12
|
|
12
13
|
class DynarexCron
|
14
|
+
using ColouredText
|
13
15
|
|
14
16
|
# options: e.g. sps_address: 'sps', sps_port: '59000'
|
15
17
|
#
|
16
18
|
def initialize(dxfile=nil, sps_address: 'sps', sps_port: '59000', \
|
17
|
-
log: nil, time_offset: 0, logtopic: 'DynarexCron')
|
18
|
-
|
19
|
+
log: nil, time_offset: 0, logtopic: 'DynarexCron', debug: false)
|
20
|
+
|
19
21
|
|
20
22
|
@dxfile, @sps_address, @sps_port, @log = dxfile, sps_address, sps_port, log
|
21
23
|
|
22
|
-
# time_offset: used for testing a cron entry without having to change
|
24
|
+
# time_offset: used for testing a cron entry without having to change
|
23
25
|
# the time of each entry
|
24
26
|
@time_offset = time_offset.to_i
|
25
|
-
|
27
|
+
|
26
28
|
@cron_entries = []
|
27
29
|
@logtopic = logtopic
|
28
|
-
|
30
|
+
|
29
31
|
|
30
32
|
if @dxfile then
|
31
33
|
|
32
34
|
dynarex,_ = load_doc dxfile
|
33
35
|
load_entries(dynarex)
|
34
|
-
end
|
36
|
+
end
|
35
37
|
|
36
38
|
@pub = SPSPub.new address: sps_address, port: sps_port
|
37
|
-
|
39
|
+
|
38
40
|
end
|
39
41
|
|
40
42
|
def start
|
41
43
|
|
42
44
|
@running = true
|
43
|
-
|
45
|
+
|
44
46
|
if @log then
|
45
47
|
@log.info @logtopic + '/start: Time.now: ' \
|
46
48
|
+ (Time.now + @time_offset).strftime(DF)
|
47
49
|
end
|
48
|
-
|
50
|
+
|
49
51
|
|
50
52
|
sleep 1 until Time.now.sec == 0
|
51
53
|
|
@@ -56,17 +58,17 @@ class DynarexCron
|
|
56
58
|
|
57
59
|
if @dxfile.is_a? String then
|
58
60
|
|
59
|
-
# What happens if the @dxfile is a URL and the web server is
|
61
|
+
# What happens if the @dxfile is a URL and the web server is
|
60
62
|
# temporarily unavailable? i.e. 503 Service Temporarily Unavailable
|
61
63
|
begin
|
62
64
|
|
63
65
|
dx, buffer = load_doc(@dxfile)
|
64
|
-
load_entries dx if @buffer != buffer
|
66
|
+
load_entries dx if @buffer != buffer
|
65
67
|
@buffer = buffer
|
66
|
-
|
68
|
+
|
67
69
|
rescue
|
68
|
-
@log.debug @logtopic + '/start: warning: ' + ($!).inspect
|
69
|
-
end
|
70
|
+
@log.debug @logtopic + '/start: warning: ' + ($!).inspect if @log
|
71
|
+
end
|
70
72
|
|
71
73
|
end
|
72
74
|
|
@@ -76,11 +78,11 @@ class DynarexCron
|
|
76
78
|
end
|
77
79
|
|
78
80
|
end
|
79
|
-
|
81
|
+
|
80
82
|
def stop()
|
81
83
|
@running = false
|
82
84
|
end
|
83
|
-
|
85
|
+
|
84
86
|
private
|
85
87
|
|
86
88
|
def load_doc(dynarex_file)
|
@@ -88,42 +90,43 @@ class DynarexCron
|
|
88
90
|
if dynarex_file.is_a?(Dynarex) then
|
89
91
|
dynarex_file
|
90
92
|
else
|
91
|
-
|
92
|
-
buffer, _ =
|
93
|
+
|
94
|
+
buffer, _ = RXFReader.read(dynarex_file)
|
93
95
|
dx = buffer =~ /<\?dynarex/ ? Dynarex.new.import(buffer) : \
|
94
96
|
Dynarex.new(buffer)
|
95
|
-
|
97
|
+
|
96
98
|
[dx, buffer]
|
97
99
|
end
|
98
|
-
|
100
|
+
|
99
101
|
end
|
100
102
|
|
101
103
|
def load_entries(dx)
|
102
|
-
|
104
|
+
|
103
105
|
if dx.summary[:sps_address] then
|
104
106
|
@sps_address, @sps_port = dx.summary[:sps_address]\
|
105
107
|
.split(':',2) << '59000'
|
106
108
|
end
|
107
|
-
|
109
|
+
|
108
110
|
@cron_entries = dx.to_a
|
109
|
-
@cron_entries.each do |h|
|
111
|
+
@cron_entries.each do |h|
|
110
112
|
h[:cron] = ChronicCron.new(h[:expression], Time.now + @time_offset)
|
111
113
|
end
|
112
|
-
end
|
113
|
-
|
114
|
+
end
|
115
|
+
|
114
116
|
|
115
117
|
def iterate(cron_entries)
|
116
|
-
|
118
|
+
|
119
|
+
puts ('h:' + h.inspect).debug if @debug
|
117
120
|
cron_entries.each do |h|
|
118
|
-
|
121
|
+
|
119
122
|
datetime = (Time.now + @time_offset).strftime(DF)
|
120
|
-
|
123
|
+
|
121
124
|
if @log then
|
122
125
|
@log.info @logtopic + '/iterate: datetime: ' + datetime
|
123
126
|
@log.info @logtopic + '/iterate: cron.to_time: ' \
|
124
127
|
+ h[:cron].to_time.strftime(DF)
|
125
128
|
end
|
126
|
-
|
129
|
+
|
127
130
|
if h[:cron].to_time.strftime(DF) == datetime then
|
128
131
|
|
129
132
|
begin
|
@@ -131,23 +134,23 @@ class DynarexCron
|
|
131
134
|
if h[:fqm].empty? and @log then
|
132
135
|
@log.debug @logtopic + '/iterate: no h[:fqw] found ' + h.inspect
|
133
136
|
end
|
134
|
-
|
137
|
+
|
135
138
|
msg = h[:fqm].gsub('!Time',Time.now.strftime("%H:%M"))
|
136
139
|
|
137
140
|
@pub.notice msg
|
138
141
|
|
139
142
|
rescue
|
140
|
-
|
143
|
+
|
141
144
|
if @log then
|
142
145
|
@log.debug @logtopic + '/iterate: cron: ' + h[:cron].inspect
|
143
146
|
@log.debug @logtopic + '/iterate: h: ' + h.inspect + ' : ' \
|
144
147
|
+ ($!).inspect
|
145
148
|
end
|
146
|
-
|
149
|
+
|
147
150
|
end
|
148
|
-
|
151
|
+
|
149
152
|
h[:cron].next # advances the time
|
150
|
-
|
153
|
+
|
151
154
|
end
|
152
155
|
|
153
156
|
end
|
data.tar.gz.sig
CHANGED
Binary file
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dynarex_cron
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.9.
|
4
|
+
version: 0.9.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- James Robertson
|
@@ -10,27 +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
|
-
|
13
|
+
MIIEXjCCAsagAwIBAgIBATANBgkqhkiG9w0BAQsFADAsMSowKAYDVQQDDCFnZW1t
|
14
|
+
YXN0ZXIvREM9amFtZXNyb2JlcnRzb24vREM9ZXUwHhcNMjIwMjIzMTkxNzU1WhcN
|
15
|
+
MjMwMjIzMTkxNzU1WjAsMSowKAYDVQQDDCFnZW1tYXN0ZXIvREM9amFtZXNyb2Jl
|
16
|
+
cnRzb24vREM9ZXUwggGiMA0GCSqGSIb3DQEBAQUAA4IBjwAwggGKAoIBgQDFXfJg
|
17
|
+
P6tLaBWbkPH2MDIJpCzva3ezz/wf91uGqXJ4BCfFINnlKgttCDvQ47KO7UYVJdJq
|
18
|
+
xQxUmwJpMb/krNZEycr+ZDnK/oFecdHvp3rZi7Bg27kRG7JhdcI3J8/McRhkdikw
|
19
|
+
PGapgqcWi9RMHoIFls7J5lWJcTcjDBp0X0XiE0R+IQdEfMKjyAejKZ8U47H58mfV
|
20
|
+
27UXGFP5J4VXxn3sg8KrAZ7SIayqrEJ6097bfLN6MrwMRBfdM/OTVtovdokLW9bV
|
21
|
+
oiqR1Q+DE1MTTI+V3bbRmk+Ld9uwsSCJxINwBrWGbqxJ4h8gB8nkCzLzoD9phHzY
|
22
|
+
9gjpfSq8a1F1XO4YmggedvHBxMYLBF/4vbbIKD8RPtU/4MSoP1CO+r9U82tW8/0U
|
23
|
+
zLIoYRxxOIOX7k5s6ZLfxmdYv3IYmNZk/kBzdgSc2Rmeo8OdyFJmMVZpp05yDo/x
|
24
|
+
2mD+QgzxGywbHTPAISBoUaZ/IYb/GK4oFq4QWVXS0SnTxvrnxgX5U/6W/ZUCAwEA
|
25
|
+
AaOBijCBhzAJBgNVHRMEAjAAMAsGA1UdDwQEAwIEsDAdBgNVHQ4EFgQUzEO3sAWo
|
26
|
+
at0zmR9LEgYy1sIuvGgwJgYDVR0RBB8wHYEbZ2VtbWFzdGVyQGphbWVzcm9iZXJ0
|
27
|
+
c29uLmV1MCYGA1UdEgQfMB2BG2dlbW1hc3RlckBqYW1lc3JvYmVydHNvbi5ldTAN
|
28
|
+
BgkqhkiG9w0BAQsFAAOCAYEAwOiOhvxF0ZAp1FLwh/pPiWfutxzSg9whgO39QCjN
|
29
|
+
0VGfvsv79ftsgWM5Dlg3aweXRGYcs/eYf9FmGMBKFCrUvjtdI5S8mf95FuUYGmaC
|
30
|
+
vU8/h+gsH06K57XVxf/rgsbM+sfE4w2ZyES7LCxbJeYSoRtwb2u4o8lf/qvjj1cn
|
31
|
+
XDxcDp9Ztkkr9c8/WRUjXChYJQm+0kWADV6RNaKAr2zmvFXDtRTWzXB6K7HeW3fx
|
32
|
+
g4THKiqKhW+/UOB8kO+NlSU5pqHw+u4vtHTE3fBJKojIIzFqhxi1xyHhGJAzFIj/
|
33
|
+
/FaMLQm+L5ABBAp60vrKd/2JmMgS3iEYH3egyO3dfGa3UJAsKxEwPxljK/EGXweo
|
34
|
+
ClrBAGwpXmkf1AidnP86ZppXGDhqbYnNHPw3lB+NLAOP4IYvHDmpX7t/gwWt8pdU
|
35
|
+
JlMWB3ikne4OWo45avLsjICkmisnLJ84HSc2oYQ9n/dCIO1KK/DprLKZAN1CqNd/
|
36
|
+
I84GSXqtRpTn4jeExOFOFvme
|
32
37
|
-----END CERTIFICATE-----
|
33
|
-
date:
|
38
|
+
date: 2022-02-23 00:00:00.000000000 Z
|
34
39
|
dependencies:
|
35
40
|
- !ruby/object:Gem::Dependency
|
36
41
|
name: chronic_cron
|
@@ -38,40 +43,40 @@ dependencies:
|
|
38
43
|
requirements:
|
39
44
|
- - "~>"
|
40
45
|
- !ruby/object:Gem::Version
|
41
|
-
version: '0.
|
46
|
+
version: '0.7'
|
42
47
|
- - ">="
|
43
48
|
- !ruby/object:Gem::Version
|
44
|
-
version: 0.
|
49
|
+
version: 0.7.1
|
45
50
|
type: :runtime
|
46
51
|
prerelease: false
|
47
52
|
version_requirements: !ruby/object:Gem::Requirement
|
48
53
|
requirements:
|
49
54
|
- - "~>"
|
50
55
|
- !ruby/object:Gem::Version
|
51
|
-
version: '0.
|
56
|
+
version: '0.7'
|
52
57
|
- - ">="
|
53
58
|
- !ruby/object:Gem::Version
|
54
|
-
version: 0.
|
59
|
+
version: 0.7.1
|
55
60
|
- !ruby/object:Gem::Dependency
|
56
61
|
name: dynarex
|
57
62
|
requirement: !ruby/object:Gem::Requirement
|
58
63
|
requirements:
|
59
64
|
- - "~>"
|
60
65
|
- !ruby/object:Gem::Version
|
61
|
-
version: '1.
|
66
|
+
version: '1.9'
|
62
67
|
- - ">="
|
63
68
|
- !ruby/object:Gem::Version
|
64
|
-
version: 1.
|
69
|
+
version: 1.9.6
|
65
70
|
type: :runtime
|
66
71
|
prerelease: false
|
67
72
|
version_requirements: !ruby/object:Gem::Requirement
|
68
73
|
requirements:
|
69
74
|
- - "~>"
|
70
75
|
- !ruby/object:Gem::Version
|
71
|
-
version: '1.
|
76
|
+
version: '1.9'
|
72
77
|
- - ">="
|
73
78
|
- !ruby/object:Gem::Version
|
74
|
-
version: 1.
|
79
|
+
version: 1.9.6
|
75
80
|
- !ruby/object:Gem::Dependency
|
76
81
|
name: sps-pub
|
77
82
|
requirement: !ruby/object:Gem::Requirement
|
@@ -93,7 +98,7 @@ dependencies:
|
|
93
98
|
- !ruby/object:Gem::Version
|
94
99
|
version: 0.5.5
|
95
100
|
description:
|
96
|
-
email:
|
101
|
+
email: digital.robertson@gmail.com
|
97
102
|
executables: []
|
98
103
|
extensions: []
|
99
104
|
extra_rdoc_files: []
|
@@ -118,8 +123,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
118
123
|
- !ruby/object:Gem::Version
|
119
124
|
version: '0'
|
120
125
|
requirements: []
|
121
|
-
|
122
|
-
rubygems_version: 2.6.13
|
126
|
+
rubygems_version: 3.2.22
|
123
127
|
signing_key:
|
124
128
|
specification_version: 4
|
125
129
|
summary: Publishes SimplePubSub messages by reading cron entries from a Dynarex document
|
metadata.gz.sig
CHANGED
@@ -1,2 +1,2 @@
|
|
1
|
-
�
|
2
|
-
|
1
|
+
V%(�ˀh�05�(:����f���ޒ���d+��N}��1I�$�
|
2
|
+
w�&p��(�{�4���Q ����٣�\ԯ�L���Q�՜�lK��͒��fU��A��Ø���>���E�J
|