sdbcli 0.4.1 → 0.4.2

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
@@ -20,7 +20,7 @@ https://bitbucket.org/winebarrel/sdbcli
20
20
  -f, --format=YAML_OR_JSON
21
21
  shell> export AWS_ACCESS_KEY_ID='...'
22
22
  shell> export AWS_SECRET_ACCESS_KEY='...'
23
- shell> export SDB_ENDPOINT='sdb.ap-northeast-1.amazonaws.com' # or REGION_NAME=ap-northeast-1
23
+ shell> export SDB_ENDPOINT='sdb.ap-northeast-1.amazonaws.com' # or EC2_REGION=ap-northeast-1
24
24
  shell> sdbcli -e 'show domains'
25
25
  ---
26
26
  - test
data/bin/sdbcli CHANGED
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env ruby
2
2
  $LOAD_PATH << File.join(File.expand_path(File.dirname(__FILE__)), '..', 'lib')
3
3
 
4
- Version = '0.4.1'
4
+ Version = '0.4.2'
5
5
  HISTORY_FILE = File.join((ENV['HOME'] || ENV['USERPROFILE'] || '.'), '.sdbcli_history')
6
6
  HISTSIZE = 500
7
7
 
@@ -17,7 +17,7 @@ require 'json'
17
17
 
18
18
  access_key_id = ENV['AWS_ACCESS_KEY_ID']
19
19
  secret_access_key = ENV['AWS_SECRET_ACCESS_KEY']
20
- sdb_endpoint = ENV['SDB_ENDPOINT'] || ENV['REGION_NAME'] || 'sdb.amazonaws.com'
20
+ sdb_endpoint = ENV['SDB_ENDPOINT'] || ENV['EC2_REGION'] || 'sdb.amazonaws.com'
21
21
  command = nil
22
22
  $format = :yaml
23
23
 
metadata CHANGED
@@ -1,101 +1,85 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: sdbcli
3
- version: !ruby/object:Gem::Version
4
- hash: 13
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.4.2
5
5
  prerelease:
6
- segments:
7
- - 0
8
- - 4
9
- - 1
10
- version: 0.4.1
11
6
  platform: ruby
12
- authors:
7
+ authors:
13
8
  - winebarrel
14
9
  autorequire:
15
10
  bindir: bin
16
11
  cert_chain: []
17
-
18
- date: 2013-01-22 00:00:00 Z
19
- dependencies:
20
- - !ruby/object:Gem::Dependency
12
+ date: 2013-01-26 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
21
15
  name: nokogiri
22
- prerelease: false
23
- requirement: &id001 !ruby/object:Gem::Requirement
16
+ requirement: !ruby/object:Gem::Requirement
24
17
  none: false
25
- requirements:
26
- - - ">="
27
- - !ruby/object:Gem::Version
28
- hash: 3
29
- segments:
30
- - 0
31
- version: "0"
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
32
22
  type: :runtime
33
- version_requirements: *id001
34
- - !ruby/object:Gem::Dependency
35
- name: json
36
23
  prerelease: false
37
- requirement: &id002 !ruby/object:Gem::Requirement
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: '0'
30
+ - !ruby/object:Gem::Dependency
31
+ name: json
32
+ requirement: !ruby/object:Gem::Requirement
38
33
  none: false
39
- requirements:
40
- - - ">="
41
- - !ruby/object:Gem::Version
42
- hash: 3
43
- segments:
44
- - 0
45
- version: "0"
34
+ requirements:
35
+ - - ! '>='
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
46
38
  type: :runtime
47
- version_requirements: *id002
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
48
46
  description:
49
47
  email: sgwr_dts@yahoo.co.jp
50
- executables:
48
+ executables:
51
49
  - sdbcli
52
50
  extensions: []
53
-
54
51
  extra_rdoc_files: []
55
-
56
- files:
52
+ files:
57
53
  - README
58
54
  - bin/sdbcli
59
- - bin/sdbcli.orig
60
55
  - lib/sdbcli/sdb-client.rb
61
56
  - lib/sdbcli/sdb-driver.rb
