Sha256: 2b5ae6c7e8508611738676dda736cf892b37313fbc581fcdde5b4871d5e3c485
Contents?: true
Size: 1.33 KB
Versions: 5
Compression:
Stored size: 1.33 KB
Contents
require "optparse" class Ppl::Application::Shell attr_writer :router def run(input, output) outcome = false begin command = select_command(input) prepare_command(command, input) outcome = execute_command(command, input, output) rescue Ppl::Error::CompletionNotFound output.error("ppl: No completion function available for '#{$!}'") rescue Ppl::Error::ContactNotFound output.error("ppl: Contact '#{$!}' not found") rescue Ppl::Error::PostalAddressNotFound output.error("ppl: Postal address '#{$!}' not found") rescue OptionParser::InvalidOption, OptionParser::MissingArgument, Ppl::Error::IncorrectUsage output.error($!) output.error(@optparse.to_s) rescue output.error("ppl: " + $!.message) outcome = false end return outcome end private def select_command(input) @router.route(input.arguments.shift) end def prepare_command(command, input) if !command.nil? && !command.is_a?(Ppl::Command::External) @optparse = OptionParser.new do |parser| command.options(parser, input.options) end @optparse.parse!(input.arguments) end end def execute_command(command, input, output) outcome = false if !command.nil? outcome = command.execute(input, output) end return outcome end end
Version data entries
5 entries across 5 versions & 1 rubygems