class GrnLine::OptionsParser

Constants

SEPARATOR

Public Class Methods

new() click to toggle source
# File lib/grnline/options-parser.rb, line 10
def initialize
  @options = OpenStruct.new
  @options.groonga = "groonga"
  @options.pager = "less"
  @options.groonga_arguments = []
  @options.output = $stdout
  @options.use_pretty_print = true
end

Public Instance Methods

generate_parser() click to toggle source
# File lib/grnline/options-parser.rb, line 46
def generate_parser
  parser = OptionParser.new
  banner = "Usage: #{$0} [groonga_options] -- [grnline_options]\n" +
             "      'groonga_options' is options for groonga. " +
             "Please type `groonga --help` for the details of them.\n" +
             " grnline_options :"
  parser.banner = banner

  parser.on("-g", "--groonga=GROONGA",
            "your groonga.",
            "(#{@options.groonga})") do |groonga|
    @options.groonga = groonga
  end

  parser.on("-p", "--[no-]pretty-print",
            "Pretty print responses from groonga.",
            "(#{@options.use_pretty_print})") do |use_pretty_print|
    @options.use_pretty_print = use_pretty_print
  end

  # TODO: supports pager for displaying results from groonga
  # parser.on("-p", "--pager=PAGER",
  #           "your pager using to display results.") do |pager|
  #   @options.pager = pager
  # end

  parser.on("--output=OUTPUT",
            "Destination to output responses from groonga.",
            "(STDOUT)") do |output|
    @options.output = output
  end

  parser.on("-v", "--version", "Show version and exit.") do
    puts(GrnLine::VERSION)
    exit(true)
  end

  parser.on_tail("-h", "--help", "Show this message and exit.") do
    puts(parser.help)
    exit(true)
  end

  parser
end
parse(argv) click to toggle source
# File lib/grnline/options-parser.rb, line 19
def parse(argv)
  parser = generate_parser

  if not argv.include?(SEPARATOR)
    @options.groonga_arguments = argv
  else
    grnline_arguments, groonga_arguments = split_arguments(argv)

    parser.parse!(grnline_arguments)
    @options.groonga_arguments = groonga_arguments
  end
  @options
end
split_arguments(argv) click to toggle source
# File lib/grnline/options-parser.rb, line 33
def split_arguments(argv)
  grnline_arguments = []
  groonga_arguments = []
  separator_index = argv.index(SEPARATOR)

  unless separator_index.zero?
    groonga_arguments = argv[0 .. (separator_index - 1)]
  end
  grnline_arguments = argv[(separator_index + 1) .. -1]

  [grnline_arguments, groonga_arguments]
end