class Baptize::PackageDefinition
Attributes
after_block[R]
before_block[R]
dependencies[R]
desc[R]
description[R]
install_block[R]
name[R]
verify_block[R]
Public Class Methods
new(name, execution_scope, registry)
click to toggle source
# File lib/baptize/package_definition.rb, line 6 def initialize(name, execution_scope, registry) @name = name @execution_scope = execution_scope @registry = registry @dependencies = [] @install_block = nil @verify_block = nil @before_block = nil @after_block = nil end
Public Instance Methods
after(&block)
click to toggle source
# File lib/baptize/package_definition.rb, line 104 def after(&block) @after_block = block end
before(&block)
click to toggle source
# File lib/baptize/package_definition.rb, line 100 def before(&block) @before_block = block end
execute(options={})
click to toggle source
# File lib/baptize/package_definition.rb, line 17 def execute(options={}) unless @registry.packages_executed.include?(full_name) || options[:force] @registry.packages_executed << full_name logger.info "Resolving dependencies for #{name}" @registry.before(self).each do |dependency| logger.debug "--> #{dependency}" @registry.resolve_dependency(dependency).tap do |task| task.call end end @dependencies.each do |dependency| logger.debug "--> #{dependency}" @registry.resolve_dependency(dependency).tap do |task| task.call end end instance_eval(&before_block) if self.before_block if verify_block logger.debug "Verifying package #{name}" already_installed = begin instance_eval(&verify_block) true rescue VerificationFailure false end if already_installed && !ENV['FORCE_INSTALL'] logger.info "Skipping previously installed package #{name}" else if already_installed && ENV['FORCE_INSTALL'] logger.important "Force installing previously installed package #{name}" else logger.info "Installing package #{name}" end instance_eval(&install_block) instance_eval(&verify_block) end elsif install_block # logger.important "WARNING: `verify` block not implemented for package #{name}." logger.info "Installing package #{name}" instance_eval(&install_block) else # logger.important "WARNING: `install` block not implemented for package #{name}." logger.info "Nothing to do for package #{name}" end instance_eval(&after_block) if after_block @registry.after(self).each do |dependency| @registry.resolve_dependency(dependency).tap do |task| task.call end end end end
full_name()
click to toggle source
# File lib/baptize/package_definition.rb, line 84 def full_name name.to_s end
install(&block)
click to toggle source
# File lib/baptize/package_definition.rb, line 108 def install(&block) @install_block = block end
method_missing(sym, *args, &block)
click to toggle source
Calls superclass method
# File lib/baptize/package_definition.rb, line 74 def method_missing(sym, *args, &block) if @execution_scope.any?(sym) @execution_scope.fetch(sym) elsif @execution_scope.respond_to?(sym) @execution_scope.send(sym, *args, &block) else super end end
requires(*tasks)
click to toggle source
# File lib/baptize/package_definition.rb, line 94 def requires(*tasks) Array(tasks).flatten.each do |name| @dependencies << name end end
respond_to?(sym, include_priv = false)
click to toggle source
Calls superclass method
# File lib/baptize/package_definition.rb, line 70 def respond_to?(sym, include_priv = false) super || @execution_scope.any?(sym) || @execution_scope.respond_to?(sym) end
verify(&block)
click to toggle source
# File lib/baptize/package_definition.rb, line 112 def verify(&block) @verify_block = block end