nxt_pipeline 0.2.5 → 0.2.6
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 +4 -4
- data/.gitignore +1 -0
- data/.ruby-version +1 -1
- data/Gemfile.lock +8 -8
- data/README.md +18 -1
- data/lib/nxt_pipeline/error_callback.rb +10 -1
- data/lib/nxt_pipeline/pipeline.rb +12 -2
- data/lib/nxt_pipeline/version.rb +1 -1
- data/nxt_pipeline.gemspec +1 -1
- metadata +4 -4
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA256:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: e5b6a6aecafbd42348179870b4fb233198d36f57fcaf9bc15a73ec1cf94c7153
         | 
| 4 | 
            +
              data.tar.gz: 550eb798e64c2cf093bb991589c5fc3b711e01da213d9079efa690ad5bfd7f07
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 854f0e2cdfe534178509d440d5f997c37734a91389c1f994e64054f5a9ffcbe125f90b61eaf4721214ada62f34abed5378fb734538398a2a34d61eb3926aa55d
         | 
| 7 | 
            +
              data.tar.gz: c5c1dc5effe486335cffe8fdb766bb756fdb0c55825d89169daea456694fea809ae0938d13500765a09ab364b5aad11c0ce4a6f1b20573db38361f1907a36061
         | 
    
        data/.gitignore
    CHANGED
    
    
    
        data/.ruby-version
    CHANGED
    
    | @@ -1 +1 @@ | |
| 1 | 
            -
            2.6. | 
| 1 | 
            +
            2.6.3
         | 
    
        data/Gemfile.lock
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            PATH
         | 
| 2 2 | 
             
              remote: .
         | 
| 3 3 | 
             
              specs:
         | 
