sdbcli 0.4.1 → 0.4.2

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