class BoxGrinder::ApplianceTransformationHelper

Public Class Methods

new(latest_schema_version, options = {}) click to toggle source
# File lib/boxgrinder-core/helpers/appliance-transformation-helper.rb, line 23
def initialize(latest_schema_version, options = {})
  @latest_schema_version = latest_schema_version
  @log = options[:log] || LogHelper.new

  @versions = ['0.9.0']
end

Public Instance Methods

to_0_9_0(appliance_definition) click to toggle source
# File lib/boxgrinder-core/helpers/appliance-transformation-helper.rb, line 51
def to_0_9_0(appliance_definition)
  packages = appliance_definition['packages']['includes']
  @log.warn "BoxGrinder no longer supports package exclusion, the following packages will be not be explicitly excluded: #{appliance_definition['packages']['excludes'].join(", ")}." unless appliance_definition['packages']['excludes'].nil?
  appliance_definition['packages'] = packages
  appliance_definition
end
transform(appliance_definition, version) click to toggle source
# File lib/boxgrinder-core/helpers/appliance-transformation-helper.rb, line 30
def transform(appliance_definition, version)
  return appliance_definition if version == @latest_schema_version

  @log.debug "Transforming appliance definition from schema version #{version} to #{@latest_schema_version}..."

  transformations = [version]
  definition = appliance_definition

  @versions.each do |v|
    if (transformations.last <=> v) < 0
      @log.trace "Round #{transformations.size}: transforming from version #{transformations.last} to #{v}..."
      definition = self.send("to_#{v.gsub(/[-\.]/, '_')}", definition)
      transformations << v
    end
  end

  @log.debug "Following transformation were applied: #{transformations.join(' => ')}." if transformations.size > 1

  definition
end