libis-workflow 2.0.beta.12 → 2.0.beta.13
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/.travis.yml +2 -0
- data/lib/libis/workflow/base/workflow.rb +16 -10
- data/lib/libis/workflow/task.rb +54 -19
- data/lib/libis/workflow/version.rb +1 -1
- data/spec/workflow_spec.rb +2 -1
- metadata +3 -3
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA1:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: ee7675981468e33b70d8f03bb43ade771225a34b
         | 
| 4 | 
            +
              data.tar.gz: 2770f1c82005d427bcc29c8aa08d84f395f971f8
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 557aa30bcff78d439b02008c86c5a1a4f43264fb23d1405012e0f3430006581c5ee2ce092aa0421fa89357b9ff7576b51cca6788f0fc15d22ca5e99be8f3ab75
         | 
| 7 | 
            +
              data.tar.gz: dd1c1fabe78d2ca9a7ad0f89ce6ae0975a478e1383a904119fa6a55fdc2111340f3aa2fbdc9deb56faf43a8d52ac88f9ec18bc61ae6925e17e7f49e7371cb9ee
         | 
    
        data/.travis.yml
    CHANGED
    
    
| @@ -98,31 +98,37 @@ module Libis | |
| 98 98 | 
             
                        name = input_def.first.to_sym
         | 
| 99 99 | 
             
                        default = input_def.last[:default]
         | 
| 100 100 | 
             
                        parameter = ::Libis::Tools::Parameter.new name, default
         | 
| 101 | 
            -
                        input_def.last.each { |k, v| parameter[k.to_sym] = v}
         | 
