sdbport 0.2.0 → 0.2.1

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGELOG CHANGED
@@ -1,5 +1,9 @@
1
1
  ## HEAD:
2
2
 
3
+ ## 0.2.1:
4
+
5
+ * Adding support for read AWS creds from config file
6
+
3
7
  ## 0.2.0:
4
8
 
5
9
  * Added destroy subcommand
data/README.md CHANGED
@@ -17,6 +17,15 @@ export AWS_ACCESS_KEY_ID=key
17
17
  export AWS_SECRET_ACCESS_KEY=secret
18
18
  ```
19
19
 
20
+ Or create a config file (-a and -s can then be ommited):
21
+
22
+ ```
23
+ cat > ~/.sdbport.yml << EOF
24
+ access_key: your_aws_key
25
+ secret_key: your_aws_secert
26
+ EOF
27
+ ```
28
+
20
29
  Export SimpleDB domain:
21
30
 
22
31
  ```
@@ -1,4 +1,5 @@
1
1
  require "sdbport/aws"
2
+ require "sdbport/config"
2
3
  require "sdbport/domain"
3
4
  require "sdbport/sdbport_logger"
4
5
  require "sdbport/version"
@@ -7,19 +7,25 @@ require 'sdbport/cli/purge'
7
7
  module Sdbport
8
8
  class CLI
9
9
 
10
+ def initialize
11
+ @config = Config.new
12
+ @aws_default_creds = { :access_key => @config.access_key,
13
+ :secret_key => @config.secret_key }
14
+ end
15
+
10
16
  def start
11
17
 
12
18
  cmd = ARGV.shift
13
19
 
14
20
  case cmd
15
21
  when 'destroy'
16
- CLI::Destroy.new.destroy
22
+ CLI::Destroy.new(@aws_default_creds).destroy
17
23
  when 'export'
18
- CLI::Export.new.export
24
+ CLI::Export.new(@aws_default_creds).export
19
25
  when 'import'
20
- CLI::Import.new.import
26
+ CLI::Import.new(@aws_default_creds).import
21
27
  when 'purge'
22
- CLI::Purge.new.purge
28
+ CLI::Purge.new(@aws_default_creds).purge
23
29
  when '-v'
24
30
  puts Sdbport::VERSION
25
31
  else
@@ -2,15 +2,23 @@ module Sdbport
2
2
  class CLI
3
3
  class Destroy
4
4
 
5
+ def initialize(args)
6
+ @default_access_key = args[:access_key]
7
+ @default_secret_key = args[:secret_key]
8
+ end
9
+
5
10
  def destroy
6
- opts = read_options
11
+ opts = read_options
12
+ access_key = opts[:access_key] || @default_access_key
13
+ secret_key = opts[:secret_key] || @default_secret_key
14
+
7
15
  logger = SdbportLogger.new :log_level => opts[:level]
8
- domain = Domain.new :name => opts[:name],
9
- :region => opts[:region],
10
- :access_key => opts[:access_key],
11
- :secret_key => opts[:secret_key],
12
- :logger => logger
13
- domain.destroy
16
+ domain = Domain.new :name => opts[:name],
17
+ :region => opts[:region],
18
+ :access_key => access_key,
19
+ :secret_key => secret_key,
20
+ :logger => logger
21
+ exit 1 unless domain.destroy
14
22
  end
15
23
 
16
24
  def read_options
@@ -2,17 +2,23 @@ module Sdbport
2
2
  class CLI
3
3
  class Export
4
4
 
5
+ def initialize(args)
6
+ @default_access_key = args[:access_key]
7
+ @default_secret_key = args[:secret_key]
8
+ end
9
+
5
10
  def export
6
- opts = read_options
11
+ opts = read_options
12
+ access_key = opts[:access_key] || @default_access_key
13
+ secret_key = opts[:secret_key] || @default_secret_key
14
+
7
15
  logger = SdbportLogger.new :log_level => opts[:level]
8
16
  domain = Domain.new :name => opts[:name],
9
17
  :region => opts[:region],
10
- :access_key => opts[:access_key],
11
- :secret_key => opts[:secret_key],
18
+ :access_key => access_key,
19
+ :secret_key => secret_key,
12
20
  :logger => logger
13
- unless domain.export opts[:output]
14
- exit 1
15
- end
21
+ exit 1 unless domain.export opts[:output]
16
22
  end
17
23
 
