class Simp::Media::Engine

Attributes

input[RW]
options[RW]
output[RW]

Public Class Methods

new(options = {}) click to toggle source
# File lib/simp/media/engine.rb, line 34
def initialize(options = {})
  {
    'input_type' => 'internet',
    'input' => nil,
    'output_type' => 'control_repo',
    'output' => 'file:///usr/share/simp/control-repo',
    'url' => nil,
    'embed' => true,
    'license' => '/etc/simp/license.key',
    'sign' => false,
    'signing_key' => nil,
    'metadata' => nil,
    'branch' => 'production',
    'destination_branch' => nil,
    'edition' => 'community',
    'channel' => 'stable',
    'flavor' => 'default'
  }.each do |key, default_value|
    options[key] = default_value unless options.key?(key)
  end
  @cleanup = []
  @options = options
  raise 'input_type must be specified' if options['input_type'].nil?
  raise 'output_type must be specified' if options['output_type'].nil?
  @input = Module.const_get("Simp::Media::Type::#{@options['input_type'].capitalize}").new(options, self)
  @output = Module.const_get("Simp::Media::Type::#{@options['output_type'].capitalize}").new(options, self)
end

Public Instance Methods

cleanup() click to toggle source
# File lib/simp/media/engine.rb, line 91
def cleanup
  @cleanup.each do |path|
    FileUtils.rmtree(path)
  end
end
critical(output) click to toggle source
# File lib/simp/media/engine.rb, line 30
def critical(output)
  Simp::Metadata.critical(output)
end
debug1(output) click to toggle source
# File lib/simp/media/engine.rb, line 14
def debug1(output)
  Simp::Metadata.debug1(output)
end
debug2(output) click to toggle source
# File lib/simp/media/engine.rb, line 10
def debug2(output)
  Simp::Metadata.debug2(output)
end
error(output) click to toggle source
# File lib/simp/media/engine.rb, line 26
def error(output)
  Simp::Metadata.error(output)
end
info(output) click to toggle source
# File lib/simp/media/engine.rb, line 18
def info(output)
  Simp::Metadata.info(output)
end
loaded?() click to toggle source
# File lib/simp/media/engine.rb, line 87
def loaded?
  true
end
run() click to toggle source
# File lib/simp/media/engine.rb, line 62
def run
  # XXX ToDo: Need to not create a target_directory if an input directory exists
  if @output.target_directory.nil?
    target = Dir.mktmpdir('cachedir')
    @cleanup << target
  else
    target = @output.target_directory
  end

  # XXX ToDo: only set this if input is specified
  @input.input_directory = @options['input']

  metadata = Simp::Metadata::Engine.new(nil, nil, @options['edition'])
  version = @options['version']
  metadata.releases[version].components.each do |component|
    info("Adding #{component.name}")
    retval = @input.fetch_component(component, {})
    @output.add_component(component, retval)
  end
  @output.finalize(nil)
  @input.cleanup
  @output.cleanup
  cleanup
end
warning(output) click to toggle source
# File lib/simp/media/engine.rb, line 22
def warning(output)
  Simp::Metadata.warning(output)
end