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
         |