Navigation Menu

Skip to content

Commit

Permalink
Extract common code
Browse files Browse the repository at this point in the history
  • Loading branch information
kou committed Oct 27, 2017
1 parent b6b48e1 commit 468e196
Show file tree
Hide file tree
Showing 4 changed files with 140 additions and 187 deletions.
51 changes: 9 additions & 42 deletions lib/groonga/client/command-line/groonga-client-index-check.rb
Expand Up @@ -15,53 +15,43 @@
# License along with this library; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA

require "optparse"

require "groonga/client"
require "groonga/client/command-line/parser"

module Groonga
class Client
module CommandLine
class GroongaClientIndexCheck
def initialize
@url = nil
@protocol = :http
@host = "localhost"
@port = 10041

@available_methods = [:source, :content]
@methods = []
end

def run(argv)
targets = parse_command_line(argv)
def run(arguments)
parser = Parser.new
indexes = parser.parse(arguments) do |option_parser|
parse_command_line(option_parser)
end

if @methods.empty?
@methods = @available_methods
end

Client.open(:url => @url,
:protocol => @protocol,
:host => @host,
:port => @port,
:backend => :synchronous) do |client|
checker = Checker.new(client, @methods, targets)
parser.open_client do |client|
checker = Checker.new(client, @methods, indexes)
checker.check
end
end

private
def parse_command_line(argv)
parser = OptionParser.new
parser.version = VERSION
def parse_command_line(parser)
parser.banner += " [LEXICON1.INDEX1 LEXICON2.INDEX2 ...]"

parser.separator("")
parser.separator("If no indexes are specified, " +
"all indexes are checked.")

parser.separator("")

parser.separator("Method:")

parser.on("--method=METHOD", @available_methods,
Expand All @@ -75,29 +65,6 @@ def parse_command_line(argv)
"(#{@available_methods.join(", ")})") do |method|
@methods << method
end

parser.separator("Connection:")

parser.on("--url=URL",
"URL to connect to Groonga server.",
"If this option is specified,",
"--protocol, --host and --port are ignored.") do |url|
@url = url
end

parser.on("--host=HOST",
"Groonga server to be connected.",
"(#{@host})") do |host|
@host = host
end

parser.on("--port=PORT", Integer,
"Port number of Groonga server to be connected.",
"(auto)") do |port|
@port = port
end

parser.parse(argv)
end

class Checker
Expand Down
81 changes: 9 additions & 72 deletions lib/groonga/client/command-line/groonga-client-index-recreate.rb
Expand Up @@ -14,38 +14,29 @@
# License along with this library; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA

require "optparse"
require "json"

require "groonga/client"
require "groonga/client/command-line/parser"

module Groonga
class Client
module CommandLine
class GroongaClientIndexRecreate
def initialize
@url = nil
@protocol = :http
@host = "localhost"
@port = nil

@read_timeout = -1

@interval = :day

@n_workers = 0
end

def run(argv)
target_indexes = parse_command_line(argv)
def run(arguments)
parser = Parser.new(:read_timeout => -1)
indexes = parser.parse(arguments) do |option_parser|
parse_command_line(option_parser)
end

Client.open(:url => @url,
:protocol => @protocol,
:host => @host,
:port => @port,
:read_timeout => @read_timeout,
:backend => :synchronous) do |client|
runner = Runner.new(client, @interval, target_indexes)
parser.open_client do |client|
runner = Runner.new(client, @interval, indexes)
runner.run do
@n_workers.times do
client.database_unmap
Expand All @@ -55,48 +46,9 @@ def run(argv)
end

private
def parse_command_line(argv)
parser = OptionParser.new
parser.version = VERSION
def parse_command_line(parser)
parser.banner += " LEXICON1.INDEX1 LEXICON2.INDEX2 ..."

parser.separator("")
parser.separator("Connection:")

parser.on("--url=URL",
"URL to connect to Groonga server.",
"If this option is specified,",
"--protocol, --host and --port are ignored.") do |url|
@url = url
end