| 102 | 
            -
                        hash[ | 
| 101 | 
            +
                        input_def.last.each { |k, v| parameter[k.to_sym] = v }
         | 
| 102 | 
            +
                        hash[name] = parameter
         | 
| 103 103 | 
             
                        hash
         | 
| 104 104 | 
             
                      end
         | 
| 105 105 | 
             
                    rescue
         | 
| 106 106 | 
             
                      {}
         | 
| 107 107 | 
             
                    end
         | 
| 108 108 |  | 
| 109 | 
            -
                    # @param [Hash]  | 
| 110 | 
            -
                    def prepare_input( | 
| 111 | 
            -
                       | 
| 109 | 
            +
                    # @param [Hash] options
         | 
| 110 | 
            +
                    def prepare_input(options)
         | 
| 111 | 
            +
                      result = {}
         | 
| 112 112 | 
             
                      self.input.each do |key, parameter|
         | 
| 113 | 
            -
                         | 
| 114 | 
            -
             | 
| 113 | 
            +
                        if options.has_key?(key)
         | 
| 114 | 
            +
                          value = parameter.parse(options[key])
         | 
| 115 | 
            +
                        elsif !parameter[:default].nil?
         | 
| 116 | 
            +
                          value = parameter[:default]
         | 
| 117 | 
            +
                        else
         | 
| 118 | 
            +
                          next
         | 
| 119 | 
            +
                        end
         | 
| 115 120 | 
             
                        propagate_to = []
         | 
| 116 121 | 
             
                        propagate_to = parameter[:propagate_to] if parameter[:propagate_to].is_a? Array
         | 
| 117 122 | 
             
                        propagate_to = parameter[:propagate_to].split(/[\s,;]+/) if parameter[:propagate_to].is_a? String
         | 
| 123 | 
            +
                        result[key] = value if propagate_to.empty?
         | 
| 118 124 | 
             
                        propagate_to.each do |target|
         | 
| 119 125 | 
             
                          task_name, param_name = target.split('#')
         | 
| 120 126 | 
             
                          param_name ||= key
         | 
| 121 | 
            -
                           | 
| 122 | 
            -
                           | 
| 127 | 
            +
                          result[task_name] ||= {}
         | 
| 128 | 
            +
                          result[task_name][param_name.to_sym] = value
         | 
| 123 129 | 
             
                        end
         | 
| 124 130 | 
             
                      end
         | 
| 125 | 
            -
                       | 
| 131 | 
            +
                      result
         | 
| 126 132 | 
             
                    end
         | 
| 127 133 |  | 
| 128 134 | 
             
                    def tasks(parent = nil)
         | 
    
        data/lib/libis/workflow/task.rb
    CHANGED
    
    | @@ -28,6 +28,8 @@ module Libis | |
| 28 28 | 
             
                  end
         | 
| 29 29 |  | 
| 30 30 | 
             
                  def initialize(parent, cfg = {})
         | 
| 31 | 
            +
                    @subitems_stopper = false
         | 
| 32 | 
            +
                    @subtasks_stopper = false
         | 
| 31 33 | 
             
                    self.parent = parent
         | 
| 32 34 | 
             
                    self.tasks = []
         | 
| 33 35 | 
             
                    configure cfg
         | 
| @@ -61,12 +63,7 @@ module Libis | |
| 61 63 |  | 
| 62 64 | 
             
                      self.workitem = item
         | 
| 63 65 |  | 
| 64 | 
            -
                       | 
| 65 | 
            -
             | 
| 66 | 
            -
                      pre_process item
         | 
| 67 | 
            -
                      i = process_item item
         | 
| 68 | 
            -
                      item = i if i.is_a? Libis::Workflow::Base::WorkItem
         | 
| 69 | 
            -
                      post_process item
         | 
| 66 | 
            +
                      process_item item
         | 
| 70 67 |  | 
| 71 68 | 
             
                    rescue WorkflowError => e
         | 
| 72 69 | 
             
                      error e.message
         | 
| @@ -82,8 +79,6 @@ module Libis | |
| 82 79 | 
             
                      log_failed item
         | 
| 83 80 | 
             
                    end
         | 
| 84 81 |  | 
| 85 | 
            -
                    log_done item unless item.failed?
         | 
| 86 | 
            -
             | 
| 87 82 | 
             
                  end
         | 
| 88 83 |  | 
| 89 84 | 
             
                  def names
         | 
| @@ -101,9 +96,9 @@ module Libis | |
| 101 96 | 
             
                    if o and o.is_a? Hash
         | 
| 102 97 | 
             
                      default_values.each do |name, _|
         | 
| 103 98 | 
             
                        next unless o.key?(name)
         | 
| 104 | 
            -
                        next  | 
| 105 | 
            -
                         | 
| 106 | 
            -
                         | 
| 99 | 
            +
                        next if o[name].nil?
         | 
| 100 | 
            +
                        paramdef = get_parameter_definition name
         | 
| 101 | 
            +
                        value = paramdef.parse(o[name])
         | 
| 107 102 | 
             
                        self.parameter(name, value)
         | 
| 108 103 | 
             
                      end
         | 
| 109 104 | 
             
                    end
         | 
| @@ -115,6 +110,34 @@ module Libis | |
| 115 110 |  | 
| 116 111 | 
             
                  protected
         | 
| 117 112 |  | 
| 113 | 
            +
                  def stop_processing_subitems
         | 
| 114 | 
            +
                    @subitems_stopper = true if parameter(:recursive)
         | 
| 115 | 
            +
                  end
         | 
| 116 | 
            +
             | 
| 117 | 
            +
                  def check_processing_subitems
         | 
| 118 | 
            +
                    if @subitems_stopper
         | 
| 119 | 
            +
                      @subitems_stopper = false
         | 
| 120 | 
            +
                      return false
         | 
| 121 | 
            +
                    end
         | 
| 122 | 
            +
                    true
         | 
| 123 | 
            +
                  end
         | 
| 124 | 
            +
             | 
| 125 | 
            +
                  def stop_processing_subtasks
         | 
| 126 | 
            +
                    @subtasks_stopper= true
         | 
| 127 | 
            +
                  end
         | 
| 128 | 
            +
             | 
| 129 | 
            +
                  def check_processing_subtasks
         | 
| 130 | 
            +
                    if @subtasks_stopper
         | 
| 131 | 
            +
                      @subtasks_stopper = false
         | 
| 132 | 
            +
                      return false
         | 
| 133 | 
            +
                    end
         | 
| 134 | 
            +
                    true
         | 
| 135 | 
            +
                  end
         | 
| 136 | 
            +
             | 
| 137 | 
            +
                  def skip_processing_item
         | 
| 138 | 
            +
                    @item_skipper = true
         | 
| 139 | 
            +
                  end
         | 
| 140 | 
            +
             | 
| 118 141 | 
             
                  def log_started(item)
         | 
| 119 142 | 
             
                    item.status = to_status :started
         | 
| 120 143 | 
             
                  end
         | 
| @@ -129,9 +152,18 @@ module Libis | |
| 129 152 | 
             
                  end
         | 
| 130 153 |  | 
| 131 154 | 
             
                  def process_item(item)
         | 
| 132 | 
            -
                     | 
| 133 | 
            -
                     | 
| 134 | 
            -
                     | 
| 155 | 
            +
                    @item_skipper = false
         | 
| 156 | 
            +
                    pre_process(item)
         | 
| 157 | 
            +
                    unless @item_skipper
         | 
| 158 | 
            +
                      log_started item
         | 
| 159 | 
            +
                      process item
         | 
| 160 | 
            +
                    end
         | 
| 161 | 
            +
                    run_subitems(item) if parameter(:recursive)
         | 
| 162 | 
            +
                    unless @item_skipper
         | 
| 163 | 
            +
                      run_subtasks item
         | 
| 164 | 
            +
                      log_done item unless item.failed?
         | 
| 165 | 
            +
                    end
         | 
| 166 | 
            +
                    post_process item
         | 
| 135 167 | 
             
                  end
         | 
| 136 168 |  | 
| 137 169 | 
             
                  def process(item)
         | 
| @@ -140,6 +172,7 @@ module Libis | |
| 140 172 | 
             
                  end
         | 
| 141 173 |  | 
| 142 174 | 
             
                  def pre_process(_)
         | 
| 175 | 
            +
                    true
         | 
| 143 176 | 
             
                    # optional implementation
         | 
| 144 177 | 
             
                  end
         | 
| 145 178 |  | 
| @@ -168,6 +201,7 @@ module Libis | |
| 168 201 | 
             
                  end
         | 
| 169 202 |  | 
| 170 203 | 
             
                  def run_subitems(parent_item)
         | 
| 204 | 
            +
                    return unless check_processing_subitems
         | 
| 171 205 | 
             
                    items = subitems parent_item
         | 
| 172 206 | 
             
                    failed = passed = 0
         | 
| 173 207 | 
             
                    items.each_with_index do |item, i|
         | 
| @@ -195,6 +229,7 @@ module Libis | |
| 195 229 | 
             
                  end
         | 
| 196 230 |  | 
| 197 231 | 
             
                  def run_subtasks(item)
         | 
| 232 | 
            +
                    return unless check_processing_subtasks
         | 
| 198 233 | 
             
                    tasks = subtasks item
         | 
| 199 234 | 
             
                    tasks.each_with_index do |task, i|
         | 
| 200 235 | 
             
                      debug 'Running subtask (%d/%d): %s', item, i+1, tasks.count, task.name
         | 
| @@ -211,11 +246,11 @@ module Libis | |
| 211 246 |  | 
| 212 247 | 
             
                  def configure(cfg)
         | 
| 213 248 | 
             
                    self.name = cfg[:name] || (cfg[:class] || self.class).to_s.split('::').last
         | 
| 214 | 
            -
                     | 
| 215 | 
            -
                        cfg[:options]  | 
| 216 | 
            -
                    ). | 
| 217 | 
            -
             | 
| 218 | 
            -
                     | 
| 249 | 
            +
                    (cfg[:options] || {}).merge(
         | 
| 250 | 
            +
                        cfg.reject { |k, _| [:options, :name, :class].include? k.to_sym }
         | 
| 251 | 
            +
                    ).symbolize_keys.each do |k,v|
         | 
| 252 | 
            +
                      self.parameter(k,v)
         | 
| 253 | 
            +
                    end
         | 
| 219 254 | 
             
                  end
         | 
| 220 255 |  | 
| 221 256 | 
             
                  def to_status(text)
         | 
| @@ -2,6 +2,6 @@ | |
| 2 2 |  | 
| 3 3 | 
             
            module Libis
         | 
| 4 4 | 
             
              module Workflow
         | 
| 5 | 
            -
                VERSION = '2.0.beta. | 
| 5 | 
            +
                VERSION = '2.0.beta.13' unless const_defined? :VERSION # the guard is against a redefinition warning that happens on Travis
         | 
| 6 6 | 
             
              end
         | 
| 7 7 | 
             
            end
         | 
    
        data/spec/workflow_spec.rb
    CHANGED
    
    | @@ -65,7 +65,8 @@ describe 'TestWorkflow' do | |
| 65 65 |  | 
| 66 66 | 
             
              # noinspection RubyResolve
         | 
| 67 67 | 
             
              it 'should camelize the workitem name' do
         | 
| 68 | 
            -
                 | 
| 68 | 
            +
                puts run.options
         | 
| 69 | 
            +
                expect(run.options['CollectFiles'][:location]).to eq dirname
         | 
| 69 70 | 
             
                expect(run.items.count).to eq 1
         | 
| 70 71 | 
             
                expect(run.items.first.class).to eq TestDirItem
         | 
| 71 72 | 
             
                expect(run.items.first.count).to eq 3
         | 
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: libis-workflow
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 2.0.beta. | 
| 4 | 
            +
              version: 2.0.beta.13
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Kris Dekeyser
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date: 2015- | 
| 11 | 
            +
            date: 2015-12-04 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: bundler
         | 
| @@ -175,7 +175,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement | |
| 175 175 | 
             
                  version: 1.3.1
         | 
| 176 176 | 
             
            requirements: []
         | 
| 177 177 | 
             
            rubyforge_project: 
         | 
| 178 | 
            -
            rubygems_version: 2. | 
| 178 | 
            +
            rubygems_version: 2.2.2
         | 
| 179 179 | 
             
            signing_key: 
         | 
| 180 180 | 
             
            specification_version: 4
         | 
| 181 181 | 
             
            summary: LIBIS Workflow framework.
         |