dynarex_cron 0.9.4 → 0.9.5

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 6af2f890bc138f8837c34f0f65da81efa9eed178
4
- data.tar.gz: 2b1d275085ffbe30b45f2cd9e3a09fdb0e89d02f
2
+ SHA256:
3
+ metadata.gz: b3a65ddcd1590f382710f6f67cb50ac1143fed13c8af76dde93c76fce3a99e24
4
+ data.tar.gz: f2c111a396fc622e35cdbcd18007dc03df688a705813be5e25338bc6e55655d3
5
5
  SHA512:
6
- metadata.gz: 2e7a7169e2de5090c65c0a02b722920a9d6c9af9e7c4d9ba42a7e7a451f3c720a9a9313c68b08e8d8d06752297c5c431d890ad415057abd8a51aaf53c02a06a6
7
- data.tar.gz: b9ea134515ebfe6cef8a1cbee64d27cbf4d61e52025a9c2bc9fe0c50ca83a6ba61a20645e4e929807319d0b2927a1f52c9fd1a91a5a63b3169fc15fcd66b7a46
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, _ = RXFHelper.read(dynarex_file)
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
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
- MIIDXjCCAkagAwIBAgIBATANBgkqhkiG9w0BAQUFADAsMSowKAYDVQQDDCFnZW1t
14
- YXN0ZXIvREM9amFtZXNyb2JlcnRzb24vREM9ZXUwHhcNMTgwODA1MjAyMjI5WhcN
15
- MTkwODA1MjAyMjI5WjAsMSowKAYDVQQDDCFnZW1tYXN0ZXIvREM9amFtZXNyb2Jl
16
- cnRzb24vREM9ZXUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDOdsBI
17
- /bgt8waGEp7w+e/ICpZp+4mfwsEA6KilYcWB/zIxeUrF0xsdonW34w1d4QPR8pZ0
18
- BumRCtA8RNlKb8+YhtrefYCAR4KtOAgF5bEIq6CmfNVi+K6G97o0ZXwzY/MurNFt
19
- yftTTynOqcW1OKNoVpd3foWjUW+/lNamKWlqrBn/RysAEJofpVED5tmkn8UrTT9W
20
- cxYgeIV6/D8PG6Xh6fv49L8uaV7n7pAd4aZRYNGfuV0xNlAkE2AU8hPpIYoP2c9H
21
- 2WtQYyBmQBgpR3UYW8cgCPLspoMgWOIpNmYxc0Z7p2svf+8IH6lsDgsNPRPnePxx
22
- qTyXJHKJXnSN5bSPAgMBAAGjgYowgYcwCQYDVR0TBAIwADALBgNVHQ8EBAMCBLAw
23
- HQYDVR0OBBYEFKMMjuGA9ipbBcm+Lo+6Q3Wbc43UMCYGA1UdEQQfMB2BG2dlbW1h
24
- c3RlckBqYW1lc3JvYmVydHNvbi5ldTAmBgNVHRIEHzAdgRtnZW1tYXN0ZXJAamFt
25
- ZXNyb2JlcnRzb24uZXUwDQYJKoZIhvcNAQEFBQADggEBAESoSaB4iOLw2WbXKVNp
26
- y33ky1Acm4qq/MZMtVDdGZUJuBVkoRk8r6E+/i8oLAtigDKniVh1sBb42zlrkqN8
27
- 3lKCj644BY+Ivx+aJGefnDfbx/Tb7pUBl0XYcdgzB3f2tpLWG5OcN2km9BC+xPbV
28
- mApRhVt/7DivHBjLlRldwvbWAPRbs2fWHyejhkTbrIvceK9T+4UVdo9UW25XgqBY
29
- eRXpazd524HHwai5zOWZWBt3mi+v+PxLIKABndcxwNoyYMwjNNsI9ICg2kwbasIE
30
- 2BX4Dgs+iEfi0Dc/h0aZbRml7Ins7DSYrR3uuNKvaUyx+J/NP1+sBCJA0D3E3xY0
31
- Tk4=
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: 2018-08-05 00:00:00.000000000 Z
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.3'
46
+ version: '0.7'
42
47
  - - ">="
43
48
  - !ruby/object:Gem::Version
44
- version: 0.3.7
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.3'
56
+ version: '0.7'
52
57
  - - ">="
53
58
  - !ruby/object:Gem::Version
54
- version: 0.3.7
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.7'
66
+ version: '1.9'
62
67
  - - ">="
63
68
  - !ruby/object:Gem::Version
64
- version: 1.7.27
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.7'
76
+ version: '1.9'
72
77
  - - ">="
73
78
  - !ruby/object:Gem::Version
74
- version: 1.7.27
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: james@jamesrobertson.eu
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
- rubyforge_project:
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
- c0Q����s@A1�g�Ftc"G�+��
2
- w�*}k�-K+k[8}'���6i��]f.��[���y�����>ܛ���@ٌ^R�i�Y
1
+ V%(�ˀh05(:����f���ޒ���d+��N}��1I�$�
2
+ w�&p��({4���Q ����٣�\ԯ�L���Q�՜�lK��͒��fU��A��Ø���>���E�J֌