18
24
  def read_options
@@ -2,17 +2,23 @@ module Sdbport
2
2
  class CLI
3
3
  class Import
4
4
 
5
+ def initialize(args)
6
+ @default_access_key = args[:access_key]
7
+ @default_secret_key = args[:secret_key]
8
+ end
9
+
5
10
  def import
6
- opts = read_options
11
+ opts = read_options
12
+ access_key = opts[:access_key] || @default_access_key
13
+ secret_key = opts[:secret_key] || @default_secret_key
14
+
7
15
  logger = SdbportLogger.new :log_level => opts[:level]
8
16
  domain = Domain.new :name => opts[:name],
9
17
  :region => opts[:region],
10
- :access_key => opts[:access_key],
11
- :secret_key => opts[:secret_key],
18
+ :access_key => access_key,
19
+ :secret_key => secret_key,
12
20
  :logger => logger
13
- unless domain.import opts[:input]
14
- exit 1
15
- end
21
+ exit 1 unless domain.import opts[:input]
16
22
  end
17
23
 
18
24
  def read_options
@@ -2,15 +2,23 @@ module Sdbport
2
2
  class CLI
3
3
  class Purge
4
4
 
5
+ def initialize(args)
6
+ @default_access_key = args[:access_key]
7
+ @default_secret_key = args[:secret_key]
8
+ end
9
+
5
10
  def purge
6
- opts = read_options
11
+ opts = read_options
12
+ access_key = opts[:access_key] || @default_access_key
13
+ secret_key = opts[:secret_key] || @default_secret_key
14
+
7
15
  logger = SdbportLogger.new :log_level => opts[:level]
8
- domain = Domain.new :name => opts[:name],
9
- :region => opts[:region],
10
- :access_key => opts[:access_key],
11
- :secret_key => opts[:secret_key],
12
- :logger => logger
13
- domain.purge
16
+ domain = Domain.new :name => opts[:name],
17
+ :region => opts[:region],
18
+ :access_key => access_key,
19
+ :secret_key => secret_key,
20
+ :logger => logger
21
+ exit 1 unless domain.purge
14
22
  end
15
23
 
16
24
  def read_options
@@ -0,0 +1,23 @@
1
+ module Sdbport
2
+ class Config
3
+
4
+ attr_reader :access_key, :secret_key
5
+
6
+ def initialize
7
+ @config = load_config_file
8
+ @access_key = @config.fetch 'access_key', nil
9
+ @secret_key = @config.fetch 'secret_key', nil
10
+ end
11
+
12
+ def load_config_file
13
+ config_file = "#{ENV['HOME']}/.sdbport.yml"
14
+
15
+ if File.exists? config_file
16
+ YAML::load File.open(config_file)
17
+ else
18
+ Hash.new
19
+ end
20
+ end
21
+
22
+ end
23
+ end
@@ -1,3 +1,3 @@
1
1
  module Sdbport
2
- VERSION = "0.2.0"
2
+ VERSION = "0.2.1"
3
3
  end
