sdbcli 1.0.0 → 1.0.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.
data/README CHANGED
@@ -18,6 +18,7 @@ https://bitbucket.org/winebarrel/sdbcli
18
18
  -r, --region=REGION
19
19
  -e, --eval=COMMAND
20
20
  -f, --format=YAML_OR_JSON
21
+ -c, --consistent
21
22
  shell> export AWS_ACCESS_KEY_ID='...'
22
23
  shell> export AWS_SECRET_ACCESS_KEY='...'
23
24
  shell> export SDB_ENDPOINT='sdb.ap-northeast-1.amazonaws.com' # or SDB_REGION=ap-northeast-1
@@ -76,10 +77,11 @@ https://bitbucket.org/winebarrel/sdbcli
76
77
 
77
78
  # List of commands
78
79
 
79
- .help displays this message
80
- .quit | .exit exits sdbcli
81
- .format (yaml|json)? displays a format or changes it
82
- .version displays a version
80
+ .help displays this message
81
+ .quit | .exit exits sdbcli
82
+ .format (yaml|json)? displays a format or changes it
83
+ .consistent (true|false)? displays ConsistentRead parameter or changes it
84
+ .version displays a version
83
85
 
84
86
  ap-northeast-1> select * from test;
85
87
  ---
data/bin/sdbcli CHANGED
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env ruby
2
2
  $LOAD_PATH << File.join(File.dirname(__FILE__), '..', 'lib')
3
3
 
4
- Version = '1.0.0'
4
+ Version = '1.0.1'
5
5
  HISTORY_FILE = File.join((ENV['HOME'] || ENV['USERPROFILE'] || '.'), '.sdbcli_history')
6
6
  HISTSIZE = 500
7
7
 
@@ -20,6 +20,7 @@ secret_access_key = ENV['AWS_SECRET_ACCESS_KEY']
20
20
  sdb_endpoint = ENV['SDB_ENDPOINT'] || ENV['SDB_REGION'] || 'sdb.amazonaws.com'
21
21
  command = nil
22
22
  $format = :yaml
23
+ $consistent = false
23
24
 
24
25
  ARGV.options do |opt|
25
26
  opt.on('-k', '--access-key=ACCESS_KEY') {|v| access_key_id = v }
@@ -27,6 +28,7 @@ ARGV.options do |opt|
27
28
  opt.on('-r', '--region=REGION') {|v| sdb_endpoint = v }
28
29
  opt.on('-e', '--eval=COMMAND') {|v| command = v }
29
30
  opt.on('-f', '--format=YAML_OR_JSON', [:yaml, :json]) {|v| $format = v }
31
+ opt.on('-c', '--consistent') { $consistent = true }
30
32
  opt.parse!
31
33
 
32
34
  unless access_key_id and secret_access_key and sdb_endpoint
@@ -85,7 +87,7 @@ def execute(src, show_rows = false)
85
87
  next
86
88
  end
87
89
 
88
- out = $runner.execute(query, inline)
90
+ out = $runner.execute(query, inline, $consistent)
89
91
 
90
92
  if out.kind_of?(Integer)
91
93
  puts case $format
@@ -196,10 +198,11 @@ USE region_or_endpoint
196
198
 
197
199
  # List of commands
198
200
 
199
- .help displays this message
200
- .quit | .exit exits sdbcli
201
- .format (yaml|json)? displays a format or changes it
202
- .version displays a version
201
+ .help displays this message
202
+ .quit | .exit exits sdbcli
203
+ .format (yaml|json)? displays a format or changes it
204
+ .consistent (true|false)? displays ConsistentRead parameter or changes it
205
+ .version displays a version
203
206
 
204
207
  EOS
205
208
  end
@@ -254,6 +257,17 @@ while buf = Readline.readline(prompt, true)
254
257
  else
255
258
  output_error('Unknown format')
256
259
  end
260
+ elsif r =~ 'consistent'
261
+ case (arg || '').strip
262
+ when ''
263
+ puts $consistent
264
+ when 'true'
265
+ $consistent = true
266
+ when 'false'
267
+ $consistent = false
268
+ else
269
+ output_error('Invalid argument')
270
+ end
257
271
  elsif r =~ 'version'
