sdbcli 0.1.6 → 0.1.7

Sign up to get free protection for your applications and to get access to all the features.
Files changed (4) hide show
  1. data/README +4 -0
  2. data/bin/sdbcli +127 -103
  3. data/lib/sdbcli/sdb-driver.rb +8 -1
  4. metadata +7 -5
data/README CHANGED
@@ -47,6 +47,10 @@ https://bitbucket.org/winebarrel/sdbcli
47
47
  ---
48
48
  - [itemname1, {attr1: val1, attr2: val2}]
49
49
  - [itemname2, {attr1: val1, attr2: val2}]
50
+
51
+ Attribute and domain names may appear without quotes if they contain only letters, numbers, underscores (_), or dollar symbols ($) and do not start with a number.
52
+ You must quote all other attribute and domain names with the backtick (`).
53
+ see http://docs.amazonwebservices.com/AmazonSimpleDB/latest/DeveloperGuide/QuotingRulesSelect.html
50
54
 
51
55
  ap-northeast-1> select * from test \G
52
56
  ---
data/bin/sdbcli CHANGED
@@ -1,103 +1,127 @@
1
- #!/usr/bin/env ruby
2
- $LOAD_PATH << File.join(File.expand_path(File.dirname(__FILE__)), '..', 'lib')
3
- Version = '0.1.6'
4
-
5
- require 'rubygems'
6
- require 'sdbcli'
7
-
8
- require 'optparse'
9
- require 'readline'
10
- require 'yaml'
11
-
12
- access_key_id = ENV['AWS_ACCESS_KEY_ID']
13
- secret_access_key = ENV['AWS_SECRET_ACCESS_KEY']
14
- sdb_endpoint = ENV['SDB_ENDPOINT'] || 'sdb.amazonaws.com'
15
-
16
- ARGV.options do |opt|
17
- opt.on('-k', '--access-key=ACCESS_KEY') {|v| access_key_id = v }
18
- opt.on('-s', '--secret-key=SECRET_KEY') {|v| secret_access_key = v }
19
- opt.on('-e', '--endpoint=ENDPOINT') {|v| sdb_endpoint = v }
20
- opt.parse!
21
-
22
- unless access_key_id and secret_access_key and sdb_endpoint
23
- puts opt.help
24
- exit 1
25
- end
26
- end
27
-
28
- $runner = SimpleDB::Runner.new(access_key_id, secret_access_key, sdb_endpoint)
29
-
30
- def execute(query)
31
- query = query.strip.sub(/\s*;\Z/, '')
32
- inline = true
33
-
34
- if query =~ /\s*\\G\Z/i
35
- query = query.sub(/\s*\\G\Z/i, '')
36
- inline = false
37
- end
38
-
39
- out = $runner.execute(query, inline)
40
-
41
- if out
42
- out = YAML.dump(out)
43
- out << "\n" unless out =~ /\n\n\Z/
44
- puts out
45
- end
46
- end
47
-
48
- unless $stdin.tty?
49
- execute($stdin.read)
50
- exit 0
51
- end
52
-
53
- if sdb_endpoint =~ /sdb\.([^.]+)\.amazonaws\.com/
54
- region = $1
55
- else
56
- region = 'us-east-1'
57
- end
58
-
59
- def help
60
- <<-EOS
61
- SHOW domains
62
- displays a domain list
63
-
64
- CREATE domain domain_name
65
- creates a domain
66
-
67
- DROP DOMAIN domain_name
68
- deletes a domain
69
-
70
- GET [attr_list] FROM domain_name WHERE itemName = '...'
71
- gets the attribute of an item
72
-
73
- INSERT INTO domain_name (itemName, attr1, ...) values ('name', 'val1', ...)
74
- creates an item
75
-
76
- UPDATE domain_name set attr1 = 'val1', ... where itemName = '...'
77
- updates an item
78
-
79
- DELETE [attr1, ...] FROM domain_name itemName = '...'
80
- deletes the attribute of an item or an item
81
-
82
- SELECT output_list FROM domain_name [where expression] [sort_instructions] [limit limit]
83
- queries using the SELECT statement
84
-
85
- EOS
86
- end
87
-
88
- while buf = Readline.readline("#{region}> ", true)
89
- begin
90
- case buf.downcase
91
- when 'help'
92
- puts help
93
- when 'exit', 'quit'
94
- exit
95
- when 'version'
96
- puts "sdbcli #{Version}"
97
- else
98
- execute(buf)
99
- end
100
- rescue => e
101
- puts e.message.strip
102
- end
103
- end
1
+ #!/usr/bin/env ruby
2
+ $LOAD_PATH << File.join(File.expand_path(File.dirname(__FILE__)), '..', 'lib')
3
+
4
+ Version = '0.1.6'
5
+ HISTORY_FILE = File.join((ENV['HOME'] || ENV['USERPROFILE'] || '.'), '.sdbcli_history')
6
+
7
+ require 'rubygems'
8
+ require 'sdbcli'
9
+
10
+ require 'optparse'
11
+ require 'readline'
12
+ require 'yaml'
13
+
14
+ access_key_id = ENV['AWS_ACCESS_KEY_ID']
15
+ secret_access_key = ENV['AWS_SECRET_ACCESS_KEY']
16
+ sdb_endpoint = ENV['SDB_ENDPOINT'] || 'sdb.amazonaws.com'
17
+
18
+ ARGV.options do |opt|
19
+ opt.on('-k', '--access-key=ACCESS_KEY') {|v| access_key_id = v }
20
+ opt.on('-s', '--secret-key=SECRET_KEY') {|v| secret_access_key = v }
21
+ opt.on('-e', '--endpoint=ENDPOINT') {|v| sdb_endpoint = v }
22
+ opt.parse!
23
+
24
+ unless access_key_id and secret_access_key and sdb_endpoint
25
+ puts opt.help
26
+ exit 1
27
+ end
28
+ end
29
+
30
+ $runner = SimpleDB::Runner.new(access_key_id, secret_access_key, sdb_endpoint)
31
+
32
+ def execute(query)
33
+ query = query.strip.sub(/\s*;\Z/, '')
34
+ inline = true
35
+
36
+ if query =~ /\s*\\G\Z/i
37
+ query = query.sub(/\s*\\G\Z/i, '')
38
+ inline = false
39
+ end
40
+
41
+ out = $runner.execute(query, inline)
42
+
43
+ if out
44
+ out = YAML.dump(out)
45
+ out << "\n" unless out =~ /\n\n\Z/
46
+ puts out
47
+ end
48
+ end
49
+
50
+ unless $stdin.tty?
51
+ execute($stdin.read)
52
+ exit 0
53
+ end
54
+
55
+ if sdb_endpoint =~ /sdb\.([^.]+)\.amazonaws\.com/
56
+ region = $1
57
+ else
58
+ region = 'us-east-1'
59
+ end
60
+
61
+ def help
62
+ <<-EOS
63
+ SHOW domains
64
+ displays a domain list
65
+
66
+ CREATE domain domain_name
67
+ creates a domain
68
+
69
+ DROP DOMAIN domain_name
70
+ deletes a domain
71
+
72
+ GET [attr_list] FROM domain_name WHERE itemName = '...'
73
+ gets the attribute of an item
74
+
75
+ INSERT INTO domain_name (itemName, attr1, ...) values ('name', 'val1', ...)
76
+ creates an item
77
+
78
+ UPDATE domain_name set attr1 = 'val1', ... where itemName = '...'
79
+ updates an item
80
+
81
+ DELETE [attr1, ...] FROM domain_name itemName = '...'
82
+ deletes the attribute of an item or an item
83
+
84
+ SELECT output_list FROM domain_name [where expression] [sort_instructions] [limit limit]
85
+ queries using the SELECT statement
86
+
87
+ EOS
88
+ end
89
+
90
+ if File.exist?(HISTORY_FILE)
91
+ open(HISTORY_FILE) do |f|
92
+ f.each_line do |line|
93
+ line = line.strip
94
+ Readline::HISTORY.push(line) unless line.empty?
95
+ end
96
+ end
97
+ end
98
+
99
+ at_exit do
100
+ unless Readline::HISTORY.empty?
101
+ open(HISTORY_FILE, 'a') do |f|
102
+ Readline::HISTORY.each do |line|
103
+ line = line.strip
104
+ f.puts line
105
+ end
106
+ end
107
+ end
108
+ end
109
+
110
+ while buf = Readline.readline("#{region}> ", true)
111
+ Readline::HISTORY.pop if /\A\s*\Z/ =~ buf
112
+
113
+ begin
114
+ case buf.downcase
115
+ when 'help'
116
+ puts help
117
+ when 'exit', 'quit'
118
+ exit
119
+ when 'version'
120
+ puts "sdbcli #{Version}"
121
+ else
122
+ execute(buf)
123
+ end
124
+ rescue => e
125
+ puts e.message.strip
126
+ end
127
+ end
@@ -4,6 +4,8 @@ module SimpleDB
4
4
  class Error < StandardError; end
5
5
 
6
6
  class Driver
7
+ attr_accessor :iteratable
8
+
7
9
  def initialize(accessKeyId, secretAccessKey, endpoint = 'sdb.amazonaws.com')
8
10
  @client = Client.new(accessKeyId, secretAccessKey, endpoint)
9
11
  end
@@ -157,7 +159,12 @@ module SimpleDB
157
159
  @params.update(:NextToken => @token.content) if @token != :first
158
160
  doc = @client.send(@method, @params)
159
161
  yield(doc)
160
- @token = doc.at_css('NextToken')
162
+
163
+ if @iteratable
164
+ @token = doc.at_css('NextToken')
165
+ else
166
+ @token = nil
167
+ end
161
168
  end
162
169
  end
163
170
  end # Iterator
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sdbcli
3
3
  version: !ruby/object:Gem::Version
4
- hash: 23
4
+ hash: 21
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 1
9
- - 6
10
- version: 0.1.6
9
+ - 7
10
+ version: 0.1.7
11
11
  platform: ruby
12
12
  authors:
13
13
  - winebarrel
@@ -15,7 +15,8 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2012-01-17 00:00:00 Z
18
+ date: 2012-01-17 00:00:00 +09:00
19
+ default_executable:
19
20
  dependencies:
20
21
  - !ruby/object:Gem::Dependency
21
22
  name: nokogiri
@@ -48,6 +49,7 @@ files:
48
49
  - lib/sdbcli/sdb-parser.y
49
50
  - lib/sdbcli/sdb-runner.rb
50
51
  - lib/sdbcli.rb
52
+ has_rdoc: true
51
53
  homepage: https://bitbucket.org/winebarrel/sdbcli
52
54
  licenses: []
53
55
 
@@ -77,7 +79,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
77
79
  requirements: []
78
80
 
79
81
  rubyforge_project:
80
- rubygems_version: 1.8.11
82
+ rubygems_version: 1.4.2
81
83
  signing_key:
82
84
  specification_version: 3
83
85
  summary: sdbcli is an interactive command-line client of Amazon SimpleDB.