claws 1.0.0 → 1.1.0
Sign up to get free protection for your applications and to get access to all the features.
- data/bin/claws +4 -27
- data/lib/claws.rb +2 -0
- data/lib/claws/collection/base.rb +5 -9
- data/lib/claws/collection/ec2.rb +11 -3
- data/lib/claws/command/ec2.rb +1 -3
- data/lib/claws/command/version.rb +10 -0
- data/lib/claws/configuration.rb +6 -1
- data/lib/claws/options.rb +22 -10
- data/lib/claws/presenter/ec2.rb +7 -2
- data/lib/claws/version.rb +1 -1
- data/spec/collection/base_spec.rb +12 -15
- data/spec/collection/ec2_spec.rb +74 -7
- data/spec/command/ec2_spec.rb +31 -16
- data/spec/configuration_spec.rb +10 -0
- data/spec/options_spec.rb +5 -9
- data/spec/presenter/ec2_spec.rb +11 -1
- metadata +9 -8
data/bin/claws
CHANGED
@@ -4,33 +4,10 @@ require 'optparse'
|
|
4
4
|
require 'ostruct'
|
5
5
|
require 'yaml'
|
6
6
|
|
7
|
-
options =
|
8
|
-
{
|
9
|
-
:config_file => nil,
|
10
|
-
:connect => true,
|
11
|
-
:initialize => false,
|
12
|
-
:selection => nil,
|
13
|
-
}
|
14
|
-
)
|
7
|
+
options = Claws::Options.parse
|
15
8
|
|
16
|
-
|
17
|
-
opts.banner = 'Usage: claws [options]'
|
9
|
+
Claws::Command::Initialize.exec if options.initialize
|
18
10
|
|
19
|
-
|
20
|
-
options.connect = false
|
21
|
-
end
|
11
|
+
Claws::Command::Version.exec if options.version
|
22
12
|
|
23
|
-
|
24
|
-
options.selection = n.to_i
|
25
|
-
end
|
26
|
-
|
27
|
-
opts.on('-i', '--init', 'Install the default configuration file for the application') do
|
28
|
-
options.initialize = true
|
29
|
-
end
|
30
|
-
end.parse!
|
31
|
-
|
32
|
-
if options.initialize
|
33
|
-
Claws::Command::Initialize.exec
|
34
|
-
else
|
35
|
-
Claws::Command::EC2.exec options
|
36
|
-
end
|
13
|
+
Claws::Command::EC2.exec options
|
data/lib/claws.rb
CHANGED
@@ -3,16 +3,12 @@ require 'aws-sdk'
|
|
3
3
|
module Claws
|
4
4
|
module Collection
|
5
5
|
class Base
|
6
|
-
|
7
|
-
AWS.config(credentials)
|
8
|
-
AWS.start_memoizing
|
9
|
-
end
|
6
|
+
attr_accessor :config
|
10
7
|
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
collection
|
8
|
+
def initialize( config )
|
9
|
+
self.config = config
|
10
|
+
AWS.config(config.aws)
|
11
|
+
AWS.start_memoizing
|
16
12
|
end
|
17
13
|
end
|
18
14
|
end
|
data/lib/claws/collection/ec2.rb
CHANGED
@@ -5,11 +5,19 @@ require 'claws/presenter/ec2'
|
|
5
5
|
module Claws
|
6
6
|
module Collection
|
7
7
|
class EC2 < Claws::Collection::Base
|
8
|
-
def
|
8
|
+
def get(filters = {})
|
9
9
|
collection = []
|
10
|
-
|
11
|
-
|
10
|
+
|
11
|
+
AWS::EC2.new.regions.each do |region|
|
12
|
+
if config.ec2.regions
|
13
|
+
next unless config.ec2.regions.include?(region.name)
|
14
|
+
end
|
15
|
+
|
16
|
+
region.instances.each do |instance|
|
17
|
+
collection << Claws::EC2::Presenter.new(instance, :region => region.name)
|
18
|
+
end
|
12
19
|
end
|
20
|
+
|
13
21
|
collection
|
14
22
|
end
|
15
23
|
end
|
data/lib/claws/command/ec2.rb
CHANGED
data/lib/claws/configuration.rb
CHANGED
@@ -19,7 +19,12 @@ module Claws
|
|
19
19
|
self.capistrano = OpenStruct.new( yaml['capistrano'] )
|
20
20
|
self.ssh = OpenStruct.new( yaml['ssh'] )
|
21
21
|
self.aws = yaml['aws']
|
22
|
-
self.ec2 = OpenStruct.new(
|
22
|
+
self.ec2 = OpenStruct.new(
|
23
|
+
{
|
24
|
+
:fields => yaml['ec2']['fields'],
|
25
|
+
:regions => yaml['ec2']['regions'],
|
26
|
+
}
|
27
|
+
)
|
23
28
|
end
|
24
29
|
end
|
25
30
|
end
|
data/lib/claws/options.rb
CHANGED
@@ -5,31 +5,43 @@ module Claws
|
|
5
5
|
def self.parse
|
6
6
|
options = OpenStruct.new(
|
7
7
|
{
|
8
|
+
:config_file => nil,
|
8
9
|
:connect => true,
|
10
|
+
:initialize => false,
|
11
|
+
:version => false,
|
12
|
+
:selection => nil,
|
9
13
|
:source => 'ec2',
|
10
|
-
:choice => nil,
|
11
14
|
}
|
12
15
|
)
|
13
16
|
|
14
17
|
OptionParser.new do |opts|
|
15
|
-
opts.banner =
|
18
|
+
opts.banner = 'Usage: claws [options]'
|
16
19
|
|
17
|
-
opts.on('-d', '--display-only', '
|
20
|
+
opts.on('-d', '--display-only', 'Display host status only and exit') do
|
18
21
|
options.connect = false
|
19
22
|
end
|
20
23
|
|
21
|
-
opts.on('-c', '--choice N', Float, '
|
22
|
-
options.
|
24
|
+
opts.on('-c', '--choice N', Float, 'Enter the number of the host to automatically connect to') do |n|
|
25
|
+
options.selection = n.to_i
|
23
26
|
end
|
24
27
|
|
25
|
-
opts.on('-
|
26
|
-
options.
|
27
|
-
|
28
|
+
opts.on('-i', '--init', 'Install the default configuration file for the application') do
|
29
|
+
options.initialize = true
|
30
|
+
end
|
31
|
+
|
32
|
+
opts.on('-s', '--source S', String, 'define the AWS source - default is ec2') do |source|
|
33
|
+
options.source = source
|
34
|
+
end
|
35
|
+
|
36
|
+
opts.on('-v', '--version', 'Display the version number and exit') do
|
37
|
+
options.version = true
|
28
38
|
end
|
29
39
|
end.parse!
|
30
40
|
|
31
|
-
|
32
|
-
|
41
|
+
unless ARGV.empty?
|
42
|
+
options.environment = ARGV.shift
|
43
|
+
options.role = ARGV.shift
|
44
|
+
end
|
33
45
|
|
34
46
|
options
|
35
47
|
end
|
data/lib/claws/presenter/ec2.rb
CHANGED
@@ -6,12 +6,17 @@ module Claws
|
|
6
6
|
class Presenter
|
7
7
|
attr_writer :roles
|
8
8
|
|
9
|
-
def initialize(instance,
|
9
|
+
def initialize(instance, options = {})
|
10
10
|
@ec2 = instance.extend(Claws::Support)
|
11
|
-
@roles =
|
11
|
+
@roles = options[:roles] || []
|
12
|
+
@region = options[:region]
|
12
13
|
freeze
|
13
14
|
end
|
14
15
|
|
16
|
+
def region
|
17
|
+
@region || 'N/A'
|
18
|
+
end
|
19
|
+
|
15
20
|
def roles
|
16
21
|
@roles.empty? ? 'N/A' : @roles.join(', ')
|
17
22
|
end
|
data/lib/claws/version.rb
CHANGED
@@ -5,26 +5,23 @@ require 'claws/configuration'
|
|
5
5
|
describe Claws::Collection::Base do
|
6
6
|
subject { Claws::Collection::Base }
|
7
7
|
|
8
|
-
|
9
|
-
|
10
|
-
|
8
|
+
let(:credentials) do
|
9
|
+
{
|
10
|
+
:access_key_id => 'asdf',
|
11
|
+
:secret_access_key => 'qwer'
|
12
|
+
}
|
13
|
+
end
|
11
14
|
|
12
|
-
|
13
|
-
|
14
|
-
AWS.should_receive(:start_memoizing).and_return(nil)
|
15
|
+
let(:config) do
|
16
|
+
double('Claws::Configuration', :aws => credentials)
|
15
17
|
end
|
16
18
|
|
17
19
|
it 'establishes a connection to the mothership' do
|
20
|
+
AWS.should_receive(:config).with(credentials).and_return(true)
|
21
|
+
AWS.should_receive(:start_memoizing).and_return(nil)
|
22
|
+
|
18
23
|
expect {
|
19
|
-
subject.
|
24
|
+
subject.new(config)
|
20
25
|
}.to_not raise_exception
|
21
26
|
end
|
22
|
-
|
23
|
-
it 'builds a collection' do
|
24
|
-
subject.connect(@config.aws_credentials)
|
25
|
-
|
26
|
-
subject.build do |collection|
|
27
|
-
10.times {|i| collection << i}
|
28
|
-
end.should == (0..9).to_a
|
29
|
-
end
|
30
27
|
end
|
data/spec/collection/ec2_spec.rb
CHANGED
@@ -5,14 +5,81 @@ require 'claws/collection/ec2'
|
|
5
5
|
describe Claws::Collection::EC2 do
|
6
6
|
subject { Claws::Collection::EC2 }
|
7
7
|
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
8
|
+
let(:credentials) do
|
9
|
+
{
|
10
|
+
:access_key_id => 'asdf',
|
11
|
+
:secret_access_key => 'qwer'
|
12
|
+
}
|
13
|
+
end
|
14
|
+
|
15
|
+
let(:regions) do
|
16
|
+
[
|
17
|
+
double('AWS::EC2::Region',
|
18
|
+
:name => 'us-east-1',
|
19
|
+
:instances =>
|
20
|
+
[
|
21
|
+
double('AWS::EC2::Instance'),
|
22
|
+
double('AWS::EC2::Instance'),
|
23
|
+
],
|
24
|
+
),
|
25
|
+
double('AWS::EC2::Region',
|
26
|
+
:name => 'eu-east-1',
|
27
|
+
:instances =>
|
28
|
+
[
|
29
|
+
double('AWS::EC2::Instance'),
|
30
|
+
double('AWS::EC2::Instance'),
|
31
|
+
],
|
32
|
+
),
|
33
|
+
]
|
34
|
+
end
|
35
|
+
|
36
|
+
context 'gets all instances in regions' do
|
37
|
+
it 'not defined in configuration' do
|
38
|
+
AWS.should_receive(:config).with(credentials).and_return(true)
|
39
|
+
AWS.should_receive(:start_memoizing).and_return(nil)
|
40
|
+
|
41
|
+
AWS::EC2.should_receive(:new).and_return(
|
42
|
+
double('AWS::EC2::RegionsCollection', :regions => regions)
|
43
|
+
)
|
44
|
+
|
45
|
+
config = double('Claws::Configuration',
|
46
|
+
:aws => credentials,
|
47
|
+
:ec2 => OpenStruct.new({:regions => nil}),
|
48
|
+
)
|
49
|
+
|
50
|
+
subject.new(config).get.size.should == 4
|
51
|
+
end
|
52
|
+
|
53
|
+
it 'defined in configuation' do
|
54
|
+
AWS.should_receive(:config).with(credentials).and_return(true)
|
55
|
+
AWS.should_receive(:start_memoizing).and_return(nil)
|
56
|
+
|
57
|
+
AWS::EC2.should_receive(:new).and_return(
|
58
|
+
double('AWS::EC2::RegionsCollection', :regions => regions)
|
59
|
+
)
|
60
|
+
|
61
|
+
config = double('Claws::Configuration',
|
62
|
+
:aws => credentials,
|
63
|
+
:ec2 => OpenStruct.new({:regions => %w(us-east-1 eu-east-1)}),
|
64
|
+
)
|
65
|
+
|
66
|
+
subject.new(config).get.size.should == 4
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
it 'gets all instances for specified regions' do
|
71
|
+
AWS.should_receive(:config).with(credentials).and_return(true)
|
72
|
+
AWS.should_receive(:start_memoizing).and_return(nil)
|
73
|
+
|
74
|
+
AWS::EC2.should_receive(:new).and_return(
|
75
|
+
double('AWS::EC2::RegionsCollection', :regions => regions)
|
76
|
+
)
|
77
|
+
|
78
|
+
config = double('Claws::Configuration',
|
79
|
+
:aws => credentials,
|
80
|
+
:ec2 => OpenStruct.new({:regions => %w(us-east-1)}),
|
14
81
|
)
|
15
82
|
|
16
|
-
subject.get.size.should == 2
|
83
|
+
subject.new(config).get.size.should == 2
|
17
84
|
end
|
18
85
|
end
|
data/spec/command/ec2_spec.rb
CHANGED
@@ -50,10 +50,14 @@ describe Claws::Command::EC2 do
|
|
50
50
|
let(:options) { OpenStruct.new( { :config_file => nil, } ) }
|
51
51
|
|
52
52
|
context 'instance collections' do
|
53
|
-
|
54
53
|
it 'retrieves' do
|
55
|
-
Claws::Collection::EC2.should_receive(:
|
56
|
-
|
54
|
+
Claws::Collection::EC2.should_receive(:new).and_return(
|
55
|
+
double(Claws::Collection::EC2, :get =>
|
56
|
+
[
|
57
|
+
double(AWS::EC2::Instance, :id => 'test', :status => 'running', :dns_name => 'test.com'),
|
58
|
+
]
|
59
|
+
)
|
60
|
+
)
|
57
61
|
|
58
62
|
capture_stdout {
|
59
63
|
subject.exec options
|
@@ -61,9 +65,11 @@ describe Claws::Command::EC2 do
|
|
61
65
|
end
|
62
66
|
|
63
67
|
it 'handles errors retrieving' do
|
64
|
-
Claws::Collection::EC2.should_receive(:
|
65
|
-
|
66
|
-
|
68
|
+
Claws::Collection::EC2.should_receive(:new).and_return(
|
69
|
+
double(Claws::Collection::EC2, :get => Exception.new)
|
70
|
+
)
|
71
|
+
|
72
|
+
#subject.should_receive(:puts).once
|
67
73
|
|
68
74
|
expect {
|
69
75
|
subject.exec options
|
@@ -72,8 +78,13 @@ describe Claws::Command::EC2 do
|
|
72
78
|
end
|
73
79
|
|
74
80
|
it 'performs report' do
|
75
|
-
Claws::Collection::EC2.should_receive(:
|
76
|
-
|
81
|
+
Claws::Collection::EC2.should_receive(:new).and_return(
|
82
|
+
double(Claws::Collection::EC2, :get =>
|
83
|
+
[
|
84
|
+
double(AWS::EC2::Instance, :id => 'test', :status => 'running', :dns_name => 'test.com'),
|
85
|
+
]
|
86
|
+
)
|
87
|
+
)
|
77
88
|
|
78
89
|
expect {
|
79
90
|
capture_stdout {
|
@@ -114,8 +125,9 @@ describe Claws::Command::EC2 do
|
|
114
125
|
end
|
115
126
|
|
116
127
|
it 'automatically connects to the server' do
|
117
|
-
Claws::Collection::EC2.should_receive(:
|
118
|
-
|
128
|
+
Claws::Collection::EC2.should_receive(:new).and_return(
|
129
|
+
double(Claws::Collection::EC2, :get => instances)
|
130
|
+
)
|
119
131
|
|
120
132
|
subject.should_receive(:puts).twice
|
121
133
|
subject.should_receive(:system).with('ssh test@test.com').and_return(0)
|
@@ -136,8 +148,9 @@ describe Claws::Command::EC2 do
|
|
136
148
|
end
|
137
149
|
|
138
150
|
it 'handles user inputed selection from the command line' do
|
139
|
-
Claws::Collection::EC2.should_receive(:
|
140
|
-
|
151
|
+
Claws::Collection::EC2.should_receive(:new).and_return(
|
152
|
+
double(Claws::Collection::EC2, :get => instances)
|
153
|
+
)
|
141
154
|
|
142
155
|
subject.should_receive(:puts).twice
|
143
156
|
subject.should_receive(:system).with('ssh test@test2.com').and_return(0)
|
@@ -149,8 +162,9 @@ describe Claws::Command::EC2 do
|
|
149
162
|
end
|
150
163
|
|
151
164
|
it 'presents a selection and connects to the server' do
|
152
|
-
Claws::Collection::EC2.should_receive(:
|
153
|
-
|
165
|
+
Claws::Collection::EC2.should_receive(:new).and_return(
|
166
|
+
double(Claws::Collection::EC2, :get => instances)
|
167
|
+
)
|
154
168
|
|
155
169
|
subject.should_receive(:gets).and_return('1\n')
|
156
170
|
subject.should_receive(:puts).once
|
@@ -162,8 +176,9 @@ describe Claws::Command::EC2 do
|
|
162
176
|
end
|
163
177
|
|
164
178
|
it 'presents a selection and allows a user to quit' do
|
165
|
-
Claws::Collection::EC2.should_receive(:
|
166
|
-
|
179
|
+
Claws::Collection::EC2.should_receive(:new).and_return(
|
180
|
+
double(Claws::Collection::EC2, :get => instances)
|
181
|
+
)
|
167
182
|
|
168
183
|
subject.should_receive(:gets).and_return('q\n')
|
169
184
|
|
data/spec/configuration_spec.rb
CHANGED
@@ -13,6 +13,10 @@ describe Claws::Configuration do
|
|
13
13
|
'aws_user' => 'test',
|
14
14
|
},
|
15
15
|
'ec2' => {
|
16
|
+
'regions' => [
|
17
|
+
'us-east-1',
|
18
|
+
'eu-east-1',
|
19
|
+
],
|
16
20
|
'fields' => {
|
17
21
|
'id' => {
|
18
22
|
'width' => 10,
|
@@ -80,6 +84,12 @@ describe Claws::Configuration do
|
|
80
84
|
YAML.should_receive(:load_file).and_return(yaml)
|
81
85
|
end
|
82
86
|
|
87
|
+
it 'defines regions' do
|
88
|
+
regions = config.ec2.regions
|
89
|
+
regions[0].should == 'us-east-1'
|
90
|
+
regions[1].should == 'eu-east-1'
|
91
|
+
end
|
92
|
+
|
83
93
|
context 'fields' do
|
84
94
|
it 'defines id hash' do
|
85
95
|
id = config.ec2.fields['id']
|
data/spec/options_spec.rb
CHANGED
@@ -1,8 +1,6 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
require 'claws/options'
|
3
3
|
|
4
|
-
ARGV.clear
|
5
|
-
|
6
4
|
def cli(args)
|
7
5
|
ARGV.push(*args)
|
8
6
|
yield
|
@@ -15,7 +13,7 @@ describe Claws::Options do
|
|
15
13
|
options = Claws::Options.parse
|
16
14
|
options.connect.should be_true
|
17
15
|
options.source.should == 'ec2'
|
18
|
-
options.
|
16
|
+
options.selection.should be_nil
|
19
17
|
end
|
20
18
|
end
|
21
19
|
|
@@ -35,11 +33,11 @@ describe Claws::Options do
|
|
35
33
|
|
36
34
|
it 'accepts a choice flag' do
|
37
35
|
cli %w{-c 10} do
|
38
|
-
Claws::Options.parse.
|
36
|
+
Claws::Options.parse.selection.should == 10
|
39
37
|
end
|
40
38
|
|
41
39
|
cli %w{--choice 10} do
|
42
|
-
Claws::Options.parse.
|
40
|
+
Claws::Options.parse.selection.should == 10
|
43
41
|
end
|
44
42
|
end
|
45
43
|
|
@@ -47,25 +45,23 @@ describe Claws::Options do
|
|
47
45
|
cli %w{-s elb} do
|
48
46
|
options = Claws::Options.parse
|
49
47
|
options.source.should == 'elb'
|
50
|
-
options.connect.should be_false
|
51
48
|
end
|
52
49
|
|
53
50
|
cli %w{--source elb} do
|
54
51
|
options = Claws::Options.parse
|
55
52
|
options.source.should == 'elb'
|
56
|
-
options.connect.should be_false
|
57
53
|
end
|
58
54
|
end
|
59
55
|
|
60
56
|
context 'capistrano' do
|
61
57
|
it 'defines the environment' do
|
62
|
-
cli %w{
|
58
|
+
cli %w{production app} do
|
63
59
|
Claws::Options.parse.environment.should == 'production'
|
64
60
|
end
|
65
61
|
end
|
66
62
|
|
67
63
|
it 'defines the role' do
|
68
|
-
cli %w{
|
64
|
+
cli %w{production app} do
|
69
65
|
Claws::Options.parse.role.should == 'app'
|
70
66
|
end
|
71
67
|
end
|
data/spec/presenter/ec2_spec.rb
CHANGED
@@ -28,7 +28,7 @@ describe Claws::EC2::Presenter do
|
|
28
28
|
cap = double('Claws::Capistrano')
|
29
29
|
cap.stub(:roles).with(host).and_return(%w{app web})
|
30
30
|
|
31
|
-
@full_presenter = subject.new(full_instance, cap.roles(full_instance.public_dns))
|
31
|
+
@full_presenter = subject.new(full_instance, :region => 'us-east-1', :roles => cap.roles(full_instance.public_dns))
|
32
32
|
|
33
33
|
less_instance = double(AWS::EC2, :tags => nil)
|
34
34
|
@less_presenter = subject.new(less_instance)
|
@@ -42,6 +42,16 @@ describe Claws::EC2::Presenter do
|
|
42
42
|
end
|
43
43
|
end
|
44
44
|
|
45
|
+
describe '#region' do
|
46
|
+
it 'can be defined' do
|
47
|
+
@full_presenter.region.should == 'us-east-1'
|
48
|
+
end
|
49
|
+
|
50
|
+
it 'is not required' do
|
51
|
+
@less_presenter.region.should == 'N/A'
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
45
55
|
describe '#roles' do
|
46
56
|
it 'can be defined' do
|
47
57
|
@full_presenter.roles.should == 'app, web'
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: claws
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.1.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -10,11 +10,11 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2012-05-
|
13
|
+
date: 2012-05-27 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: bundler
|
17
|
-
requirement: &
|
17
|
+
requirement: &2151922880 !ruby/object:Gem::Requirement
|
18
18
|
none: false
|
19
19
|
requirements:
|
20
20
|
- - ! '>='
|
@@ -22,10 +22,10 @@ dependencies:
|
|
22
22
|
version: 1.0.0
|
23
23
|
type: :development
|
24
24
|
prerelease: false
|
25
|
-
version_requirements: *
|
25
|
+
version_requirements: *2151922880
|
26
26
|
- !ruby/object:Gem::Dependency
|
27
27
|
name: command_line_reporter
|
28
|
-
requirement: &
|
28
|
+
requirement: &2151922140 !ruby/object:Gem::Requirement
|
29
29
|
none: false
|
30
30
|
requirements:
|
31
31
|
- - ! '>='
|
@@ -33,10 +33,10 @@ dependencies:
|
|
33
33
|
version: 3.2.1
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
|
-
version_requirements: *
|
36
|
+
version_requirements: *2151922140
|
37
37
|
- !ruby/object:Gem::Dependency
|
38
38
|
name: aws-sdk
|
39
|
-
requirement: &
|
39
|
+
requirement: &2151921480 !ruby/object:Gem::Requirement
|
40
40
|
none: false
|
41
41
|
requirements:
|
42
42
|
- - ! '>='
|
@@ -44,7 +44,7 @@ dependencies:
|
|
44
44
|
version: '1.0'
|
45
45
|
type: :runtime
|
46
46
|
prerelease: false
|
47
|
-
version_requirements: *
|
47
|
+
version_requirements: *2151921480
|
48
48
|
description: A command line tool that provides a configurable report on the status
|
49
49
|
of all of your EC2 hosts and provides trivial ssh access for connectivity. Never
|
50
50
|
copy and paste the public dns for a host again!
|
@@ -59,6 +59,7 @@ files:
|
|
59
59
|
- lib/claws/collection/ec2.rb
|
60
60
|
- lib/claws/command/ec2.rb
|
61
61
|
- lib/claws/command/initialize.rb
|
62
|
+
- lib/claws/command/version.rb
|
62
63
|
- lib/claws/configuration.rb
|
63
64
|
- lib/claws/options.rb
|
64
65
|
- lib/claws/presenter/ec2.rb
|