module AstroboaCLI::Command
Public Class Methods
commands()
click to toggle source
# File lib/astroboa-cli/command.rb, line 62 def self.commands @@commands ||= {} end
current_args()
click to toggle source
# File lib/astroboa-cli/command.rb, line 70 def self.current_args @current_args end
current_command()
click to toggle source
# File lib/astroboa-cli/command.rb, line 66 def self.current_command @current_command end
current_options()
click to toggle source
# File lib/astroboa-cli/command.rb, line 74 def self.current_options @current_options end
global_option(name, *args)
click to toggle source
# File lib/astroboa-cli/command.rb, line 82 def self.global_option(name, *args) global_options << { :name => name, :args => args } end
global_options()
click to toggle source
# File lib/astroboa-cli/command.rb, line 78 def self.global_options @global_options ||= [] end
load()
click to toggle source
# File lib/astroboa-cli/command.rb, line 39 def self.load Dir[File.join(File.dirname(__FILE__), "command", "*.rb")].each do |file| require file end @@log_file = '/tmp/astroboa-cli-log.txt' f = File.new(@@log_file, 'w+', 0644) @@log = Logger.new(f) @@log.level = Logger::INFO end
log()
click to toggle source
# File lib/astroboa-cli/command.rb, line 50 def self.log @@log end
log_file()
click to toggle source
# File lib/astroboa-cli/command.rb, line 54 def self.log_file @@log_file end
map_command_to_method(cmd, args=[])
click to toggle source
# File lib/astroboa-cli/command.rb, line 96 def self.map_command_to_method(cmd, args=[]) command = commands[cmd] unless command if %w( -v --version ).include?(cmd) display AstroboaCLI::VERSION exit end output_with_bang("`#{cmd}` is not an astroboa command.") output_with_bang("run `astroboa-cli help` to see available commands.") exit 1 end @current_command = cmd opts = {} invalid_options = [] parser = OptionParser.new do |parser| global_options.each do |global_option| parser.on(*global_option[:args]) do |value| opts[global_option[:name]] = value end end command[:options].each do |name, option| parser.on("-#{option[:short]}", "--#{option[:long]}", option[:desc]) do |value| opts[name.gsub("-", "_").to_sym] = value end end end begin parser.order!(args) do |nonopt| invalid_options << nonopt end rescue OptionParser::InvalidOption => ex invalid_options << ex.args.first retry end raise OptionParser::ParseError if opts[:help] args.concat(invalid_options) @current_args = args @current_options = opts [ command[:klass].new(args.dup, opts.dup), command[:method] ] end
namespaces()
click to toggle source
# File lib/astroboa-cli/command.rb, line 58 def self.namespaces @@namespaces ||= {} end
register_command(command)
click to toggle source
# File lib/astroboa-cli/command.rb, line 88 def self.register_command(command) commands[command[:command]] = command end
register_namespace(namespace)
click to toggle source
# File lib/astroboa-cli/command.rb, line 92 def self.register_namespace(namespace) namespaces[namespace[:name]] = namespace end
run(command, arguments=[])
click to toggle source
# File lib/astroboa-cli/command.rb, line 149 def self.run(command, arguments=[]) object, method = map_command_to_method(command, arguments.dup) object.send(method) rescue => e error "An error has occured \n#{e.inspect}\n#{e.backtrace}" end