heirloom 0.4.1rc1 → 0.5.0rc1

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/CHANGELOG CHANGED
@@ -1,6 +1,11 @@
1
- ## TBD:
1
+ ## v0.5.0:
2
2
 
3
3
  * Added check to verify domain exists for all cmds except build
4
+ * Removing requirement to check simpledb on download.
5
+ * Adding requirement base_prefix on download.
6
+ * Fix error when .heirloom.yml does not exist.
7
+ * Refactor cli option validation
8
+ * Refactor cli specs
4
9
 
5
10
  ## v0.4.0:
6
11
 
@@ -10,10 +10,9 @@ module Heirloom
10
10
  @config = load_config :logger => @logger,
11
11
  :opts => @opts
12
12
 
13
- exit 1 unless valid_options? :provided => @opts,
14
- :required => [:accounts,
15
- :name, :id],
16
- :logger => @logger
13
+ ensure_valid_options :provided => @opts,
14
+ :required => [:accounts, :name, :id],
15
+ :config => @config
17
16
 
18
17
  ensure_domain_exists :name => @opts[:name], :config => @config
19
18
 
@@ -10,11 +10,10 @@ module Heirloom
10
10
  @config = load_config :logger => @logger,
11
11
  :opts => @opts
12
12
 
13
- exit 1 unless valid_options? :provided => @opts,
14
- :required => [:name, :id, :region,
15
- :base_prefix,
16
- :directory],
17
- :logger => @logger
13
+ ensure_valid_options :provided => @opts,
14
+ :required => [:name, :id, :region,
15
+ :base_prefix, :directory],
16
+ :config => @config
18
17
 
19
18
  @archive = Archive.new :name => @opts[:name],
20
19
  :id => @opts[:id],
@@ -10,9 +10,9 @@ module Heirloom
10
10
  @config = load_config :logger => @logger,
11
11
  :opts => @opts
12
12
 
13
- exit 1 unless valid_options? :provided => @opts,
14
- :required => [:name, :id],
15
- :logger => @logger
13
+ ensure_valid_options :provided => @opts,
14
+ :required => [:name, :id],
15
+ :config => @config
16
16
 
17
17
  ensure_domain_exists :name => @opts[:name], :config => @config
18
18
 
@@ -10,10 +10,9 @@ module Heirloom
10
10
  @config = load_config :logger => @logger,
11
11
  :opts => @opts
12
12
 
13
- exit 1 unless valid_options? :provided => @opts,
14
- :required => [:base_prefix, :name,
15
- :id, :output],
16
- :logger => @logger
13
+ ensure_valid_options :provided => @opts,
14
+ :required => [:base_prefix, :name, :id, :output],
15
+ :config => @config
17
16
 
18
17
  @archive = Archive.new :name => @opts[:name],
19
18
  :id => @opts[:id],
@@ -10,9 +10,9 @@ module Heirloom
10
10
  @config = load_config :logger => @logger,
11
11
  :opts => @opts
12
12
 
13
- exit 1 unless valid_options? :provided => @opts,
14
- :required => [:name],
15
- :logger => @logger
13
+ ensure_valid_options :provided => @opts,
14
+ :required => [:name],
15
+ :config => @config
16
16
 
17
17
  ensure_domain_exists :name => @opts[:name], :config => @config
18
18
 
@@ -2,10 +2,23 @@ module Heirloom
2
2
  module CLI
3
3
  module Shared
4
4
 
5
- def valid_options?(args)
5
+ def load_config(args)
6
+ opts = args[:opts]
7
+ logger = args[:logger]
8
+ config = Config.new :logger => logger
9
+ config.access_key = opts[:key] if opts[:key_given]
10
+ config.secret_key = opts[:secret] if opts[:secret_given]
11
+ config
12
+ end
13
+
14
+ def ensure_valid_options(args)
6
15
  provided = args[:provided]
7
16
  required = args[:required]
8
- logger = args[:logger]
17
+ config = args[:config]
18
+ logger = config.logger
19
+
20
+ required << :key unless config.access_key
21
+ required << :secret unless config.secret_key
9
22
 
10
23
  missing_opts = required.map do |opt|
11
24
  case provided[opt]
@@ -20,16 +33,7 @@ module Heirloom
20
33
 
21
34
  missing_opts.each {|missing_opt| logger.error missing_opt}
22
35
 
23
- missing_opts.empty?
24
- end
25
-
26
- def load_config(args)
27
- opts = args[:opts]
28
- logger = args[:logger]
29
- config = Config.new :logger => logger
30
- config.access_key = opts[:key] if opts[:key_given]
31
- config.secret_key = opts[:secret] if opts[:secret_given]
32
- config
36
+ exit 1 unless missing_opts.empty?
33
37
  end
34
38
 
