class Imagemaster3000::Actions::Copy

Attributes

filename[RW]
name[RW]
source[RW]
target[RW]

Public Class Methods

new(source: nil, target: nil, name: nil) click to toggle source
# File lib/imagemaster3000/actions/copy.rb, line 6
def initialize(source: nil, target: nil, name: nil)
  raise Imagemaster3000::Errors::ArgumentError, 'neither source nor target can be nil' if source.empty? || target.empty?

  @filename = source
  @source = File.join(Imagemaster3000::Settings[:'definitions-dir'], 'files', source)
  @target = target
  @name = name
  logger.debug "Created action #{inspect}"
end

Public Instance Methods

run(image_file) click to toggle source
# File lib/imagemaster3000/actions/copy.rb, line 16
def run(image_file)
  logger.debug "Running 'copy' action with source #{source.inspect} and target #{target.inspect} on file #{image_file.inspect}"
  copy image_file
  rename image_file if name
rescue Imagemaster3000::Errors::CommandExecutionError => ex
  raise Imagemaster3000::Errors::ActionError, ex
end

Private Instance Methods

copy(image_file) click to toggle source
# File lib/imagemaster3000/actions/copy.rb, line 26
def copy(image_file)
  Imagemaster3000::Utils::CommandExecutioner.execute Imagemaster3000::Settings[:'binaries-virt-copy-in'],
                                                     '-a',
                                                     image_file,
                                                     source,
                                                     target
end
rename(image_file) click to toggle source
# File lib/imagemaster3000/actions/copy.rb, line 34
def rename(image_file)
  Imagemaster3000::Utils::CommandExecutioner.execute Imagemaster3000::Settings[:'binaries-guestfish'],
                                                     '-a',
                                                     image_file,
                                                     '-i',
                                                     'mv',
                                                     File.join(target, filename),
                                                     File.join(target, name)
end