62
57
  - lib/sdbcli/sdb-parser.tab.rb
63
58
  - lib/sdbcli/sdb-parser.y
64
59
  - lib/sdbcli/sdb-runner.rb
65
- - lib/sdbcli/sdb-runner.rb.orig
66
60
  - lib/sdbcli.rb
67
61
  homepage: https://bitbucket.org/winebarrel/sdbcli
68
62
  licenses: []
69
-
70
63
  post_install_message:
71
64
  rdoc_options: []
72
-
73
- require_paths:
65
+ require_paths:
74
66
  - lib
75
- required_ruby_version: !ruby/object:Gem::Requirement
67
+ required_ruby_version: !ruby/object:Gem::Requirement
76
68
  none: false
77
- requirements:
78
- - - ">="
79
- - !ruby/object:Gem::Version
80
- hash: 3
81
- segments:
82
- - 0
83
- version: "0"
84
- required_rubygems_version: !ruby/object:Gem::Requirement
69
+ requirements:
70
+ - - ! '>='
71
+ - !ruby/object:Gem::Version
72
+ version: '0'
73
+ required_rubygems_version: !ruby/object:Gem::Requirement
85
74
  none: false
86
- requirements:
87
- - - ">="
88
- - !ruby/object:Gem::Version
89
- hash: 3
90
- segments:
91
- - 0
92
- version: "0"
75
+ requirements:
76
+ - - ! '>='
77
+ - !ruby/object:Gem::Version
78
+ version: '0'
93
79
  requirements: []
94
-
95
80
  rubyforge_project:
96
- rubygems_version: 1.8.24
81
+ rubygems_version: 1.8.23
97
82
  signing_key:
98
83
  specification_version: 3
99
84
  summary: sdbcli is an interactive command-line client of Amazon SimpleDB.
100
85
  test_files: []
