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