35
39
  def ensure_domain_exists(args)
@@ -10,9 +10,9 @@ module Heirloom
10
10
  @config = load_config :logger => @logger,
11
11
  :opts => @opts
12
12
 
13
- exit 1 unless valid_options? :provided => @opts,
14
- :required => [:name],
15
- :logger => @logger
13
+ ensure_valid_options :provided => @opts,
14
+ :required => [:name],
15
+ :config => @config
16
16
 
17
17
  ensure_domain_exists :name => @opts[:name], :config => @config
18
18
 
@@ -10,11 +10,9 @@ module Heirloom
10
10
  @config = load_config :logger => @logger,
11
11
  :opts => @opts
12
12
 
13
- exit 1 unless valid_options? :provided => @opts,
14
- :required => [:name, :id,
15
- :attribute,
16
- :updated_value],
17
- :logger => @logger
13
+ ensure_valid_options :provided => @opts,
14
+ :required => [:name, :id, :attribute, :updated_value],
15
+ :config => @config
18
16
 
19
17
  ensure_domain_exists :name => @opts[:name], :config => @config
20
18
 
@@ -4,21 +4,27 @@ module Heirloom
4
4
  attr_accessor :access_key, :secret_key, :primary_region, :logger
5
5
 
6
6
  def initialize(args = {})
7
- @config = args[:config]
7
+ @config = args[:config] ? args[:config] : load_config_file
8
8
  self.logger = args[:logger] ||= HeirloomLogger.new
9
- load_config_file
9
+ load_config
10
10
  end
11
11
 
12
- def load_config_file
13
- config_file = "#{ENV['HOME']}/.heirloom.yml"
14
- config = @config ? @config : YAML::load(File.open(config_file))
15
-
16
- aws = config['aws']
17
-
12
+ def load_config
13
+ aws = @config['aws']
18
14
  self.access_key = aws['access_key']
19
15
  self.secret_key = aws['secret_key']
20
16
  self.primary_region = aws['primary_region'] ||= 'us-west-1'
21
17
  end
22
18
 
19
+ def load_config_file
20
+ config_file = "#{ENV['HOME']}/.heirloom.yml"
21
+
22
+ if File.exists? config_file
23
+ YAML::load File.open(config_file)
24
+ else
25
+ { 'aws' => Hash.new }
26
+ end
27
+ end
28
+
23
29
  end
24
30
  end
@@ -1,3 +1,3 @@
1
1
  module Heirloom
2
- VERSION = "0.4.1rc1"
2
+ VERSION = "0.5.0rc1"
3
3
  end
@@ -8,15 +8,17 @@ describe Heirloom do
8
8
  :accounts => ['test@test.com'],
9
9
  :name => 'archive_name',
10
10
  :id => '1.0.0' }
11
- @logger_mock = mock 'logger'
11
+ @logger_stub = stub
12
12
  @config_mock = mock 'config'
13
13
  @archive_mock = mock 'archive'
14
- @config_mock.stub :logger => @logger_mock
14
+ @config_mock.stub :logger => @logger_stub,
15
+ :access_key => 'key',
16
+ :secret_key => 'secret'
15
17
  Trollop.stub(:options).and_return options
16
18
  Heirloom::HeirloomLogger.should_receive(:new).with(:log_level => 'info').
17
- and_return @logger_mock
19
+ and_return @logger_stub
18
20
  Heirloom::CLI::Authorize.any_instance.should_receive(:load_config).