101
-
data/bin/sdbcli.orig DELETED
@@ -1,188 +0,0 @@
1
- #!/usr/bin/env ruby
2
- $LOAD_PATH << File.join(File.expand_path(File.dirname(__FILE__)), '..', 'lib')
3
-
4
- Version = '0.3.8'
5
- HISTORY_FILE = File.join((ENV['HOME'] || ENV['USERPROFILE'] || '.'), '.sdbcli_history')
6
- HISTSIZE = 500
7
-
8
- require 'rubygems'
9
- require 'sdbcli'
10
-
11
- require 'optparse'
12
- require 'readline'
13
- require 'strscan'
14
- require 'syck' if /\A1\.9/ =~ RUBY_VERSION
15
- require 'yaml'
16
-
17
- access_key_id = ENV['AWS_ACCESS_KEY_ID']
18
- secret_access_key = ENV['AWS_SECRET_ACCESS_KEY']
19
- sdb_endpoint = ENV['SDB_ENDPOINT'] || ENV['REGION_NAME'] || 'sdb.amazonaws.com'
20
- command = nil
21
-
22
- ARGV.options do |opt|
23
- opt.on('-k', '--access-key=ACCESS_KEY') {|v| access_key_id = v }
24
- opt.on('-s', '--secret-key=SECRET_KEY') {|v| secret_access_key = v }
25
- opt.on('-r', '--region=REGION') {|v| sdb_endpoint = v }
26
- opt.on('-e', '--eval=COMMAND') {|v| command = v }
27
- opt.parse!
28
-
29
- unless access_key_id and secret_access_key and sdb_endpoint
30
- puts opt.help
31
- exit 1
32
- end
33
- end
34
-
35
- $runner = SimpleDB::Runner.new(access_key_id, secret_access_key, sdb_endpoint)
36
-
37
- def output_error(msg)
38
- $stderr.puts "# #{msg}\n\n"
39
- end
40
-
41
- def execute(src, show_rows = false)
42
- ss = StringScanner.new(src.gsub(%r{/\*/?(?:(?:\r\n|\r|\n)|[^/]|[^*]/)*\*/}m, ''))
43
-
44
- while query = ss.scan_until(/(?:;|\\G)/i)
45
- src.replace(ss.rest.strip)
46
- query.strip!
47
-
48
- if query =~ /\s*\\G\Z/i
49
- query = query.sub(/\s*\\G\Z/i, '')
50
- inline = false
51
- else
52
- query = query.strip.sub(/\s*;\Z/, '')
53
- inline = true
54
- end
55
-
56
- if query.empty?
57
- output_error('No query specified')
58
- next
59
- end
60
-
61
- out = $runner.execute(query, inline)
62
-
63
- if out
64
- str = YAML.dump(out).sub(/(?:\r\n|\r|\n)*\Z/, "\n")
65
-
66
- if show_rows and out.kind_of?(Array)
67
- str << "# #{out.length} rows in set\n"
68
- end
69
-
70
- str << "\n"
71
- puts str
72
- end
73
- end
74
-
75
- ss.rest.strip
76
- end
77
-
78
- if not $stdin.tty? or command
79
- src = command || $stdin.read.strip
80
-
81
- unless src =~ /\s*(?:;|\\G)\Z/i
82
- src << ';'
83
- end
84
-
85
- begin
86
- execute(src)
87
- exit 0
88
- rescue => e
89
- output_error e.message.strip
90
- exit 1
91
- end
92
- end
93
-
94
- def help
95
- <<-EOS
96
- SHOW DOMAINS
97
- displays a domain list
98
-
99
- SHOW REGIONS
100
- displays a region list
101
-
102
- CREATE domain domain_name
103
- creates a domain
104
-
105
- DROP DOMAIN domain_name
106
- deletes a domain
107
-
108
- GET [attr_list] FROM domain_name WHERE itemName = '...'
109
- gets the attribute of an item
110
-
111
- INSERT INTO domain_name (itemName, attr1, ...) VALUES ('name', 'val1', ...)
112
- creates an item
113
-
114
- UPDATE domain_name set attr1 = 'val1', ... WHERE itemName = '...'
115
- updates an item
116
-
117
- DELETE [attr1, ...] FROM domain_name WHERE itemName = '...'
118
- deletes the attribute of an item or an item
119
-
120
- SELECT output_list FROM domain_name [WHERE expression] [sort_instructions] [LIMIT limit]
121
- queries using the SELECT statement
122
- see http://docs.aws.amazon.com/AmazonSimpleDB/latest/DeveloperGuide/UsingSelect.html
123
-
124
- DESC domain_name
125
- displays information about the domain
126
-
127
- USE region_or_endpoint
128
- changes an endpoint
129
-
130
- EOS
131
- end
132
-
133
- if File.exist?(HISTORY_FILE)
134
- open(HISTORY_FILE) do |f|
135
- f.each_line do |line|
136
- line = line.strip
137
- Readline::HISTORY.push(line) unless line.empty?
138
- end
139
- end
140
- end
141
-
142
- at_exit do
143
- unless Readline::HISTORY.empty?
144
- open(HISTORY_FILE, 'wb') do |f|
145
- (Readline::HISTORY.to_a.slice(-(Readline::HISTORY.length < HISTSIZE ? Readline::HISTORY.length : HISTSIZE)..-1) || []).each do |line|
146
- next if /\A\s*\Z/ =~ line
147
- f.puts line
148
- end
149
- end
150
- end
151
- end
152
-
153
- src = ''
154
- prompt1 = lambda { "#{$runner.region || 'unknown'}> " }
155
- prompt2 = lambda { "#{' ' * (($runner.region || 'unknown').length - 1)}-> " }
156
- prompt = prompt1.call
157
-
158
- while buf = Readline.readline(prompt, true)
159
- if /\A\s*\Z/ =~ buf
160
- Readline::HISTORY.pop
161
- next
162
- end
163
-
164
- if src.empty? and buf =~ /\A\.(.+)/
165
- r = /\A#{Regexp.compile($1.downcase)}/
166
-
167
- if r =~ 'help'
168
- puts help
169
- elsif r =~ 'exit' or r =~ 'quit'
170
- exit
171
- elsif r =~ 'version'
172
- puts "sdbcli #{Version}"
173
- else
174
- output_error('Unknown command')
175
- end
176
- else
177
- rv = nil
178
-
179
- begin
180
- src << (' ' + buf)
181
- execute(src, true)
182
- rescue => e
183
- output_error e.message.strip
184
- end
185
-
186
- prompt = src.empty? ? prompt1.call : prompt2.call
187
- end
188
- end
@@ -1,109 +0,0 @@
1
- require 'sdbcli/sdb-driver'
2
- require 'sdbcli/sdb-parser.tab'
3
-
4
- module SimpleDB
5
- class Error < StandardError; end
6
-
7
- REGIONS = {
8
- 'sdb.amazonaws.com' => 'us-east-1',
9
- 'sdb.us-west-1.amazonaws.com' => 'us-west-1',
10
- 'sdb.us-west-2.amazonaws.com' => 'us-west-2',
11
- 'sdb.eu-west-1.amazonaws.com' => 'eu-west-1',
12
- 'sdb.ap-southeast-1.amazonaws.com' => 'ap-southeast-1',
13
- 'sdb.ap-southeast-2.amazonaws.com' => 'ap-southeast-2',
14
- 'sdb.ap-northeast-1.amazonaws.com' => 'ap-northeast-1',
15
- 'sdb.sa-east-1.amazonaws.com' => 'sa-east-1',
16
- }
17
-
18
- class Runner
19
- def initialize(accessKeyId, secretAccessKey, endpoint = 'sdb.amazonaws.com')
20
- endpoint = region_to_endpoint(endpoint)
21
- @driver = Driver.new(accessKeyId, secretAccessKey, endpoint)
22
- end
23
-
24
- def endpoint
25
- @driver.endpoint
26
- end
27
-
28
- def endpoint=(v)
29
- v = region_to_endpoint(v)
30
- @driver.endpoint = v
31
- end
32
-
33
- def region
34
- REGIONS[endpoint]
35
- end
36
-
37
- def execute(query, inline = true)
38
- parsed = Parser.parse(query)
39
- p parsed
40
- command = parsed.class.name.split('::').last.to_sym
41
-
42
- case command
43
- when :GET
44
- item = @driver.get(parsed.domain, parsed.item_name, parsed.attr_names)
45
-
46
- if inline
47
- def item.to_yaml_style; :inline; end
48
- end
49
-
50
- item
51
- when :INSERT
52
- @driver.insert(parsed.domain, parsed.item_name, parsed.attrs)
53
- nil
54
- when :UPDATE
55
- @driver.update(parsed.domain, parsed.items)
56
- nil
57
- when :DELETE
58
- @driver.delete(parsed.domain, parsed.items)
59
- nil
60
- when :SELECT
61
- items = @driver.select(parsed.query)
62
-
63
- if inline
64
- items.each do |item|
65
- def item.to_yaml_style; :inline; end
66
- end
67
- end
68
-
69
- items
70
- when :CREATE
71
- @driver.create_domain(parsed.domain)
72
- nil
73
- when :DROP
74
- @driver.drop_domain(parsed.domain)
75
- nil
76
- when :SHOW
77
- case parsed.operand
78
- when :domains
79
- @driver.show_domains
80
- when :regions
81
- SimpleDB::REGIONS.values.sort
82
- else
83
- raise 'must not happen'
84
- end
85
- when :USE
86
- self.endpoint = parsed.endpoint
87
- nil
88
- when :DESCRIBE
89
- @driver.describe(parsed.domain)
90
- else
91
- raise 'must not happen'
92
- end
93
- end
94
-
95
- private
96
-
97
- def region_to_endpoint(region)
98
- if /\A[^.]+\Z/ =~ region
99
- region = SimpleDB::REGIONS.find {|k, v| v == region }
100
- raise SimpleDB::Error, 'Unknown region' unless region
101
- region = region.first
102
- end
103
-
104
- raise SimpleDB::Error, 'Unknown endpoint' unless SimpleDB::REGIONS[region]
105
-
106
- return region
107
- end
108
- end # Runner
109
- end # SimpleDB