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 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֌