simple_deploy 0.5.2 → 0.5.3
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/.rvmrc +1 -1
- data/CHANGELOG +7 -0
- data/lib/simple_deploy/cli/clone.rb +79 -0
- data/lib/simple_deploy/cli/instances.rb +6 -1
- data/lib/simple_deploy/cli/outputs.rb +4 -1
- data/lib/simple_deploy/cli/protect.rb +11 -8
- data/lib/simple_deploy/cli.rb +5 -2
- data/lib/simple_deploy/version.rb +1 -1
- data/script/ci_setup +3 -1
- data/spec/cli/clone_spec.rb +141 -0
- data/spec/cli/protect_spec.rb +64 -2
- metadata +42 -14
data/.rvmrc
CHANGED
@@ -1 +1 @@
|
|
1
|
-
rvm use ruby-1.9.3-
|
1
|
+
rvm use ruby-1.9.3-p194@simple_deploy --create
|
data/CHANGELOG
CHANGED
@@ -1,3 +1,10 @@
|
|
1
|
+
## v0.5.3
|
2
|
+
|
3
|
+
* Added a clone command that clones a stack
|
4
|
+
* Updated the protect command so it allows multiple stacks
|
5
|
+
* Updated the instances command so it tells the user when the stack does not exist
|
6
|
+
* Updated the outputs command to make the output values easier to read
|
7
|
+
|
1
8
|
## v0.5.2
|
2
9
|
|
3
10
|
* Upgrade to stackster 0.3.0
|
@@ -0,0 +1,79 @@
|
|
1
|
+
require 'trollop'
|
2
|
+
require 'tempfile'
|
3
|
+
|
4
|
+
module SimpleDeploy
|
5
|
+
module CLI
|
6
|
+
class Clone
|
7
|
+
def clone
|
8
|
+
@opts = Trollop::options do
|
9
|
+
version SimpleDeploy::VERSION
|
10
|
+
banner <<-EOS
|
11
|
+
|
12
|
+
Clone a stack.
|
13
|
+
|
14
|
+
simple_deploy clone -s SOURCE_STACK_NAME -n NEW_STACK_NAME -e ENVIRONMENT -a ATTRIB1=VALUE -a ATTRIB2=VALUE
|
15
|
+
|
16
|
+
EOS
|
17
|
+
opt :help, "Display Help"
|
18
|
+
opt :environment, "Set the target environment", :type => :string
|
19
|
+
opt :source_name, "Stack name for the stack to clone", :type => :string
|
20
|
+
opt :new_name, "Stack name for the new stack", :type => :string
|
21
|
+
opt :attributes, "= separated attribute and it's value", :type => :string,
|
22
|
+
:multi => true
|
23
|
+
end
|
24
|
+
|
25
|
+
CLI::Shared.valid_options? :provided => @opts,
|
26
|
+
:required => [:environment, :source_name, :new_name]
|
27
|
+
|
28
|
+
override_attributes = CLI::Shared.parse_attributes :attributes => @opts[:attributes],
|
29
|
+
:logger => logger
|
30
|
+
|
31
|
+
cloned_attributes = filter_attributes source_stack.attributes
|
32
|
+
new_attributes = merge_attributes cloned_attributes, override_attributes
|
33
|
+
|
34
|
+
template_file = Tempfile.new("#{@opts[:new_name]}_template.json").path
|
35
|
+
File::open(template_file, 'w') { |f| f.write source_stack.template.to_json }
|
36
|
+
|
37
|
+
new_stack.create :attributes => new_attributes,
|
38
|
+
:template => template_file
|
39
|
+
end
|
40
|
+
|
41
|
+
private
|
42
|
+
|
43
|
+
def filter_attributes(source_attributes)
|
44
|
+
selected = source_attributes.select { |k| k !~ /^deployment/ }
|
45
|
+
selected.map { |k,v| { k => v } }
|
46
|
+
end
|
47
|
+
|
48
|
+
def merge_attributes(cloned_attributes, override_attributes)
|
49
|
+
cloned_attributes.map do |clone|
|
50
|
+
key = clone.keys.first
|
51
|
+
override = override_attributes.find { |o| o.has_key? key }
|
52
|
+
override ? override : clone
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
def config
|
57
|
+
@config ||= Config.new.environment @opts[:environment]
|
58
|
+
end
|
59
|
+
|
60
|
+
def logger
|
61
|
+
@logger ||= SimpleDeployLogger.new :log_level => @opts[:log_level]
|
62
|
+
end
|
63
|
+
|
64
|
+
def source_stack
|
65
|
+
@source_stack ||= Stack.new :environment => @opts[:environment],
|
66
|
+
:name => @opts[:source_name],
|
67
|
+
:config => config,
|
68
|
+
:logger => logger
|
69
|
+
end
|
70
|
+
|
71
|
+
def new_stack
|
72
|
+
@new_stack ||= Stack.new :environment => @opts[:environment],
|
73
|
+
:name => @opts[:new_name],
|
74
|
+
:config => config,
|
75
|
+
:logger => logger
|
76
|
+
end
|
77
|
+
end
|
78
|
+
end
|
79
|
+
end
|
@@ -30,7 +30,12 @@ EOS
|
|
30
30
|
:config => config,
|
31
31
|
:logger => logger
|
32
32
|
|
33
|
-
|
33
|
+
instances = stack.instances
|
34
|
+
if instances.nil? || instances.empty?
|
35
|
+
puts "stack '#{opts[:name]}' does not exist"
|
36
|
+
else
|
37
|
+
jj stack.instances
|
38
|
+
end
|
34
39
|
end
|
35
40
|
end
|
36
41
|
end
|
@@ -9,9 +9,9 @@ module SimpleDeploy
|
|
9
9
|
version SimpleDeploy::VERSION
|
10
10
|
banner <<-EOS
|
11
11
|
|
12
|
-
Protect
|
12
|
+
Protect/Unprotect one or more stacks.
|
13
13
|
|
14
|
-
simple_deploy protect -n
|
14
|
+
simple_deploy protect -n STACK_NAME1 -n STACK_NAME2 -e ENVIRONMENT -p on_off
|
15
15
|
|
16
16
|
EOS
|
17
17
|
opt :help, "Display Help"
|
@@ -19,7 +19,8 @@ EOS
|
|
19
19
|
opt :protection, "Enable/Disable protection using on/off", :type => :string
|
20
20
|
opt :log_level, "Log level: debug, info, warn, error", :type => :string,
|
21
21
|
:default => 'info'
|
22
|
-
opt :name, "Stack name of
|
22
|
+
opt :name, "Stack name(s) of stacks to protect", :type => :string,
|
23
|
+
:multi => true
|
23
24
|
end
|
24
25
|
|
25
26
|
CLI::Shared.valid_options? :provided => opts,
|
@@ -29,11 +30,13 @@ EOS
|
|
29
30
|
|
30
31
|
logger = SimpleDeployLogger.new :log_level => opts[:log_level]
|
31
32
|
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
33
|
+
opts[:name].each do |name|
|
34
|
+
stack = Stack.new :environment => opts[:environment],
|
35
|
+
:name => name,
|
36
|
+
:config => config,
|
37
|
+
:logger => logger
|
38
|
+
stack.update :attributes => [{ 'protection' => opts[:protection] }]
|
39
|
+
end
|
37
40
|
end
|
38
41
|
end
|
39
42
|
end
|
data/lib/simple_deploy/cli.rb
CHANGED
@@ -3,6 +3,7 @@ require 'trollop'
|
|
3
3
|
require 'simple_deploy/cli/shared'
|
4
4
|
|
5
5
|
require 'simple_deploy/cli/attributes'
|
6
|
+
require 'simple_deploy/cli/clone'
|
6
7
|
require 'simple_deploy/cli/create'
|
7
8
|
require 'simple_deploy/cli/deploy'
|
8
9
|
require 'simple_deploy/cli/destroy'
|
@@ -26,6 +27,8 @@ module SimpleDeploy
|
|
26
27
|
case cmd
|
27
28
|
when 'attributes'
|
28
29
|
CLI::Attributes.new.show
|
30
|
+
when 'clone'
|
31
|
+
CLI::Clone.new.clone
|
29
32
|
when 'create'
|
30
33
|
CLI::Create.new.create
|
31
34
|
when 'destroy', 'delete'
|
@@ -57,13 +60,13 @@ module SimpleDeploy
|
|
57
60
|
when 'update'
|
58
61
|
CLI::Update.new.update
|
59
62
|
when '-h'
|
60
|
-
puts "simple_deploy [attributes|create|destroy|environments|events|instances|list|template|outputs|parameters|protect|resources|ssh|status|update] [options]"
|
63
|
+
puts "simple_deploy [attributes|clone|create|destroy|environments|events|instances|list|template|outputs|parameters|protect|resources|ssh|status|update] [options]"
|
61
64
|
puts "Append -h for help on specific subcommand."
|
62
65
|
when '-v'
|
63
66
|
puts SimpleDeploy::VERSION
|
64
67
|
else
|
65
68
|
puts "Unknown command: '#{cmd}'."
|
66
|
-
puts "simple_deploy [attributes|create|destroy|environments|events|instances|list|template|outputs|parameters|protect|resources|ssh|status|update] [options]"
|
69
|
+
puts "simple_deploy [attributes|clone|create|destroy|environments|events|instances|list|template|outputs|parameters|protect|resources|ssh|status|update] [options]"
|
67
70
|
puts "Append -h for help on specific subcommand."
|
68
71
|
exit 1
|
69
72
|
end
|
data/script/ci_setup
CHANGED
@@ -3,11 +3,13 @@
|
|
3
3
|
# Source RVM profile and set ruby / gemset
|
4
4
|
. /etc/profile
|
5
5
|
|
6
|
+
# Use simple deploy gemset
|
7
|
+
rvm use "1.9.3-p194@simple_deploy" --create
|
8
|
+
|
6
9
|
# Exit with error if any command returns non zero
|
7
10
|
set -e
|
8
11
|
|
9
12
|
# Bundle gems
|
10
|
-
rvm use "1.9.3-p125@simple_deploy" --create
|
11
13
|
bundle
|
12
14
|
|
13
15
|
# Run spec tests
|
@@ -0,0 +1,141 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'simple_deploy/cli'
|
3
|
+
|
4
|
+
describe SimpleDeploy::CLI::Clone do
|
5
|
+
|
6
|
+
describe 'clone' do
|
7
|
+
context 'filter_attributes' do
|
8
|
+
before do
|
9
|
+
@source_attributes = {
|
10
|
+
'AmiId' => 'ami-7b6a4e3e',
|
11
|
+
'AppEnv' => 'pod-2-cd-1',
|
12
|
+
'MaximumAppInstances' => 1,
|
13
|
+
'MinimumAppInstances' => 1,
|
14
|
+
'chef_repo_bucket_prefix' => 'intu-lc',
|
15
|
+
'chef_repo_domain' => 'live_community_chef_repo',
|
16
|
+
'deployment_user' => 'rmendes'
|
17
|
+
}
|
18
|
+
end
|
19
|
+
|
20
|
+
it 'should filter out deployment attributes' do
|
21
|
+
new_attributes = subject.send(:filter_attributes, @source_attributes)
|
22
|
+
|
23
|
+
new_attributes.size.should == 6
|
24
|
+
|
25
|
+
new_attributes[0].has_key?('AmiId').should be_true
|
26
|
+
new_attributes[0]['AmiId'].should == 'ami-7b6a4e3e'
|
27
|
+
new_attributes[1].has_key?('AppEnv').should be_true
|
28
|
+
new_attributes[1]['AppEnv'].should == 'pod-2-cd-1'
|
29
|
+
new_attributes[2].has_key?('MaximumAppInstances').should be_true
|
30
|
+
new_attributes[2]['MaximumAppInstances'].should == 1
|
31
|
+
new_attributes[3].has_key?('MinimumAppInstances').should be_true
|
32
|
+
new_attributes[3]['MinimumAppInstances'].should == 1
|
33
|
+
new_attributes[4].has_key?('chef_repo_bucket_prefix').should be_true
|
34
|
+
new_attributes[4]['chef_repo_bucket_prefix'].should == 'intu-lc'
|
35
|
+
new_attributes[5].has_key?('chef_repo_domain').should be_true
|
36
|
+
new_attributes[5]['chef_repo_domain'].should == 'live_community_chef_repo'
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
context 'merge_attributes' do
|
41
|
+
before do
|
42
|
+
@cloned_attributes = [
|
43
|
+
{ 'AmiId' => 'ami-7b6a4e3e' },
|
44
|
+
{ 'AppEnv' => 'pod-2-cd-1' },
|
45
|
+
{ 'MaximumAppInstances' => 1 },
|
46
|
+
{ 'MinimumAppInstances' => 1 },
|
47
|
+
{ 'chef_repo_bucket_prefix' => 'intu-lc' },
|
48
|
+
{ 'chef_repo_domain' => 'live_community_chef_repo' },
|
49
|
+
{ 'deployment_user' => 'rmendes' }
|
50
|
+
]
|
51
|
+
|
52
|
+
@override_attributes = [
|
53
|
+
{ 'chef_repo_bucket_prefix' => 'updated-intu-lc' },
|
54
|
+
{ 'chef_repo_domain' => 'updated_community_chef_repo' }
|
55
|
+
]
|
56
|
+
end
|
57
|
+
|
58
|
+
it 'should merge the override attributes' do
|
59
|
+
merged_attributes = subject.send(:merge_attributes, @cloned_attributes, @override_attributes)
|
60
|
+
|
61
|
+
merged_attributes.size.should == 7
|
62
|
+
|
63
|
+
merged_attributes[0].has_key?('AmiId').should be_true
|
64
|
+
merged_attributes[0]['AmiId'].should == 'ami-7b6a4e3e'
|
65
|
+
merged_attributes[1].has_key?('AppEnv').should be_true
|
66
|
+
merged_attributes[1]['AppEnv'].should == 'pod-2-cd-1'
|
67
|
+
merged_attributes[2].has_key?('MaximumAppInstances').should be_true
|
68
|
+
merged_attributes[2]['MaximumAppInstances'].should == 1
|
69
|
+
merged_attributes[3].has_key?('MinimumAppInstances').should be_true
|
70
|
+
merged_attributes[3]['MinimumAppInstances'].should == 1
|
71
|
+
merged_attributes[4].has_key?('chef_repo_bucket_prefix').should be_true
|
72
|
+
merged_attributes[4]['chef_repo_bucket_prefix'].should == 'updated-intu-lc'
|
73
|
+
merged_attributes[5].has_key?('chef_repo_domain').should be_true
|
74
|
+
merged_attributes[5]['chef_repo_domain'].should == 'updated_community_chef_repo'
|
75
|
+
merged_attributes[6].has_key?('deployment_user').should be_true
|
76
|
+
merged_attributes[6]['deployment_user'].should == 'rmendes'
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
80
|
+
context 'stack creation' do
|
81
|
+
before do
|
82
|
+
@config = mock 'config'
|
83
|
+
@logger = stub 'logger', :info => 'true'
|
84
|
+
@options = { :environment => 'my_env',
|
85
|
+
:log_level => 'debug',
|
86
|
+
:source_name => 'source_stack',
|
87
|
+
:new_name => 'new_stack',
|
88
|
+
:attributes => ['chef_repo_bucket_prefix=updated-intu-lc', 'chef_repo_domain=updated_community_chef_repo'] }
|
89
|
+
|
90
|
+
@source_stack = stub :attributes => {
|
91
|
+
'AmiId' => 'ami-7b6a4e3e',
|
92
|
+
'AppEnv' => 'pod-2-cd-1',
|
93
|
+
'MaximumAppInstances' => 1,
|
94
|
+
'MinimumAppInstances' => 1,
|
95
|
+
'chef_repo_bucket_prefix' => 'intu-lc',
|
96
|
+
'chef_repo_domain' => 'live_community_chef_repo',
|
97
|
+
'deployment_user' => 'rmendes'
|
98
|
+
}, :template => { 'foo' => 'bah' }
|
99
|
+
@new_stack = stub :attributes => {}
|
100
|
+
|
101
|
+
SimpleDeploy::Config.stub(:new).and_return(@config)
|
102
|
+
@config.should_receive(:environment).with('my_env').and_return(@config)
|
103
|
+
SimpleDeploy::SimpleDeployLogger.should_receive(:new).
|
104
|
+
with(:log_level => 'debug').
|
105
|
+
and_return(@logger)
|
106
|
+
|
107
|
+
SimpleDeploy::Stack.should_receive(:new).
|
108
|
+
with(:config => @config,
|
109
|
+
:environment => 'my_env',
|
110
|
+
:logger => @logger,
|
111
|
+
:name => 'source_stack').
|
112
|
+
and_return(@source_stack)
|
113
|
+
SimpleDeploy::Stack.should_receive(:new).
|
114
|
+
with(:config => @config,
|
115
|
+
:environment => 'my_env',
|
116
|
+
:logger => @logger,
|
117
|
+
:name => 'new_stack').
|
118
|
+
and_return(@new_stack)
|
119
|
+
end
|
120
|
+
|
121
|
+
it 'should create the new stack using the filtered and merged attributes' do
|
122
|
+
SimpleDeploy::CLI::Shared.should_receive(:valid_options?).
|
123
|
+
with(:provided => @options,
|
124
|
+
:required => [:environment, :source_name, :new_name])
|
125
|
+
Trollop.stub(:options).and_return(@options)
|
126
|
+
|
127
|
+
@new_stack.should_receive(:create) do |options|
|
128
|
+
options[:attributes].should == [{ 'AmiId' => 'ami-7b6a4e3e' },
|
129
|
+
{ 'AppEnv' => 'pod-2-cd-1' },
|
130
|
+
{ 'MaximumAppInstances' => 1 },
|
131
|
+
{ 'MinimumAppInstances' => 1 },
|
132
|
+
{ 'chef_repo_bucket_prefix' => 'updated-intu-lc' },
|
133
|
+
{ 'chef_repo_domain' => 'updated_community_chef_repo' }]
|
134
|
+
options[:template].should match /new_stack_template.json/
|
135
|
+
end
|
136
|
+
|
137
|
+
subject.clone
|
138
|
+
end
|
139
|
+
end
|
140
|
+
end
|
141
|
+
end
|
data/spec/cli/protect_spec.rb
CHANGED
@@ -19,7 +19,7 @@ describe SimpleDeploy::CLI::Protect do
|
|
19
19
|
it "should enable protection" do
|
20
20
|
options = { :environment => 'my_env',
|
21
21
|
:log_level => 'debug',
|
22
|
-
:name => 'my_stack',
|
22
|
+
:name => ['my_stack'],
|
23
23
|
:protection => 'on' }
|
24
24
|
|
25
25
|
SimpleDeploy::CLI::Shared.should_receive(:valid_options?).
|
@@ -40,10 +40,41 @@ describe SimpleDeploy::CLI::Protect do
|
|
40
40
|
subject.protect
|
41
41
|
end
|
42
42
|
|
43
|
+
it "should enable protection for multiple stacks" do
|
44
|
+
options = { :environment => 'my_env',
|
45
|
+
:log_level => 'debug',
|
46
|
+
:name => ['my_stack1', 'my_stack2'],
|
47
|
+
:protection => 'on' }
|
48
|
+
|
49
|
+
SimpleDeploy::CLI::Shared.should_receive(:valid_options?).
|
50
|
+
with(:provided => options,
|
51
|
+
:required => [:environment, :name])
|
52
|
+
Trollop.stub(:options).and_return(options)
|
53
|
+
|
54
|
+
stack = stub :attributes => { 'protection' => 'on' }
|
55
|
+
stack.should_receive(:update).twice.with(hash_including(:attributes => [{ 'protection' => 'on' }]))
|
56
|
+
|
57
|
+
SimpleDeploy::Stack.should_receive(:new).
|
58
|
+
with(:config => @config,
|
59
|
+
:environment => 'my_env',
|
60
|
+
:logger => @logger,
|
61
|
+
:name => 'my_stack1').
|
62
|
+
and_return(stack)
|
63
|
+
|
64
|
+
SimpleDeploy::Stack.should_receive(:new).
|
65
|
+
with(:config => @config,
|
66
|
+
:environment => 'my_env',
|
67
|
+
:logger => @logger,
|
68
|
+
:name => 'my_stack2').
|
69
|
+
and_return(stack)
|
70
|
+
|
71
|
+
subject.protect
|
72
|
+
end
|
73
|
+
|
43
74
|
it "should disable protection" do
|
44
75
|
options = { :environment => 'my_env',
|
45
76
|
:log_level => 'debug',
|
46
|
-
:name => 'my_stack',
|
77
|
+
:name => ['my_stack'],
|
47
78
|
:protection => 'off' }
|
48
79
|
|
49
80
|
SimpleDeploy::CLI::Shared.should_receive(:valid_options?).
|
@@ -63,5 +94,36 @@ describe SimpleDeploy::CLI::Protect do
|
|
63
94
|
|
64
95
|
subject.protect
|
65
96
|
end
|
97
|
+
|
98
|
+
it "should disable protection for multiple stacks" do
|
99
|
+
options = { :environment => 'my_env',
|
100
|
+
:log_level => 'debug',
|
101
|
+
:name => ['my_stack1', 'my_stack2'],
|
102
|
+
:protection => 'off' }
|
103
|
+
|
104
|
+
SimpleDeploy::CLI::Shared.should_receive(:valid_options?).
|
105
|
+
with(:provided => options,
|
106
|
+
:required => [:environment, :name])
|
107
|
+
Trollop.stub(:options).and_return(options)
|
108
|
+
|
109
|
+
stack = stub :attributes => { 'protection' => 'off' }
|
110
|
+
stack.should_receive(:update).twice.with(hash_including(:attributes => [{ 'protection' => 'off' }]))
|
111
|
+
|
112
|
+
SimpleDeploy::Stack.should_receive(:new).
|
113
|
+
with(:config => @config,
|
114
|
+
:environment => 'my_env',
|
115
|
+
:logger => @logger,
|
116
|
+
:name => 'my_stack1').
|
117
|
+
and_return(stack)
|
118
|
+
|
119
|
+
SimpleDeploy::Stack.should_receive(:new).
|
120
|
+
with(:config => @config,
|
121
|
+
:environment => 'my_env',
|
122
|
+
:logger => @logger,
|
123
|
+
:name => 'my_stack2').
|
124
|
+
and_return(stack)
|
125
|
+
|
126
|
+
subject.protect
|
127
|
+
end
|
66
128
|
end
|
67
129
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: simple_deploy
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.5.
|
4
|
+
version: 0.5.3
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-10-
|
12
|
+
date: 2012-10-11 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rspec
|
16
|
-
requirement:
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,15 @@ dependencies:
|
|
21
21
|
version: '0'
|
22
22
|
type: :development
|
23
23
|
prerelease: false
|
24
|
-
version_requirements:
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ! '>='
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '0'
|
25
30
|
- !ruby/object:Gem::Dependency
|
26
31
|
name: capistrano
|
27
|
-
requirement:
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
28
33
|
none: false
|
29
34
|
requirements:
|
30
35
|
- - ! '>='
|
@@ -32,21 +37,31 @@ dependencies:
|
|
32
37
|
version: '0'
|
33
38
|
type: :runtime
|
34
39
|
prerelease: false
|
35
|
-
version_requirements:
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ! '>='
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: '0'
|
36
46
|
- !ruby/object:Gem::Dependency
|
37
47
|
name: stackster
|
38
|
-
requirement:
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
39
49
|
none: false
|
40
50
|
requirements:
|
41
|
-
- - =
|
51
|
+
- - '='
|
42
52
|
- !ruby/object:Gem::Version
|
43
53
|
version: 0.3.0
|
44
54
|
type: :runtime
|
45
55
|
prerelease: false
|
46
|
-
version_requirements:
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
58
|
+
requirements:
|
59
|
+
- - '='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: 0.3.0
|
47
62
|
- !ruby/object:Gem::Dependency
|
48
63
|
name: tinder
|
49
|
-
requirement:
|
64
|
+
requirement: !ruby/object:Gem::Requirement
|
50
65
|
none: false
|
51
66
|
requirements:
|
52
67
|
- - ! '>='
|
@@ -54,10 +69,15 @@ dependencies:
|
|
54
69
|
version: '0'
|
55
70
|
type: :runtime
|
56
71
|
prerelease: false
|
57
|
-
version_requirements:
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
74
|
+
requirements:
|
75
|
+
- - ! '>='
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: '0'
|
58
78
|
- !ruby/object:Gem::Dependency
|
59
79
|
name: trollop
|
60
|
-
requirement:
|
80
|
+
requirement: !ruby/object:Gem::Requirement
|
61
81
|
none: false
|
62
82
|
requirements:
|
63
83
|
- - ! '>='
|
@@ -65,7 +85,12 @@ dependencies:
|
|
65
85
|
version: '0'
|
66
86
|
type: :runtime
|
67
87
|
prerelease: false
|
68
|
-
version_requirements:
|
88
|
+
version_requirements: !ruby/object:Gem::Requirement
|
89
|
+
none: false
|
90
|
+
requirements:
|
91
|
+
- - ! '>='
|
92
|
+
- !ruby/object:Gem::Version
|
93
|
+
version: '0'
|
69
94
|
description: I am designed to deploy artifacts uploaded by Heirloom
|
70
95
|
email:
|
71
96
|
- brett@weav.net
|
@@ -86,6 +111,7 @@ files:
|
|
86
111
|
- lib/simple_deploy/artifact.rb
|
87
112
|
- lib/simple_deploy/cli.rb
|
88
113
|
- lib/simple_deploy/cli/attributes.rb
|
114
|
+
- lib/simple_deploy/cli/clone.rb
|
89
115
|
- lib/simple_deploy/cli/create.rb
|
90
116
|
- lib/simple_deploy/cli/deploy.rb
|
91
117
|
- lib/simple_deploy/cli/destroy.rb
|
@@ -114,6 +140,7 @@ files:
|
|
114
140
|
- simple_deploy.gemspec
|
115
141
|
- spec/artifact_spec.rb
|
116
142
|
- spec/cli/attributes_spec.rb
|
143
|
+
- spec/cli/clone_spec.rb
|
117
144
|
- spec/cli/deploy_spec.rb
|
118
145
|
- spec/cli/destroy_spec.rb
|
119
146
|
- spec/cli/protect_spec.rb
|
@@ -148,13 +175,14 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
148
175
|
version: '0'
|
149
176
|
requirements: []
|
150
177
|
rubyforge_project: simple_deploy
|
151
|
-
rubygems_version: 1.8.
|
178
|
+
rubygems_version: 1.8.24
|
152
179
|
signing_key:
|
153
180
|
specification_version: 3
|
154
181
|
summary: I help with deployments
|
155
182
|
test_files:
|
156
183
|
- spec/artifact_spec.rb
|
157
184
|
- spec/cli/attributes_spec.rb
|
185
|
+
- spec/cli/clone_spec.rb
|
158
186
|
- spec/cli/deploy_spec.rb
|
159
187
|
- spec/cli/destroy_spec.rb
|
160
188
|
- spec/cli/protect_spec.rb
|