| 4 | 
            -
                nxt_pipeline (0.2. | 
| 4 | 
            +
                nxt_pipeline (0.2.6)
         | 
| 5 5 | 
             
                  activesupport
         | 
| 6 6 |  | 
| 7 7 | 
             
            GEM
         | 
| @@ -15,7 +15,7 @@ GEM | |
| 15 15 | 
             
                coderay (1.1.2)
         | 
| 16 16 | 
             
                concurrent-ruby (1.1.5)
         | 
| 17 17 | 
             
                diff-lcs (1.3)
         | 
| 18 | 
            -
                ffi (1. | 
| 18 | 
            +
                ffi (1.11.1)
         | 
| 19 19 | 
             
                formatador (0.2.5)
         | 
| 20 20 | 
             
                guard (2.15.0)
         | 
| 21 21 | 
             
                  formatador (>= 0.2.4)
         | 
| @@ -47,7 +47,7 @@ GEM | |
| 47 47 | 
             
                pry (0.12.2)
         | 
| 48 48 | 
             
                  coderay (~> 1.1.0)
         | 
| 49 49 | 
             
                  method_source (~> 0.9.0)
         | 
| 50 | 
            -
                rake ( | 
| 50 | 
            +
                rake (12.3.3)
         | 
| 51 51 | 
             
                rb-fsevent (0.10.3)
         | 
| 52 52 | 
             
                rb-inotify (0.10.0)
         | 
| 53 53 | 
             
                  ffi (~> 1.0)
         | 
| @@ -55,15 +55,15 @@ GEM | |
| 55 55 | 
             
                  rspec-core (~> 3.8.0)
         | 
| 56 56 | 
             
                  rspec-expectations (~> 3.8.0)
         | 
| 57 57 | 
             
                  rspec-mocks (~> 3.8.0)
         | 
| 58 | 
            -
                rspec-core (3.8. | 
| 58 | 
            +
                rspec-core (3.8.1)
         | 
| 59 59 | 
             
                  rspec-support (~> 3.8.0)
         | 
| 60 | 
            -
                rspec-expectations (3.8. | 
| 60 | 
            +
                rspec-expectations (3.8.4)
         | 
| 61 61 | 
             
                  diff-lcs (>= 1.2.0, < 2.0)
         | 
| 62 62 | 
             
                  rspec-support (~> 3.8.0)
         | 
| 63 | 
            -
                rspec-mocks (3.8. | 
| 63 | 
            +
                rspec-mocks (3.8.1)
         | 
| 64 64 | 
             
                  diff-lcs (>= 1.2.0, < 2.0)
         | 
| 65 65 | 
             
                  rspec-support (~> 3.8.0)
         | 
| 66 | 
            -
                rspec-support (3.8. | 
| 66 | 
            +
                rspec-support (3.8.2)
         | 
| 67 67 | 
             
                rspec_junit_formatter (0.4.1)
         | 
| 68 68 | 
             
                  rspec-core (>= 2, < 4, != 2.12.0)
         | 
| 69 69 | 
             
                ruby_dep (1.5.0)
         | 
| @@ -81,7 +81,7 @@ DEPENDENCIES | |
| 81 81 | 
             
              guard-rspec
         | 
| 82 82 | 
             
              nxt_pipeline!
         | 
| 83 83 | 
             
              pry
         | 
| 84 | 
            -
              rake (~>  | 
| 84 | 
            +
              rake (~> 12.3)
         | 
| 85 85 | 
             
              rspec (~> 3.0)
         | 
| 86 86 | 
             
              rspec_junit_formatter
         | 
| 87 87 |  | 
    
        data/README.md
    CHANGED
    
    | @@ -109,10 +109,21 @@ end | |
| 109 109 | 
             
            ``` 
         | 
| 110 110 |  | 
| 111 111 | 
             
            You can query the steps of your pipeline simply by calling `pipeline.steps`. A NxtPipeline::Step will provide you with 
         | 
| 112 | 
            -
            an interface it's type, options, status (:success, :skipped, :failed), result, error and the index in the pipeline.
         | 
| 112 | 
            +
            an interface to it's type, options, status (:success, :skipped, :failed), result, error and the index in the pipeline.
         | 
| 113 113 |  | 
| 114 114 | 
             
            ```
         | 
| 115 115 | 
             
            pipeline.steps.first 
         | 
| 116 | 
            +
            # will give you something like this:
         | 
| 117 | 
            +
             | 
| 118 | 
            +
            #<NxtPipeline::Step:0x00007f83eb399448
         | 
| 119 | 
            +
             @constructor=
         | 
| 120 | 
            +
              #<Proc:0x00007f83eb399498@/Users/andy/workspace/nxt_pipeline/spec/pipeline_spec.rb:467>,
         | 
| 121 | 
            +
             @error=nil,
         | 
| 122 | 
            +
             @index=0,
         | 
| 123 | 
            +
             @opts={:to_s=>:transformer, :method=>:upcase},
         | 
| 124 | 
            +
             @result=nil,
         | 
| 125 | 
            +
             @status=nil,
         | 
| 126 | 
            +
             @type=:transformer> 
         | 
| 116 127 | 
             
            ``` 
         | 
| 117 128 |  | 
| 118 129 | 
             
            ### Error callbacks
         | 
| @@ -133,6 +144,11 @@ NxtPipeline::Pipeline.new do |p| | |
| 133 144 | 
             
                # First matching error callback will be executed!
         | 
| 134 145 | 
             
              end
         | 
| 135 146 |  | 
| 147 | 
            +
              p.on_errors YetAnotherError, halt_on_error: false do |step, arg, error|
         | 
| 148 | 
            +
                # After executing the callback the pipeline will not halt but continue to
         | 
| 149 | 
            +
                # execute the next steps.
         | 
| 150 | 
            +
              end
         | 
| 151 | 
            +
              
         | 
| 136 152 | 
             
              p.on_errors do |step, arg, error|
         | 
| 137 153 | 
             
                # This will match all errors inheriting from StandardError
         | 
| 138 154 | 
             
              end
         | 
| @@ -147,6 +163,7 @@ You can also define callbacks that run before and after the `#execute` action. B | |
| 147 163 | 
             
            NxtPipeline::Pipeline.new do |p|
         | 
| 148 164 | 
             
              p.before_execute do |pipeline, arg|
         | 
| 149 165 | 
             
                # Will be called from within #execute before entering the first step
         | 
| 166 | 
            +
                # After any configure block though!  
         | 
| 150 167 | 
             
              end
         | 
| 151 168 |  | 
| 152 169 | 
             
              p.after_execute do |pipeline, arg|
         | 
| @@ -1,12 +1,21 @@ | |
| 1 1 | 
             
            module NxtPipeline
         | 
| 2 2 | 
             
              class ErrorCallback
         | 
| 3 | 
            -
                def initialize(errors, callback)
         | 
| 3 | 
            +
                def initialize(errors, halt_on_error, callback)
         | 
| 4 4 | 
             
                  @errors = errors
         | 
| 5 | 
            +
                  @halt_on_error = halt_on_error
         | 
| 5 6 | 
             
                  @callback = callback
         | 
| 6 7 | 
             
                end
         | 
| 7 8 |  | 
| 8 9 | 
             
                attr_accessor :errors, :callback
         | 
| 9 10 |  | 
| 11 | 
            +
                def halt_on_error?
         | 
| 12 | 
            +
                  @halt_on_error
         | 
| 13 | 
            +
                end
         | 
| 14 | 
            +
             | 
| 15 | 
            +
                def continue_after_error?
         | 
| 16 | 
            +
                  !halt_on_error?
         | 
| 17 | 
            +
                end
         | 
| 18 | 
            +
             | 
| 10 19 | 
             
                def applies_to_error?(error)
         | 
| 11 20 | 
             
                  (error.class.ancestors & errors).any?
         | 
| 12 21 | 
             
                end
         | 
| @@ -72,11 +72,21 @@ module NxtPipeline | |
| 72 72 |  | 
| 73 73 | 
             
                  result = steps.inject(arg) do |argument, step|
         | 
| 74 74 | 
             
                    execute_step(step, argument)
         | 
| 75 | 
            +
                  rescue StandardError => error
         | 
| 76 | 
            +
                    puts step
         | 
| 77 | 
            +
                    callback = find_error_callback(error)
         | 
| 78 | 
            +
                    raise unless callback && callback.continue_after_error?
         | 
| 79 | 
            +
                    handle_step_error(error)
         | 
| 80 | 
            +
                    argument
         | 
| 75 81 | 
             
                  end
         | 
| 76 82 |  | 
| 77 83 | 
             
                  after_execute_callback.call(self, result) if after_execute_callback.respond_to?(:call)
         | 
| 78 84 | 
             
                  result
         | 
| 79 85 | 
             
                rescue StandardError => error
         | 
| 86 | 
            +
                  handle_step_error(error)
         | 
| 87 | 
            +
                end
         | 
| 88 | 
            +
             | 
| 89 | 
            +
                def handle_step_error(error)
         | 
| 80 90 | 
             
                  log_step(current_step)
         | 
| 81 91 | 
             
                  callback = find_error_callback(error)
         | 
| 82 92 |  | 
| @@ -85,8 +95,8 @@ module NxtPipeline | |
| 85 95 | 
             
                  callback.call(current_step, current_arg, error)
         | 
| 86 96 | 
             
                end
         | 
| 87 97 |  | 
| 88 | 
            -
                def on_errors(*errors, &callback)
         | 
| 89 | 
            -
                  error_callbacks << ErrorCallback.new(errors, callback)
         | 
| 98 | 
            +
                def on_errors(*errors, halt_on_error: true, &callback)
         | 
| 99 | 
            +
                  error_callbacks << ErrorCallback.new(errors, halt_on_error, callback)
         | 
| 90 100 | 
             
                end
         | 
| 91 101 |  | 
| 92 102 | 
             
                alias :on_error :on_errors
         | 
    
        data/lib/nxt_pipeline/version.rb
    CHANGED
    
    
    
        data/nxt_pipeline.gemspec
    CHANGED
    
    | @@ -37,7 +37,7 @@ Gem::Specification.new do |spec| | |
| 37 37 | 
             
              spec.add_dependency "activesupport"
         | 
| 38 38 | 
             
              spec.add_development_dependency "bundler", "~> 1.17"
         | 
| 39 39 | 
             
              spec.add_development_dependency "guard-rspec"
         | 
| 40 | 
            -
              spec.add_development_dependency "rake", "~>  | 
| 40 | 
            +
              spec.add_development_dependency "rake", "~> 12.3"
         | 
| 41 41 | 
             
              spec.add_development_dependency "rspec", "~> 3.0"
         | 
| 42 42 | 
             
              spec.add_development_dependency "pry"
         | 
| 43 43 | 
             
            end
         | 
    
        metadata
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: nxt_pipeline
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0.2. | 
| 4 | 
            +
              version: 0.2.6
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Nils Sommer
         | 
| @@ -10,7 +10,7 @@ authors: | |
| 10 10 | 
             
            autorequire: 
         | 
| 11 11 | 
             
            bindir: exe
         | 
| 12 12 | 
             
            cert_chain: []
         | 
| 13 | 
            -
            date: 2019- | 
| 13 | 
            +
            date: 2019-07-30 00:00:00.000000000 Z
         | 
| 14 14 | 
             
            dependencies:
         | 
| 15 15 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 16 16 | 
             
              name: activesupport
         | 
| @@ -60,14 +60,14 @@ dependencies: | |
| 60 60 | 
             
                requirements:
         | 
| 61 61 | 
             
                - - "~>"
         | 
| 62 62 | 
             
                  - !ruby/object:Gem::Version
         | 
| 63 | 
            -
                    version: ' | 
| 63 | 
            +
                    version: '12.3'
         | 
| 64 64 | 
             
              type: :development
         | 
| 65 65 | 
             
              prerelease: false
         | 
| 66 66 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 67 67 | 
             
                requirements:
         | 
| 68 68 | 
             
                - - "~>"
         | 
| 69 69 | 
             
                  - !ruby/object:Gem::Version
         | 
| 70 | 
            -
                    version: ' | 
| 70 | 
            +
                    version: '12.3'
         | 
| 71 71 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 72 72 | 
             
              name: rspec
         | 
| 73 73 | 
             
              requirement: !ruby/object:Gem::Requirement
         |