Class: Beaker::DSL::Structure::PlatformTagConfiner

Inherits:
Object
  • Object
show all
Defined in:
lib/beaker/dsl/structure.rb

Instance Method Summary collapse

Constructor Details

#initialize(platform_tag_confines_array) ⇒ PlatformTagConfiner

Note:

PlatformTagConfines objects come in the form [

{
  :platform => <platform-regex>,
  :tag_reason_hash => {
    <tag> => <reason to confine>,
    <tag> => <reason to confine>,
    ...etc...
  }
}

]

Constructs the PlatformTagConfiner, transforming the user format

into the internal structure for use by Beaker itself.

Internally, we want to turn tag matches into platform
  confine statements. So a better internal structure would
  be something of the form:
  {
    <tag> => [{
      :platform => <platform-regex>,
      :reason => <reason to confine>,
      :type => :except,
    }, ... ]
  }


383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
# File 'lib/beaker/dsl/structure.rb', line 383

def initialize(platform_tag_confines_array)
  platform_tag_confines_array ||= []
  @tag_confine_details_hash = {}
  platform_tag_confines_array.each do |entry|
    entry[:tag_reason_hash].keys.each do |tag|
      @tag_confine_details_hash[tag] ||= []
      log_msg = "Tag '#{tag}' found, confining: except platforms "
      log_msg << "matching regex '#{entry[:platform]}'. Reason: "
      log_msg << "'#{entry[:tag_reason_hash][tag]}'"
      @tag_confine_details_hash[tag] << {
        :platform_regex => entry[:platform],
        :log_message => log_msg,
        :type => :except
      }
    end
  end
end

Instance Method Details

#confine_details(tags) ⇒ Array<Hash{Symbol=>Object}>

Gets the confine details needed for a set of tags



409
410
411
412
413
414
415
416
417
418
419
420
421
422
# File 'lib/beaker/dsl/structure.rb', line 409

def confine_details(tags)
  tags ||= []
  details = []
  tags.each do |tag|
    tag_confine_array = @tag_confine_details_hash[tag]
    next if tag_confine_array.nil?

    details.push( *tag_confine_array )
    # tag_confine_array.each do |confine_details|
    #   details << confine_details
    # end
  end
  details
end