[Groonga-commit] droonga/droonga-client-ruby at b5dc73e [master] Add droonga-groonga command as a shorthand

Back to archive index

YUKI Hiroshi yuki****@clear*****
Wed Apr 15 17:06:05 JST 2015


なるほど!
そういう理由でということは把握できておりませんでした。

Kouhei Sutou wrote:
> コマンドの実装なんですが、基本的に
> 
>> +      def run
> ...
>> +        exit(true)
>> +      end
> 
> というようにメソッドの中ではexitを呼ばずにtrue/falseだけを返
> して
> 
>> +Droonga::Command::Groonga.new.run
> 
> 呼び出し側で
> 
> exit(Droonga::Command::Groonga.new.run)
> 
> とする方がよいです。
> 
> これはあまり当てはまらないんですが、テストをするときにexitさ
> れるとテストしずらいとか、exitするライブラリーは行儀が悪い
> (終了するかどうかはライブラリーではなくアプリケーションが判
> 断するもの)という理由からです。
> 
> 
> In <b5dc73edd6094a04699f9d0f6778154e4ac028b9 �� jenkins.clear-code.com>
>    "[Groonga-commit] droonga/droonga-client-ruby �� b5dc73e [master] Add droonga-groonga command as a shorthand" on Wed, 15 Apr 2015 16:19:58 +0900,
>    YUKI Hiroshi <null+groonga �� clear-code.com> wrote:
> 
>> YUKI Hiroshi	2015-04-15 16:19:58 +0900 (Wed, 15 Apr 2015)
>>
>>    New Revision: b5dc73edd6094a04699f9d0f6778154e4ac028b9
>>    https://github.com/droonga/droonga-client-ruby/commit/b5dc73edd6094a04699f9d0f6778154e4ac028b9
>>
>>    Message:
>>      Add droonga-groonga command as a shorthand
>>
>>    Added files:
>>      bin/droonga-groonga
>>
>>    Added: bin/droonga-groonga (+78 -0) 100755
>> ===================================================================
>> --- /dev/null
>> +++ bin/droonga-groonga    2015-04-15 16:19:58 +0900 (64dc46f)
>> @@ -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
> 
> _______________________________________________
> Groonga-commit mailing list
> Groonga-commit �� lists.sourceforge.jp
> http://lists.sourceforge.jp/mailman/listinfo/groonga-commit
> 

-- 
結城 洋志 <YUKI Hiroshi>
E-mail: yuki �� clear-code.com

株式会社クリアコード
〒170-0005 東京都豊島区南大塚3-29-9
           中野ビル3階
TEL : 03-5927-9440
FAX : 03-5927-9441
WWW : http://www.clear-code.com/




More information about the Groonga-commit mailing list
Back to archive index