class Jisota::PackageScript

Part of the Script duck type

Executes an entire package, which in turn might execute other packages. The args are parsed with the ParamParser to match args with params.

If the package has a `verify_block`, that will be executed first. If the result of verify is success, the `run_block` will not be executed.

Attributes

args[RW]
package[RW]

Public Class Methods

new(package, args = []) click to toggle source
# File lib/jisota/package_script.rb, line 13
def initialize(package, args = [])
  @package = package
  @args = args
end

Public Instance Methods

execute(context) click to toggle source
# File lib/jisota/package_script.rb, line 18
def execute(context)
  context.param_scope(parse_params) do
    context.logger.system_message("Package #{self}") do
      execute_package(context)
    end
  end
end
to_s() click to toggle source
# File lib/jisota/package_script.rb, line 26
def to_s
  result = ""
  result << package.name.to_s
  if args.any?
    result << " "
    result << args.map(&:inspect).join(", ")
  end
  result
end

Private Instance Methods

execute_package(context) click to toggle source
# File lib/jisota/package_script.rb, line 42
def execute_package(context)
  package.sections.each do |section|
    context.logger.system_message("Section #{section.description}") do
      result = execute_section(section, context)
      return false unless result
    end
  end
  true
end
execute_run(section, context) click to toggle source
# File lib/jisota/package_script.rb, line 67
def execute_run(section, context)
  run_script = section.run_block.evaluate(context)
  run_script.execute(context)
end
execute_section(section, context) click to toggle source
# File lib/jisota/package_script.rb, line 52
def execute_section(section, context)
  if section.verify_block
    verify_script = section.verify_block.evaluate(context)
    result = verify_script.execute(context)
    if result
      context.logger.system_message("Section #{section.description} already installed")
      true
    else
      execute_run(section, context)
    end
  else
    execute_run(section, context)
  end
end
parse_params() click to toggle source
# File lib/jisota/package_script.rb, line 38
def parse_params
  ParamParser.new(package.params, args).parse
end