class Groonga::Client::CommandLine::GroongaClient
Public Class Methods
new()
click to toggle source
# File lib/groonga/client/command-line/groonga-client.rb, line 36 def initialize @chunk = false @load_input_type = "json" @available_load_input_types = ["json"] if Object.const_defined?(:Arrow) @available_load_input_types << "apache-arrow" end @load_lock_table = false @runner_options = { :split_load_chunk_size => 10000, :generate_request_id => false, :target_commands => [], :target_tables => [], :target_columns => [], } end
Public Instance Methods
run(arguments)
click to toggle source
# File lib/groonga/client/command-line/groonga-client.rb, line 54 def run(arguments) parser = Parser.new command_file_paths = parser.parse(arguments) do |option_parser| parse_command_line(option_parser) end parser.open_client(:chunk => @chunk, :load_input_type => @load_input_type, :load_lock_table => @load_lock_table) do |client| runner = Runner.new(client, @runner_options) if command_file_paths.empty? if $stdin.tty? and $stdout.tty? begin require "readline" rescue LoadError repl = BareREPL.new(runner) else repl = ReadlineREPL.new(runner) end repl.run else runner.consume($stdin) end else command_file_paths.each do |command_file_path| runner.load(command_file_path) end end runner.finish end true end
Private Instance Methods
add_target(targets, target)
click to toggle source
# File lib/groonga/client/command-line/groonga-client.rb, line 156 def add_target(targets, target) if /\A\\(.+?)\\(i)?\z/ =~ target pattern = Regexp.new($1, $2 == "i") targets << pattern else targets << target end end
parse_command_line(parser)
click to toggle source
# File lib/groonga/client/command-line/groonga-client.rb, line 90 def parse_command_line(parser) parser.banner += " GROONGA_COMMAND_FILE1 GROONGA_COMMAND_FILE2 ..." parser.separator("") parser.separator("Request:") parser.on("--split-load-chunk-size=SIZE", Integer, "Split a large load to small loads.", "Each small load has at most SIZE records.", "Set 0 to SIZE to disable this feature.", "(#{@runner_options[:split_load_chunk_size]})") do |size| @runner_options[:split_load_chunk_size] = size end parser.on("--load-input-type=TYPE", @available_load_input_types, "Use TYPE as input type for load.", "[#{@available_load_input_types.join(", ")}]", "(#{@load_input_types})") do |type| @load_input_type = type end parser.on("--[no-]load-lock-table", "Use lock_table=yes for load.", "(#{@load_lock_table})") do |boolean| @load_lock_table = boolean end parser.on("--[no-]generate-request-id", "Add auto generated request ID to all commands.", "(#{@runner_options[:generate_request_id]})") do |boolean| @runner_options[:generate_request_id] = boolean end parser.on("--[no-]chunk", "Use \"Transfer-Encoding: chunked\" for load command.", "HTTP only.", "(#{@chunk})") do |boolean| @chunk = boolean end parser.on("--target-command=COMMAND", "Add COMMAND as target commands", "You can specify multiple times", "If COMMAND is /.../,", "it's treated as a regular expression") do |command| add_target(@runner_options[:target_commands], command) end parser.on("--target-table=TABLE", "Add TABLE as target tables", "You can specify multiple times", "If TABLE is /.../,", "it's treated as a regular expression") do |table| add_target(@runner_options[:target_tables], table) end parser.on("--target-column=COLUMN", "Add COLUMN as target columns", "You can specify multiple times", "If COLUMN is /.../,", "it's treated as a regular expression") do |column| add_target(@runner_options[:target_columns], column) end end