available_protocols = [:http, :gqtp]
parser.on("--protocol=PROTOCOL", [:http, :gqtp],
"Protocol to connect to Groonga server.",
"[#{available_protocols.join(", ")}]",
"(#{@protocol})") do |protocol|
@protocol = protocol
end

parser.on("--host=HOST",
"Groonga server to be connected.",
"(#{@host})") do |host|
@host = host
end

parser.on("--port=PORT", Integer,
"Port number of Groonga server to be connected.",
"(auto)") do |port|
@port = port
end

parser.on("--read-timeout=TIMEOUT", Integer,
"Timeout on reading response from Groonga server.",
"You can disable timeout by specifying -1.",
"(#{@read_timeout})") do |timeout|
@read_timeout = timeout
end

parser.separator("")
parser.separator("Configuration:")

Expand All @@ -117,21 +69,6 @@ def parse_command_line(argv)
"(#{@n_workers})") do |n|
@n_workers = n
end

target_indexes = parser.parse(argv)

@port ||= default_port(@protocol)

target_indexes
end

def default_port(protocol)
case protocol
when :http
10041
when :gqtp
10043
end
end

class Runner
Expand Down
84 changes: 11 additions & 73 deletions lib/groonga/client/command-line/groonga-client.rb
Expand Up @@ -14,26 +14,19 @@
# License along with this library; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA

require "optparse"
require "json"
require "securerandom"

require "groonga/client"

require "groonga/command/parser"

require "groonga/client"
require "groonga/client/command-line/parser"

module Groonga
class Client
module CommandLine
class GroongaClient
def initialize
@url = nil
@protocol = :http
@host = "localhost"
@port = nil

@read_timeout = Client::Default::READ_TIMEOUT

@chunk = false

@runner_options = {
Expand All @@ -42,16 +35,13 @@ def initialize
}
end

def run(argv)
command_file_paths = parse_command_line(argv)
def run(arguments)
parser = Parser.new
command_file_paths = parser.parse(arguments) do |option_parser|
parse_command_line(option_parser)
end

Client.open(:url => @url,
:protocol => @protocol,
:host => @host,
:port => @port,
:read_timeout => @read_timeout,
:chunk => @chunk,
:backend => :synchronous) do |client|
parser.open_client(:chunk => @chunk) do |client|
runner = Runner.new(client, @runner_options)

if command_file_paths.empty?
Expand Down Expand Up @@ -79,48 +69,11 @@ def run(argv)
end

private
def parse_command_line(argv)
parser = OptionParser.new
parser.version = VERSION
def parse_command_line(parser)
parser.banner += " GROONGA_COMMAND_FILE1 GROONGA_COMMAND_FILE2 ..."

parser.separator("")

parser.separator("Connection:")

parser.on("--url=URL",
"URL to connect to Groonga server.",
"If this option is specified,",
"--protocol, --host and --port are ignored.") do |url|
@url = url
end

available_protocols = [:http, :gqtp]
parser.on("--protocol=PROTOCOL", [:http, :gqtp],
"Protocol to connect to Groonga server.",
"[#{available_protocols.join(", ")}]",
"(#{@protocol})") do |protocol|
@protocol = protocol
end

parser.on("--host=HOST",
"Groonga server to be connected.",
"(#{@host})") do |host|
@host = host
end

parser.on("--port=PORT", Integer,
"Port number of Groonga server to be connected.",
"(auto)") do |port|
@port = port
end

parser.on("--read-timeout=TIMEOUT", Integer,
"Timeout on reading response from Groonga server.",
"You can disable timeout by specifying -1.",
"(#{@read_timeout})") do |timeout|
@read_timeout = timeout
end
parser.separator("Request:")

parser.on("--split-load-chunk-size=SIZE", Integer,
"Split a large load to small loads.",
Expand All @@ -142,21 +95,6 @@ def parse_command_line(argv)
"(#{@chunk})") do |boolean|
@chunk = boolean
end

command_file_paths = parser.parse(argv)

@port ||= default_port(@protocol)

command_file_paths
end

def default_port(protocol)
case protocol
when :http
10041
when :gqtp
10043
end
end

class Runner
Expand Down

0 comments on commit 468e196

Please sign in to comment.