@@ -0,0 +1,50 @@
1
+ require 'spec_helper'
2
+ require 'sdbport/cli'
3
+
4
+ describe Sdbport do
5
+ before do
6
+ @cli_mock = mock 'cli'
7
+ @default_creds = { :access_key => 'the-key',
8
+ :secret_key => 'the-secret' }
9
+ @config_stub = stub 'config', :access_key => 'the-key',
10
+ :secret_key => 'the-secret'
11
+ Sdbport::Config.stub :new => @config_stub
12
+ @cli = Sdbport::CLI.new
13
+ end
14
+
15
+ it "should call destroy" do
16
+ Sdbport::CLI::Destroy.should_receive(:new).
17
+ with(@default_creds).
18
+ and_return @cli_mock
19
+ ARGV.stub :shift => 'destroy'
20
+ @cli_mock.should_receive :destroy
21
+ @cli.start
22
+ end
23
+
24
+ it "should call export" do
25
+ Sdbport::CLI::Export.should_receive(:new).
26
+ with(@default_creds).
27
+ and_return @cli_mock
28
+ ARGV.stub :shift => 'export'
29
+ @cli_mock.should_receive :export
30
+ @cli.start
31
+ end
32
+
33
+ it "should call import" do
34
+ Sdbport::CLI::Import.should_receive(:new).
35
+ with(@default_creds).
36
+ and_return @cli_mock
37
+ ARGV.stub :shift => 'import'
38
+ @cli_mock.should_receive :import
39
+ @cli.start
40
+ end
41
+
42
+ it "should call purge" do
43
+ Sdbport::CLI::Purge.should_receive(:new).
44
+ with(@default_creds).
45
+ and_return @cli_mock
46
+ ARGV.stub :shift => 'purge'
47
+ @cli_mock.should_receive :purge
48
+ @cli.start
49
+ end
50
+ end
@@ -0,0 +1,27 @@
1
+ require 'spec_helper'
2
+
3
+ describe Sdbport do
4
+
5
+ before do
6
+ @config = { 'access_key ' => 'key',
7
+ 'secret_key ' => 'secret' }
8
+ end
9
+
10
+ it "should create a new config object and read from ~/.sdbport.yml" do
11
+ File.stub :exists? => true
12
+ File.should_receive(:open).
13
+ with("#{ENV['HOME']}/.sdbport.yml").
14
+ and_return @config.to_yaml
15
+ config = Sdbport::Config.new
16
+ config.access_key.should == @config['access_key']
17
+ config.secret_key.should == @config['secret_key']
18
+ end
19
+
20
+ it "should load a blank config if the file does not exist and no config passed" do
21
+ File.stub :exists? => false
22
+ config = Sdbport::Config.new
23
+ config.access_key.should be_nil
24
+ config.secret_key.should be_nil
25
+ end
26
+
27
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sdbport
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.2.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -13,7 +13,7 @@ date: 2012-10-01 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rspec
16
- requirement: &70151522838520 !ruby/object:Gem::Requirement
16
+ requirement: &70204089955280 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '0'
22
22
  type: :development
23
23
  prerelease: false
24
- version_requirements: *70151522838520
24
+ version_requirements: *70204089955280
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: fog
27
- requirement: &70151522837360 !ruby/object:Gem::Requirement
27
+ requirement: &70204089954700 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '0'
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *70151522837360
35
+ version_requirements: *70204089954700
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: trollop
38
- requirement: &70151522807160 !ruby/object:Gem::Requirement
38
+ requirement: &70204089954220 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,7 +43,7 @@ dependencies:
43
43
  version: '0'
44
44
  type: :runtime
45
45
  prerelease: false
46
- version_requirements: *70151522807160
46
+ version_requirements: *70204089954220
47
47
  description: Import and export AWS SimpleDB domains.
48
48
  email:
49
49
  - brett@weav.net
@@ -69,6 +69,7 @@ files:
69
69
  - lib/sdbport/cli/export.rb
70
70
  - lib/sdbport/cli/import.rb
71
71
  - lib/sdbport/cli/purge.rb
72
+ - lib/sdbport/config.rb
72
73
  - lib/sdbport/domain.rb
73
74
  - lib/sdbport/domain/destroy.rb
74
75
  - lib/sdbport/domain/export.rb
@@ -78,6 +79,8 @@ files:
78
79
  - lib/sdbport/version.rb
79
80
  - sdbport.gemspec
80
81
  - spec/aws/simpledb_spec.rb
82
+ - spec/cli_spec.rb
83
+ - spec/config_spec.rb
81
84
  - spec/domain/destroy_spec.rb
82
85
  - spec/domain/export_spec.rb
83
86
  - spec/domain/import_spec.rb
@@ -99,7 +102,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
99
102
  version: '0'
100
103
  segments:
101
104
  - 0
102
- hash: 3924510079821876667
105
+ hash: 227852682613598022
103
106
  required_rubygems_version: !ruby/object:Gem::Requirement
104
107
  none: false
105
108
  requirements:
@@ -108,7 +111,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
108
111
  version: '0'
109
112
  segments:
110
113
  - 0
111
- hash: 3924510079821876667
114
+ hash: 227852682613598022
112
115
  requirements: []
113
116
  rubyforge_project:
114
117
  rubygems_version: 1.8.16
@@ -117,6 +120,8 @@ specification_version: 3
117
120
  summary: Import and export AWS SimpleDB domains.
118
121
  test_files:
119
122
  - spec/aws/simpledb_spec.rb
123
+ - spec/cli_spec.rb
124
+ - spec/config_spec.rb
120
125
  - spec/domain/destroy_spec.rb
121
126
  - spec/domain/export_spec.rb
122
127
  - spec/domain/import_spec.rb