258
272
  puts "sdbcli #{Version}"
259
273
  else
@@ -44,9 +44,9 @@ module SimpleDB
44
44
 
45
45
  # attr action
46
46
 
47
- def insert(domain_name, items = {}, consistent = false)
47
+ def insert(domain_name, items = {})
48
48
  until (chunk = items.slice!(0, MAX_NUMBER_SUBMITTED_ITEMS)).empty?
49
- params = {:ConsistentRead => consistent}
49
+ params = {}
50
50
  i = j = 0
51
51
 
52
52
  chunk.each do |item_name, attrs|
@@ -67,9 +67,9 @@ module SimpleDB
67
67
  end
68
68
  end
69
69
 
70
- def update(domain_name, items = {}, consistent = false)
70
+ def update(domain_name, items = {})
71
71
  until (chunk = items.slice!(0, MAX_NUMBER_SUBMITTED_ITEMS)).empty?
72
- params = {:ConsistentRead => consistent}
72
+ params = {}
73
73
  i = j = 0
74
74
 
75
75
  chunk.each do |item_name, attrs|
@@ -110,9 +110,8 @@ module SimpleDB
110
110
  return items
111
111
  end
112
112
 
113
- def delete(domain_name, items = {}, consistent = false)
113
+ def delete(domain_name, items = {})
114
114
  until (chunk = items.slice!(0, MAX_NUMBER_SUBMITTED_ITEMS)).empty?
115
- params = {:ConsistentRead => consistent}
116
115
  i = j = 0
117
116
 
118
117
  chunk.each do |item_name, attrs|
@@ -34,13 +34,13 @@ module SimpleDB
34
34
  REGIONS[endpoint]
35
35
  end
36
36
 
37
- def execute(query, inline = true)
37
+ def execute(query, inline = true, consistent = false)
38
38
  parsed = Parser.parse(query)
39
39
  command = parsed.class.name.split('::').last.to_sym
40
40
 
41
41
  case command
42
42
  when :GET
43
- item = @driver.get(parsed.domain, parsed.item_name, parsed.attr_names)
43
+ item = @driver.get(parsed.domain, parsed.item_name, parsed.attr_names, consistent)
44
44
 
45
45
  if inline
46
46
  def item.to_yaml_style; :inline; end
@@ -57,7 +57,7 @@ module SimpleDB
57
57
  rownum
58
58
  when :UPDATE_WITH_EXPR
59
59
  query = "SELECT itemName FROM #{parsed.domain} #{parsed.expr}"
60
- items = @driver.select(query).map {|i| [i[0], parsed.attrs] }
60
+ items = @driver.select(query, consistent).map {|i| [i[0], parsed.attrs] }
61
61
  rownum = items.length
62
62
  @driver.update(parsed.domain, items)
63
63
  rownum
@@ -67,7 +67,7 @@ module SimpleDB
67
67
  rownum
68
68
  when :MERGE_WITH_EXPR
69
69
  query = "SELECT itemName FROM #{parsed.domain} #{parsed.expr}"
70
- items = @driver.select(query).map {|i| [i[0], parsed.attrs] }
70
+ items = @driver.select(query, consistent).map {|i| [i[0], parsed.attrs] }
71
71
  rownum = items.length
72
72
  @driver.insert(parsed.domain, items)
73
73
  rownum
@@ -77,12 +77,12 @@ module SimpleDB
77
77
  rownum
78
78
  when :DELETE_WITH_EXPR
79
79
  query = "SELECT itemName FROM #{parsed.domain} #{parsed.expr}"
80
- items = @driver.select(query).map {|i| [i[0], parsed.attrs] }
80
+ items = @driver.select(query, consistent).map {|i| [i[0], parsed.attrs] }
81
81
  rownum = items.length
82
82
  @driver.delete(parsed.domain, items)
83
83
  rownum
84
84
  when :SELECT
85
- items = @driver.select(parsed.query)
85
+ items = @driver.select(parsed.query, consistent)
86
86
 
87
87
  if inline
88
88
  items.each do |item|
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sdbcli
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.0.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-02-01 00:00:00.000000000 Z
12
+ date: 2013-02-02 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: nokogiri