groonga-client 0.1.0 → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 24d9b067756feca3932e30fc97c2b30b51f164d1
4
- data.tar.gz: 007f34f0eb3767476411ef0cf30cf367fc4de47a
3
+ metadata.gz: 837550f5d3d1eeec4eb0e92880c66f897f40fd12
4
+ data.tar.gz: ffe2005c27525c1b162603c903551aac1bf0bfe8
5
5
  SHA512:
6
- metadata.gz: 67cff454d8de8faecb954f4151aa5187db57da7b0e087df24ab5d3da9221629e38a2a93151ec2a699482762c2e8240413eb0d4e739fa2c93b6c1d7f643f9dde7
7
- data.tar.gz: 66c4c1282b138064e7e6b2613f684d5448c65a155e3831670a94ac4ab045a9bbdac135c800d7082bb7d7349154b8d125df6a92e83e8e933ff0eeed9e10354508
6
+ metadata.gz: d301825f48a0157aadc8f7772e502514816057584af795abd71f9433e2e4aaf09b7a8379974533e2023f5560e0d50e33a370e9a469b1095e7a0bf54f291ca614
7
+ data.tar.gz: 14af40e9d242b61acb46f8ebe28886c4118a0b0a64a9920fb7e237a522c8909004ddcabed86e104740a214248f545b19e78ee40990195426feeff03ae2e272a7
@@ -0,0 +1,114 @@
1
+ #!/usr/bin/env ruby
2
+ # -*- mode: ruby -*-
3
+ #
4
+ # Copyright (C) 2015 Kouhei Sutou <kou@clear-code.com>
5
+ #
6
+ # This library is free software; you can redistribute it and/or
7
+ # modify it under the terms of the GNU Lesser General Public
8
+ # License as published by the Free Software Foundation; either
9
+ # version 2.1 of the License, or (at your option) any later version.
10
+ #
11
+ # This library is distributed in the hope that it will be useful,
12
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
13
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14
+ # Lesser General Public License for more details.
15
+ #
16
+ # You should have received a copy of the GNU Lesser General Public
17
+ # License along with this library; if not, write to the Free Software
18
+ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
19
+
20
+ require "ostruct"
21
+ require "optparse"
22
+ require "json"
23
+
24
+ require "groonga/command/parser"
25
+
26
+ require "groonga/client"
27
+
28
+ def default_port(protocol)
29
+ case protocol
30
+ when :http
31
+ 10041
32
+ when :gqtp
33
+ 10043
34
+ end
35
+ end
36
+
37
+ def run_command(client, command)
38
+ response = client.execute(command)
39
+ case command.output_type
40
+ when :json
41
+ puts(JSON.pretty_generate([response.header, response.body]))
42
+ when :xml
43
+ puts(response.raw)
44
+ else
45
+ puts(response.body)
46
+ end
47
+ end
48
+
49
+ options = OpenStruct.new
50
+ options.protocol = :http
51
+ options.host = "localhost"
52
+ options.port = nil
53
+
54
+ parser = OptionParser.new
55
+ parser.version = Groonga::Client::VERSION
56
+ parser.banner += " GROONGA_COMMAND_FILE1 GROONGA_COMMAND_FILE2 ..."
57
+ parser.separator("")
58
+ parser.separator("Connection:")
59
+ available_protocols = [:http, :gqtp]
60
+ parser.on("--protocol=PROTOCOL", [:http, :gqtp],
61
+ "Protocol to connect to Groonga server.",
62
+ "[#{available_protocols.join(", ")}]",
63
+ "(#{options.protocol})") do |protocol|
64
+ options.protocol = protocol
65
+ end
66
+ parser.on("--host=HOST",
67
+ "Groonga server to be connected.",
68
+ "(#{options.host})") do |host|
69
+ options.host = host
70
+ end
71
+ parser.on("--port=PORT", Integer,
72
+ "Port number of Groonga server to be connected.",
73
+ "(auto)") do |port|
74
+ options.port = port
75
+ end
76
+ command_file_paths = parser.parse!(ARGV)
77
+
78
+ options.port ||= default_port(options.protocol)
79
+
80
+ client = Groonga::Client.new(:protocol => options.protocol,
81
+ :host => options.host,
82
+ :port => options.port,
83
+ :backend => :synchronous)
84
+ parser = Groonga::Command::Parser.new
85
+ parser.on_command do |command|
86
+ run_command(client, command)
87
+ end
88
+
89
+ parser.on_load_columns do |command, columns|
90
+ command[:columns] ||= columns.join(",")
91
+ end
92
+ values = []
93
+ parser.on_load_value do |_, value|
94
+ values << value
95
+ end
96
+ parser.on_load_complete do |command|
97
+ command[:values] ||= Yajl::Encoder.encode(values)
98
+ run_command(client, command)
99
+ values.clear
100
+ end
101
+
102
+ if command_file_paths.empty?
103
+ $stdin.each_line do |line|
104
+ parser << line
105
+ end
106
+ else
107
+ command_file_paths.each do |command_file_path|
108
+ File.open(command_file_path) do |command_file|
109
+ command_file.each_line do |line|
110
+ parser << line
111
+ end
112
+ end
113
+ end
114
+ end
data/doc/text/news.md CHANGED
@@ -1,5 +1,12 @@
1
1
  # NEWS
2
2
 
3
+ ## 0.1.1 - 2015-04-20
4
+
5
+ ### Improvements
6
+
7
+ * groonga-client: Add a command that sends Groonga commands to a
8
+ Groonga server.
9
+
3
10
  ## 0.1.0 - 2014-11-05