19
- with(:logger => @logger_mock,
21
+ with(:logger => @logger_stub,
20
22
  :opts => options).
21
23
  and_return @config_mock
22
24
  Heirloom::Archive.should_receive(:new).
@@ -16,6 +16,9 @@ describe Heirloom do
16
16
 
17
17
  @logger_stub = stub :error => true, :info => true
18
18
  @config_mock = mock 'config'
19
+ @config_mock.stub :logger => @logger_stub,
20
+ :access_key => 'key',
21
+ :secret_key => 'secret'
19
22
  @archive_mock = mock 'archive'
20
23
  Trollop.stub(:options).and_return options
21
24
  Heirloom::HeirloomLogger.should_receive(:new).with(:log_level => 'info').
@@ -32,7 +35,7 @@ describe Heirloom do
32
35
  @build = Heirloom::CLI::Build.new
33
36
  end
34
37
 
35
- it "should build an account" do
38
+ it "should build an archive" do
36
39
  @archive_mock.should_receive(:buckets_exist?).
37
40
  with(:bucket_prefix => 'base',
38
41
  :regions => ["us-west-1", "us-west-2"]).
@@ -7,15 +7,17 @@ describe Heirloom do
7
7
  options = { :name => 'archive_name',
8
8
  :id => '1.0.0',
9
9
  :level => 'info' }
10
- @logger_mock = mock 'logger'
10
+ @logger_stub = stub 'logger'
11
11
  @config_mock = mock 'config'
12
12
  @archive_mock = mock 'archive'
13
- @config_mock.stub :logger => @logger_mock
13
+ @config_mock.stub :logger => @logger_stub,
14
+ :access_key => 'key',
15
+ :secret_key => 'secret'
14
16
  Trollop.stub(:options).and_return options
15
17
  Heirloom::HeirloomLogger.should_receive(:new).with(:log_level => 'info').
16
- and_return @logger_mock
18
+ and_return @logger_stub
17
19
  Heirloom::CLI::Destroy.any_instance.should_receive(:load_config).
18
- with(:logger => @logger_mock,
20
+ with(:logger => @logger_stub,
19
21
  :opts => options).
20
22
  and_return @config_mock
21
23
  Heirloom::Archive.should_receive(:new).
@@ -10,16 +10,18 @@ describe Heirloom do
10
10
  :output => '/tmp/test123',
11
11
  :region => 'us-east-1',
12
12
  :base_prefix => 'base' }
13
- @logger_mock = mock 'logger'
13
+ @logger_stub = stub 'logger'
14
14
  @config_mock = mock 'config'
15
15
  @archive_mock = mock 'archive'
16
- @config_mock.stub :logger => @logger_mock
16
+ @config_mock.stub :logger => @logger_stub,
17
+ :access_key => 'key',
18
+ :secret_key => 'secret'
17
19
  Trollop.stub(:options).and_return options
18
20
  Heirloom::HeirloomLogger.should_receive(:new).
19
21
  with(:log_level => 'info').
20
- and_return @logger_mock
22
+ and_return @logger_stub
21
23
  Heirloom::CLI::Download.any_instance.should_receive(:load_config).
22
- with(:logger => @logger_mock,
24
+ with(:logger => @logger_stub,
23
25
  :opts => options).
24
26
  and_return @config_mock
25
27
  Heirloom::Archive.should_receive(:new).
@@ -10,7 +10,9 @@ describe Heirloom do
10
10
  @logger_stub = stub :debug => true
11
11
  @config_mock = mock 'config'
12
12
  @archive_mock = mock 'archive'
13
- @config_mock.stub :logger => @logger_mock
13
+ @config_mock.stub :logger => @logger_mock,
14
+ :access_key => 'key',
15
+ :secret_key => 'secret'
14
16
  Trollop.stub(:options).and_return options
15
17
  Heirloom::HeirloomLogger.should_receive(:new).with(:log_level => 'info').
16
18
  and_return @logger_stub
@@ -4,44 +4,57 @@ require 'heirloom/cli'
4
4
 
5
5
  describe Heirloom do
6
6
 
7
- context "testing valid_options?" do
7
+ context "testing ensure_valid_options" do
8
8
 
9
9
  before do
10
+ @config_mock = mock 'config'
10
11
  @logger_mock = mock 'logger'
12
+ @config_mock.stub :logger => @logger_mock,
13
+ :access_key => 'key',
14
+ :secret_key => 'secret'
11
15
  @object = Object.new
12
16
  @object.extend Heirloom::CLI::Shared
13
17
  end
14
18
 
15
19
  it "should return false if a required array is emtpy" do
16
20
  @logger_mock.should_receive(:error)
17
- @object.valid_options?(:provided => { :array => [],
18
- :string => 'present' },
19
- :required => [:array, :string],
20
- :logger => @logger_mock).should be_false
21
+ lambda { @object.ensure_valid_options(:provided => {
22
+ :array => [],
23
+ :string => 'present'
24
+ },
25
+ :required => [:array, :string],
26
+ :config => @config_mock) }.
27
+ should raise_error SystemExit
21
28
  end
22
29
 
23
30
  it "should return false if a required string is nil" do
24
31
  @logger_mock.should_receive(:error)
25
- @object.valid_options?(:provided => { :array => ['present'],
26
- :string => nil },
27
- :required => [:array, :string],
28
- :logger => @logger_mock).should be_false
32
+ lambda { @object.ensure_valid_options(:provided => {
33
+ :array => ['present'],
34
+ :string => nil
35
+ },
36
+ :required => [:array, :string],
37
+ :config => @config_mock) }.
38
+ should raise_error SystemExit
29
39
  end
30
40
 
31
41
  it "should return false if a require string is nil & array is empty" do
32
42
  @logger_mock.should_receive(:error).exactly(2).times
33
- @object.valid_options?(:provided => { :array => [],
34
- :string => nil },
35
- :required => [:array, :string],
36
- :logger => @logger_mock).should be_false
43
+ lambda { @object.ensure_valid_options(:provided => {
44
+ :array => [],
45
+ :string => nil
46
+ },
47
+ :required => [:array, :string],
48
+ :config => @config_mock) }.
49
+ should raise_error SystemExit
37
50
  end
38
51
 
39
52
  it "should return true if all options are present" do
40
53
  @logger_mock.should_receive(:error).exactly(0).times
41
- @object.valid_options?(:provided => { :array => ['present'],
54
+ @object.ensure_valid_options(:provided => { :array => ['present'],
42
55
  :string => 'present' },
43
56
  :required => [:array, :string],
44
- :logger => @logger_mock).should be_true
57
+ :config => @config_mock)
45
58
  end
46
59
  end
47
60
 
@@ -10,7 +10,9 @@ describe Heirloom do
10
10
  @logger_stub = stub :debug => true
11
11
  @config_mock = mock 'config'
12
12
  @archive_mock = mock 'archive'
13
- @config_mock.stub :logger => @logger_mock
13
+ @config_mock.stub :logger => @logger_stub,
14
+ :access_key => 'key',
15
+ :secret_key => 'secret'
14
16
  Trollop.stub(:options).and_return options
15
17
  Heirloom::HeirloomLogger.should_receive(:new).with(:log_level => 'info').
16
18
  and_return @logger_stub
@@ -12,7 +12,9 @@ describe Heirloom do
12
12
  @logger_stub = stub :debug => true
13
13
  @config_mock = mock 'config'
14
14
  @archive_mock = mock 'archive'
15
- @config_mock.stub :logger => @logger_mock
15
+ @config_mock.stub :logger => @logger_stub,
16
+ :access_key => 'key',
17
+ :secret_key => 'secret'
16
18
  Trollop.stub(:options).and_return options
17
19
  Heirloom::HeirloomLogger.should_receive(:new).with(:log_level => 'info').
18
20
  and_return @logger_stub
data/spec/config_spec.rb CHANGED
@@ -21,6 +21,7 @@ describe Heirloom do
21
21
  end
22
22
 
23
23
  it "should create a new config object and read from ~/.heirloom.yml" do
24
+ File.should_receive(:exists?).and_return true
24
25
  File.should_receive(:open).with("#{ENV['HOME']}/.heirloom.yml").
25
26
  and_return(@config.to_yaml)
26
27
  config = Heirloom::Config.new
@@ -36,5 +37,12 @@ describe Heirloom do
36
37
  config.primary_region.should == 'us-west-1'
37
38
  end
38
39
 
40
+ it "should load a blank config if the file does not exist and no config passed" do
41
+ File.should_receive(:exists?).and_return false
42
+ config = Heirloom::Config.new
43
+ config.access_key.should be_nil
44
+ config.secret_key.should be_nil
45
+ config.primary_region.should == 'us-west-1'
46
+ end
39
47
 
40
48
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: heirloom
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.1rc1
4
+ version: 0.5.0rc1
5
5
  prerelease: 5
6
6
  platform: ruby
7
7
  authors:
@@ -13,7 +13,7 @@ date: 2012-08-17 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rspec
16
- requirement: &70189313530340 !ruby/object:Gem::Requirement
16
+ requirement: &70238839864540 !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: *70189313530340
24
+ version_requirements: *70238839864540
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: fog
27
- requirement: &70189313529180 !ruby/object:Gem::Requirement
27
+ requirement: &70238839863940 !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: *70189313529180
35
+ version_requirements: *70238839863940
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: grit
38
- requirement: &70189313528440 !ruby/object:Gem::Requirement
38
+ requirement: &70238839863260 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: '0'
44
44
  type: :runtime
45
45
  prerelease: false
46
- version_requirements: *70189313528440
46
+ version_requirements: *70238839863260
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: logger
49
- requirement: &70189313527540 !ruby/object:Gem::Requirement
49
+ requirement: &70238839862320 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ! '>='
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: '0'
55
55
  type: :runtime
56
56
  prerelease: false
57
- version_requirements: *70189313527540
57
+ version_requirements: *70238839862320
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: trollop
60
- requirement: &70189313526840 !ruby/object:Gem::Requirement
60
+ requirement: &70238839861680 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ! '>='
@@ -65,7 +65,7 @@ dependencies:
65
65
  version: '0'
66
66
  type: :runtime
67
67
  prerelease: false
68
- version_requirements: *70189313526840
68
+ version_requirements: *70238839861680
69
69
  description: I help build and manage building tar.gz files and deploying them into
70
70
  the cloud
71
71
  email:
@@ -164,7 +164,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
164
164
  version: '0'
165
165
  segments:
166
166
  - 0
167
- hash: 3075151930949687714
167
+ hash: 911003878403684883
168
168
  required_rubygems_version: !ruby/object:Gem::Requirement
169
169
  none: false
170
170
  requirements: