class Packager::Executor
Attributes
commands[RW]
dryrun[RW]
workdir[RW]
Public Class Methods
new(opts={})
click to toggle source
# File lib/packager/executor.rb, line 9 def initialize(opts={}) self.dryrun = !!opts[:dryrun] self.commands = [] end
Public Instance Methods
create_package_for(item)
click to toggle source
# File lib/packager/executor.rb, line 34 def create_package_for(item) unless item.files.empty? item.files.each do |file| dest = (file.dest || '').gsub /^\//, '' FileUtils.mkdir_p File.dirname(dest) if file.link FileUtils.ln_s(file.source, dest, force: true) else FileUtils.cp_r(file.source, dest) end end end cmd = Packager::Struct::Command.new( :name => item.name, :version => item.version, :target => item.type, :requires => item.requires, :provides => item.provides, :before_install => item.before_install, :after_install => item.after_install, :before_remove => item.before_remove, :after_remove => item.after_remove, :before_upgrade => item.before_upgrade, :after_upgrade => item.after_upgrade, ) Dir.glob('*') do |entry| if File.directory?(entry) cmd.add_directory(entry) end end commands.push(cmd) execute_command(cmd) end
execute_command(cmd)
click to toggle source
# File lib/packager/executor.rb, line 72 def execute_command(cmd) return if dryrun x = `#{cmd.to_system.join(' ')}` rv = eval(x) raise rv[:error] if rv[:error] raise rv[:message] if rv[:level] == :error return rv[:path] end
execute_on(items)
click to toggle source
# File lib/packager/executor.rb, line 24 def execute_on(items) curdir = Dir.pwd items.collect do |item| with_workdir do path = create_package_for(item) FileUtils.mv(path, curdir) if path end end end
with_workdir(&block)
click to toggle source
# File lib/packager/executor.rb, line 14 def with_workdir(&block) if workdir Dir.chdir(workdir, &block) else Dir.mktmpdir do |dir| Dir.chdir(dir, &block) end end end