class Devkitkat::Service::Executor
Constants
- ScriptError
Public Class Methods
new(service)
click to toggle source
# File lib/devkitkat/service/executor.rb, line 14 def initialize(service) @service = service end
Public Instance Methods
execute()
click to toggle source
# File lib/devkitkat/service/executor.rb, line 18 def execute logger.new_file scripter.new_file do if prepare_script execute! end end true rescue ScriptError => e puts "Failure: #{e}".colorize(:red) false end
Private Instance Methods
execute!()
click to toggle source
# File lib/devkitkat/service/executor.rb, line 55 def execute! driver = get_driver_klass.new(service) driver.prepare driver.execute(scripter.file_path).tap do |result| raise ScriptError, process_error_message($?) unless result end ensure driver.cleanup end
get_driver_klass()
click to toggle source
# File lib/devkitkat/service/executor.rb, line 82 def get_driver_klass driver = @machine_driver || service.machine_driver || config.machine_driver Object.const_get("Devkitkat::Service::Driver::#{driver.camelize}") end
logger()
click to toggle source
# File lib/devkitkat/service/executor.rb, line 70 def logger @logger ||= Logger.new(service) end
predefined_command()
click to toggle source
# File lib/devkitkat/service/executor.rb, line 78 def predefined_command @predefined_command ||= predefined_command_klass.new(service) end
predefined_command_available?()
click to toggle source
# File lib/devkitkat/service/executor.rb, line 92 def predefined_command_available? Object.const_defined?("Devkitkat::Service::PredefinedCommand::#{command.name.camelize}") && predefined_command.available? end
predefined_command_klass()
click to toggle source
# File lib/devkitkat/service/executor.rb, line 88 def predefined_command_klass Object.const_get("Devkitkat::Service::PredefinedCommand::#{command.name.camelize}") end
prepare_script()
click to toggle source
# File lib/devkitkat/service/executor.rb, line 36 def prepare_script scripter.write(variables.to_script) scripter.write(logger.to_script) if logger.available? if File.exist?(service.script_path) scripter.write(%Q{echo "INFO: This script is a custom script."}) scripter.write(service.script_path) @machine_driver = command.options[:driver] elsif predefined_command_available? scripter.write(%Q{echo "INFO: This script is a predefined script in devkitkat."}) scripter.write(predefined_command.to_script) @machine_driver = predefined_command.machine_driver else false end true end
process_error_message(exit_code)
click to toggle source
# File lib/devkitkat/service/executor.rb, line 97 def process_error_message(exit_code) %Q[The command "#{command.script}" for "#{service.name}" exited with non-zero code: #{exit_code}. See the log file: #{service.log_path}] end
scripter()
click to toggle source
# File lib/devkitkat/service/executor.rb, line 66 def scripter @scripter ||= Scripter.new(service) end
variables()
click to toggle source
# File lib/devkitkat/service/executor.rb, line 74 def variables @variables ||= Variables.new(service) end