From b5dc73edd6094a04699f9d0f6778154e4ac028b9 Mon Sep 17 00:00:00 2001 From: YUKI Hiroshi Date: Wed, 15 Apr 2015 16:19:58 +0900 Subject: [PATCH] Add droonga-groonga command as a shorthand --- bin/droonga-groonga | 78 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 78 insertions(+) create mode 100755 bin/droonga-groonga diff --git a/bin/droonga-groonga b/bin/droonga-groonga new file mode 100755 index 0000000..64dc46f --- /dev/null +++ b/bin/droonga-groonga @@ -0,0 +1,78 @@ +#!/usr/bin/env ruby +# +# Copyright (C) 2015 Droonga Project +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License version 2.1 as published by the Free Software Foundation. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# 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 "json" + +require "droonga/command/base" + +module Droonga + module Command + class Groonga < Base + def run + parse_options do |option| + option.banner("Usage: droonga-groonga [groonga-command-name] [options]") + option.banner(" ex: droonga-groonga select --table=Users") + + option.separator("Formatting:") + option.on(:pretty, + "Output result as a pretty print JSON.", + :default => false) + end + + groonga_command_name = ARGV.shift + groonga_message = { + "dataset" => @options[:dataset], + "type" => groonga_command_name, + "body" => build_params(ARGV), + } + + response = client.request(groonga_message) + body = response["body"] + + if @options[:pretty] + puts(JSON.pretty_generate(body)) + else + puts(JSON.generate(body)) + end + + exit(true) + end + + private + def build_params(argv) + params = {} + option_name = nil + argv.each do |arg| + case arg + when /\A--([^\s=]+)=(.+)\z/ + params[$1] = $2 + when /\A--([^\s=]+)\z/ + option_name = $1 + else + if option_name + params[option_name] = arg + option_name = nil + end + end + end + params + end + end + end +end + +Droonga::Command::Groonga.new.run