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