4
11
 
5
12
  ### Improvements
@@ -1,7 +1,7 @@
1
1
  # -*- mode: ruby; coding: utf-8 -*-
2
2
  #
3
3
  # Copyright (C) 2013 Haruka Yoshihara <yoshihara@clear-code.com>
4
- # Copyright (C) 2014 Kouhei Sutou <kou@clear-code.com>
4
+ # Copyright (C) 2014-2015 Kouhei Sutou <kou@clear-code.com>
5
5
  #
6
6
  # This library is free software; you can redistribute it and/or
7
7
  # modify it under the terms of the GNU Lesser General Public
@@ -43,12 +43,13 @@ Gem::Specification.new do |spec|
43
43
  spec.files += Dir.glob("lib/**/*.rb")
44
44
  spec.files += Dir.glob("doc/text/*")
45
45
  spec.test_files += Dir.glob("test/**/*")
46
- # Dir.chdir("bin") do
47
- # spec.executables = Dir.glob("*")
48
- # end
46
+ Dir.chdir("bin") do
47
+ spec.executables = Dir.glob("*")
48
+ end
49
49
 
50
50
  spec.add_runtime_dependency("gqtp", ">= 1.0.4")
51
51
  spec.add_runtime_dependency("groonga-command", ">= 1.0.8")
52
+ spec.add_runtime_dependency("groonga-command-parser")
52
53
 
53
54
  spec.add_development_dependency("bundler")
54
55
  spec.add_development_dependency("rake")
@@ -97,7 +97,8 @@ module Groonga
97
97
  command[:values] = raw_values
98
98
  request = Net::HTTP::Post.new(path, headers)
99
99
  request.content_type = "application/json"
100
- request.body = raw_values
100
+ request.content_length = raw_values.bytesize
101
+ request.body_stream = StringIO.new(raw_values)
101
102
  http.request(request)
102
103
  else
103
104
  http.get(command.to_uri_format, headers)
@@ -18,6 +18,6 @@
18
18
 
19
19
  module Groonga
20
20
  class Client
21
- VERSION = "0.1.0"
21
+ VERSION = "0.1.1"
22
22
  end
23
23
  end
@@ -4,9 +4,34 @@ class TestResponseTableList < Test::Unit::TestCase
4
4
  include TestResponseHelper
5
5
 
6
6
  def test_table_list
7
- header = [0,1372430096.70991,0.000522851943969727]
8
- body = [[["id","UInt32"],["name","ShortText"],["path","ShortText"],["flags","ShortText"],["domain","ShortText"],["range","ShortText"],["default_tokenizer","ShortText"],["normalizer","ShortText"]],
9
- [256,"Test","/tmp/test.db.0000100","TABLE_HASH_KEY|PERSISTENT",nil,nil,nil,nil]]
7
+ header = [
8
+ 0,
9
+ 1372430096.70991,
10
+ 0.000522851943969727,
11
+ ]
12
+ columns = [
13
+ ["id", "UInt32"],
14
+ ["name", "ShortText"],
15
+ ["path", "ShortText"],
16
+ ["flags", "ShortText"],
17
+ ["domain", "ShortText"],
18
+ ["range", "ShortText"],
19
+ ["default_tokenizer", "ShortText"],
20
+ ["normalizer", "ShortText"],
21
+ ]
22
+ body = [
23
+ columns,
24
+ [
25
+ 256,
26
+ "Test",
27
+ "/tmp/test.db.0000100",
28
+ "TABLE_HASH_KEY|PERSISTENT",
29
+ nil,
30
+ nil,
31
+ nil,
32
+ nil,
33
+ ],
34
+ ]
10
35
  raw_response = [header, body].to_json
11
36
 
12
37
  response = parse_raw_response("table_list", raw_response)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: groonga-client
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Haruka Yoshihara
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2014-11-05 00:00:00.000000000 Z
13
+ date: 2015-04-20 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: gqtp
@@ -40,6 +40,20 @@ dependencies:
40
40
  - - ">="
41
41
  - !ruby/object:Gem::Version
42
42
  version: 1.0.8
43
+ - !ruby/object:Gem::Dependency
44
+ name: groonga-command-parser
45
+ requirement: !ruby/object:Gem::Requirement
46
+ requirements:
47
+ - - ">="
48
+ - !ruby/object:Gem::Version
49
+ version: '0'
50
+ type: :runtime
51
+ prerelease: false
52
+ version_requirements: !ruby/object:Gem::Requirement
53
+ requirements:
54
+ - - ">="
55
+ - !ruby/object:Gem::Version
56
+ version: '0'
43
57
  - !ruby/object:Gem::Dependency
44
58
  name: bundler
45
59
  requirement: !ruby/object:Gem::Requirement
@@ -147,7 +161,8 @@ email:
147
161
  - yshr04hrk@gmail.com
148
162
  - kou@clear-code.com
149
163
  - tfortress58@gmail.com
150
- executables: []
164
+ executables:
165
+ - groonga-client
151
166
  extensions: []
152
167
  extra_rdoc_files: []
153
168
  files:
@@ -155,6 +170,7 @@ files:
155
170
  - Gemfile
156
171
  - README.md
157
172
  - Rakefile
173
+ - bin/groonga-client
158
174
  - doc/text/news.md
159
175
  - groonga-client.gemspec
160
176
  - lib/groonga/client.rb