sdbcli 1.0.0 → 1.0.1

Sign up to get free protection for your applications and to get access to all the features.
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