class Mmtrix::Cli::Command
Attributes
leftover[RW]
Public Class Methods
inherited(subclass)
click to toggle source
# File lib/mmtrix/cli/command.rb, line 50 def self.inherited(subclass) @commands << subclass end
new(command_line_args)
click to toggle source
# File lib/mmtrix/cli/command.rb, line 32 def initialize(command_line_args) if Hash === command_line_args # command line args is an options hash command_line_args.each do | key, value | instance_variable_set "@#{key}", value.to_s if value end else # parse command line args. Throw an exception on a bad arg. @options = options do | opts | opts.on("-h", "Show this help") { raise CommandFailure, opts.to_s } end @leftover = @options.parse(command_line_args) end rescue OptionParser::ParseError => e raise CommandFailure.new(e.message, @options) end
run()
click to toggle source
# File lib/mmtrix/cli/command.rb, line 57 def self.run @command_names = @commands.map{ |c| c.command } extra = [] options = ARGV.options do |opts| script_name = File.basename($0) if script_name =~ /mmtrix_cmd$/ $stdout.puts "warning: the 'mmtrix_cmd' script has been renamed 'mmtrix'" script_name = 'mmtrix' end opts.banner = "Usage: #{script_name} [ #{ @command_names.join(" | ")} ] [options]" opts.separator "use '#{script_name} <command> -h' to see detailed command options" opts end extra = options.order! command = extra.shift # just make it a little easier on them command = 'deployments' if command =~ /deploy/ if command.nil? STDERR.puts options elsif !@command_names.include?(command) STDERR.puts "Unrecognized command: #{command}" STDERR.puts options else command_class = @commands.find{ |c| c.command == command} command_class.new(extra).run end rescue OptionParser::InvalidOption => e raise Mmtrix::Cli::Command::CommandFailure, e.message end
Public Instance Methods
err(message)
click to toggle source
# File lib/mmtrix/cli/command.rb, line 28 def err(message) STDERR.puts message end
info(message)
click to toggle source
# File lib/mmtrix/cli/command.rb, line 24 def info(message) STDOUT.puts message end