class Nifty::CommandExecutioner
Public Class Methods
List all available backends
@return [Array] array of all available backend classes
# File lib/nifty/command_executioner.rb, line 36 def available_backends constants = Nifty::Backends.constants.map { |sym| sym.to_s.downcase } constants.select! do |constant| unknown = Nifty::Backends.const_get(constant.camelize) unknown.respond_to?('backend?') && unknown.backend? end constants.sort end
List all available transfer methods for the backend
@param [Nifty::Backend] backend @return [Array] array of transfer method classes that support the backend
# File lib/nifty/command_executioner.rb, line 17 def available_transfer_methods(backend) unless Nifty::TransferMethods.constants.include? backend.camelize.to_sym fail Nifty::CommandExecutionError, "No backend with name '#{backend}'" end clazz = "Nifty::TransferMethods::#{backend.camelize}".constantize constants = clazz.constants.map { |sym| sym.to_s.downcase } constants.select! do |constant| unknown = clazz.const_get(constant.camelize) unknown.respond_to?('transfer_method?') && unknown.transfer_method? end constants.sort end
Force Thor to exit with a non-zero return value on failure (after `exit` is called).
@return [TrueClass, FalseClass] true if thor fail, false otherwise
# File lib/nifty/command_executioner.rb, line 9 def exit_on_failure? true end
Public Instance Methods
# File lib/nifty/command_executioner.rb, line 94 def backends backends = self.class.available_backends longest = backends.map { |backend| backend.length }.sort.last backends.each do |backend| $stdout.puts "%-#{longest + 2}s" % "#{backend}" + "# #{Nifty::Backends.const_get(backend.camelize).description}" end end
# File lib/nifty/command_executioner.rb, line 89 def version $stdout.puts Nifty::VERSION end
Private Instance Methods
Returns transfer method according to settings
@param [Nifty::Backend] backend @param [Hash] parameters @option parameters [String] transfer-method name of the transfer method @option parameters [String] transfer-destination destination fo the transfer method @return [Nifty::TransferMethod] instance of specified transfer method
# File lib/nifty/command_executioner.rb, line 227 def construct_transfer_method(backend, parameters) transfer_method_const = transfer_method_constant(backend, parameters[:"transfer-method"]) transfer_method_const.new(parameters[:"transfer-destination"], parameters) rescue Nifty::Errors::TransferMethodError => ex $stdout.puts ex.message exit Nifty::ExitCodes::TRANSFER_METHOD_ERROR_EXIT_CODE end
Inits logging according to the settings
@param [Hash] parameters @option parameters [String] logging-level @option parameters [String] logging-file file to log to @option parameters [TrueClass, FalseClass] debug debug mode @return [Type] description of returned object
# File lib/nifty/command_executioner.rb, line 181 def init_log(parameters) parameters[:"logging-level"] = 'DEBUG' if parameters[:debug] Yell.new :stdout, :name => Object, :level => parameters[:"logging-level"].downcase, :format => Yell::DefaultFormat Object.send :include, Yell::Loggable if parameters[:"logging-file"] unless (File.exist?(parameters[:"logging-file"]) && File.writable?(parameters[:"logging-file"])) || (File.writable?(File.dirname(parameters[:"logging-file"]))) logger.error "File #{parameters[:"logging-file"]} isn't writable" return end logger.adapter :file, parameters[:"logging-file"] end end
# File lib/nifty/command_executioner.rb, line 164 def migrate(backend, options) parameters = options.to_hash.deep_symbolize_keys init_log parameters backend = Nifty::Backends.const_get(backend.camelize) logger.debug "Selected backend '#{backend.inspect}'" exit backend.migrate(parameters) end
Starts NIFTY with selected backend
@param [String] backend backend's name @param [Hash] options options from command line
# File lib/nifty/command_executioner.rb, line 148 def start(backend, options) parameters = options.to_hash.deep_symbolize_keys init_log parameters backend = Nifty::Backends.const_get(backend.camelize) logger.debug "Selected backend '#{backend.inspect}'" transfer_method = construct_transfer_method(backend, parameters) logger.debug "Selected transfer method '#{transfer_method.inspect}'" logger.debug "Parameters: #{parameters}" processor = Nifty::Event::Processor.new(backend, transfer_method, parameters) exit processor.process_events end
Returns class representing transfer method of specified name
@param [Nifty::Backend] backend @param [String] transfer_method_name name of the transfer method @return [Nifty::TransferMethod] transfer method class
# File lib/nifty/command_executioner.rb, line 202 def transfer_method_constant(backend, transfer_method_name) transfer_methods = "Nifty::TransferMethods::#{backend.name.demodulize}".constantize backend_name = backend.name.demodulize.underscore error_msg = "No such transfer method '#{transfer_method_name}' for backend '#{backend_name}'" unless transfer_methods.constants.include?(transfer_method_name.camelize.to_sym) $stdout.puts error_msg exit Nifty::ExitCodes::NO_TRANSFER_METHOD_ERROR_EXIT_CODE end transfer_method = transfer_methods.const_get(transfer_method_name.camelize) unless transfer_method.respond_to?('backend') && transfer_method.backend == backend $stdout.puts error_msg exit end transfer_method end