class Rabbit::Console

Public Class Methods

new(logger=nil) click to toggle source
# File lib/rabbit/console.rb, line 48
def initialize(logger=nil)
  @logger = logger || Logger.default
end

Public Instance Methods

get_last_name(klass) click to toggle source
# File lib/rabbit/console.rb, line 43
def get_last_name(klass)
  klass.name.split("::").last
end
parse!(args, logger=nil, &block) click to toggle source
# File lib/rabbit/console.rb, line 39
def parse!(args, logger=nil, &block)
  new(logger).parse!(args, &block)
end
read_options_file(parser, options, options_file) click to toggle source
# File lib/rabbit/console.rb, line 89
def read_options_file(parser, options, options_file)
  options_in_file = []
  File.open(options_file) do |file|
    file.each_line do |line|
      options_in_file.concat(Shellwords.split(line))
    end
  end
  source_info = parser.parse(options_in_file)

  source_info = source_info.collect do |path|
    if URI(path).scheme
      path
    else
      if Pathname(path).absolute?
        path
      else
        File.join(File.dirname(options_file), path)
      end
    end
  end
  options.rest.concat(source_info)
end

Private Instance Methods

banner() click to toggle source
output_info_and_exit(options, message) click to toggle source
# File lib/rabbit/console.rb, line 200
def output_info_and_exit(options, message)
  if options.logger.is_a?(Logger::STDERR) and
      options.default_logger == options.logger
    print(message)
  else
    options.logger.info(message)
  end
  exit
end
process_locale_options(args) click to toggle source
# File lib/rabbit/console.rb, line 117
def process_locale_options(args)
  args.each_with_index do |arg, i|
    if arg == @@locale_dir_option_name
      self.class.bindtextdomain(GetText::DOMAIN, :path => args[i + 1])
    elsif /#{@@locale_dir_option_name}=/ =~ arg
      self.class.bindtextdomain(GetText::DOMAIN, :path => $POSTMATCH)
    end
  end
end
setup_common_options(parser, options) click to toggle source
# File lib/rabbit/console.rb, line 127
def setup_common_options(parser, options)
  parser.separator ""
  parser.separator _("Common options")

  setup_options_options(parser, options)
  setup_locale_options(parser, options)
  setup_logger_options(parser, options)
  setup_common_options_on_tail(parser, options)
end
setup_common_options_on_tail(parser, options) click to toggle source
# File lib/rabbit/console.rb, line 190
def setup_common_options_on_tail(parser, options)
  parser.on_tail("--help", _("Show this message.")) do
    output_info_and_exit(options, parser.to_s)
  end

  parser.on_tail("--version", _("Show version.")) do
    output_info_and_exit(options, "#{options.version}\n")
  end
end
setup_locale_options(parser, options) click to toggle source
# File lib/rabbit/console.rb, line 147
def setup_locale_options(parser, options)
  parser.on("--locale-dir=DIR",
            _("Specify locale dir as [DIR]."),
            _("(auto)")) do |directory|
    self.class.bindtextdomain(GetText::DOMAIN, :path => directory)
  end

  parser.separator ""
end
setup_logger_options(parser, options) click to toggle source
# File lib/rabbit/console.rb, line 157
def setup_logger_options(parser, options)
  logger_type_names = Rabbit::Logger.types.collect do |x|
    get_last_name(x).downcase
  end

  parser.on("--logger-type=TYPE",
            logger_type_names,
            _("Specify logger type as [TYPE]."),
            _("Select from [%s].") % logger_type_names.join(', '),
            "(#{get_last_name(options.logger.class)})") do |logger_type|
    logger_class = Rabbit::Logger.types.find do |t|
      get_last_name(t).downcase == logger_type.downcase
    end
    if logger_class.nil?
      options.logger = options.default_logger
      # logger.error("Unknown logger type: #{t}")
    else
      options.logger = logger_class.new
    end
  end

  level_names = Logger::Severity.names
  parser.on("--log-level=LEVEL",
            level_names,
            _("Specify log level as [LEVEL]."),
            _("Select from [%s].") % level_names.join(', '),
            "(#{Logger::Severity.name(options.logger.level)})") do |name|
    options.logger.level = Logger::Severity.level(name)
  end

  parser.separator ""
end
setup_options_options(parser, options) click to toggle source
# File lib/rabbit/console.rb, line 137
def setup_options_options(parser, options)
  parser.on("--options-file=FILE",
            _("Load options from FILE."),
            _("(none)")) do |file|
    read_options_file(parser, options, file)
  end

  parser.separator ""
end