ey-pro-cli 0.0.11 → 0.0.12
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +1 -1
- data/lib/ey_pro_cli.rb +59 -18
- data/lib/ey_pro_cli/version.rb +1 -1
- data/spec/applications_spec.rb +30 -0
- data/spec/deploy_spec.rb +11 -10
- data/spec/environments_spec.rb +30 -0
- data/spec/support/core_helper.rb +2 -2
- metadata +6 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 841e1fb0799d11050a57db10216ad8f5484cc8df
|
4
|
+
data.tar.gz: dba860a5a097f51a11d1b8473e587accea28bb57
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 004130ef00609c951ec86ffd4385717c671636b1d20f8daebb99f130e6dbdc655f7a33c3d9ffdeee6efb9a309fefc1d55bda696c29ff934a43f8e6fe6c3785a5
|
7
|
+
data.tar.gz: dbde671dc822a8b27ed660fc7d9d34afc8265faaf3b1dc6736c9c8344040af733dc2ada960925466642dcba926ad4c07d9b570984708b8d68a1adef83c7e0f12
|
data/Gemfile.lock
CHANGED
data/lib/ey_pro_cli.rb
CHANGED
@@ -20,13 +20,39 @@ class EyProCli < Thor
|
|
20
20
|
end
|
21
21
|
end
|
22
22
|
|
23
|
-
desc "accounts", "Retrieve a list of Engine Yard PRO accounts that you have access to"
|
23
|
+
desc "accounts", "Retrieve a list of Engine Yard PRO accounts that you have access to."
|
24
24
|
|
25
25
|
def accounts
|
26
|
-
|
27
|
-
|
26
|
+
table_data = TablePrint::Printer.new(current_accounts, [{id: {width: 36}}, :name])
|
27
|
+
puts table_data.table_print
|
28
|
+
end
|
29
|
+
|
30
|
+
desc "environments", "Retrieve a list of Engine Yard PRO environments that you have access to."
|
31
|
+
option :account, desc: "Name or ID of the account to list environments for."
|
32
|
+
|
33
|
+
def environments
|
34
|
+
environments = if options[:account]
|
35
|
+
core_account_for(options).environments.all
|
36
|
+
else
|
37
|
+
current_accounts.map(&:environments).flatten.sort_by(&:id)
|
38
|
+
end
|
39
|
+
|
40
|
+
|
41
|
+
table_data = TablePrint::Printer.new(environments, [{id: {width: 10}}, :name])
|
42
|
+
puts table_data.table_print
|
43
|
+
end
|
44
|
+
|
45
|
+
desc "applications", "Retrieve a list of Engine Yard PRO applications that you have access to."
|
46
|
+
option :account, desc: "Name or ID of the account to list applications for."
|
47
|
+
|
48
|
+
def applications
|
49
|
+
applications = if options[:account]
|
50
|
+
core_account_for(options).applications.all
|
51
|
+
else
|
52
|
+
current_accounts.map(&:applications).flatten.sort_by(&:id)
|
53
|
+
end
|
28
54
|
|
29
|
-
table_data = TablePrint::Printer.new(
|
55
|
+
table_data = TablePrint::Printer.new(applications, [{id: {width: 10}}, :name])
|
30
56
|
puts table_data.table_print
|
31
57
|
end
|
32
58
|
|
@@ -77,9 +103,10 @@ class EyProCli < Thor
|
|
77
103
|
option "no-update-check", desc: "Do not check for updates."
|
78
104
|
|
79
105
|
def deploy
|
106
|
+
options = self.options.dup # Thor has a weird bug in it that seems to occassionally wipe out the class options
|
80
107
|
check_for_updates unless options["no-update-check"]
|
81
108
|
operator, environment = core_operator_and_environment_for(options)
|
82
|
-
|
109
|
+
if operator.is_a?(Ey::Core::Client::Account)
|
83
110
|
abort <<-EOF
|
84
111
|
Found account #{operator.name} but requested account #{options[:account]}.
|
85
112
|
Use the ID of the account instead of the name.
|
@@ -91,6 +118,11 @@ This can be retrieved by running "ey-pro accounts".
|
|
91
118
|
unless environment
|
92
119
|
abort "Unable to locate environment #{options[:environment]} in #{operator.name}".red
|
93
120
|
end
|
121
|
+
|
122
|
+
unless options[:account]
|
123
|
+
options = self.options.dup.merge(environment: environment)
|
124
|
+
end
|
125
|
+
|
94
126
|
app = core_application_for(options)
|
95
127
|
|
96
128
|
deploy_options = {}
|
@@ -136,24 +168,30 @@ This can be retrieved by running "ey-pro accounts".
|
|
136
168
|
|
137
169
|
private
|
138
170
|
|
139
|
-
def
|
140
|
-
|
171
|
+
def current_accounts
|
172
|
+
core_client.users.current.accounts
|
173
|
+
end
|
174
|
+
|
175
|
+
def longest_length_by_name(collection)
|
176
|
+
collection.map(&:name).group_by(&:size).max.last.length
|
141
177
|
end
|
142
178
|
|
143
179
|
def check_for_updates
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
current_version =
|
150
|
-
if Gem::Version.new(EyProCliVersion::VERSION) <
|
180
|
+
return nil if ENV["MOCK_CLI"]
|
181
|
+
|
182
|
+
source = Gem::Source.new("https://rubygems.org")
|
183
|
+
sources = Gem::SourceList.from([source])
|
184
|
+
fetcher = Gem::SpecFetcher.new(sources)
|
185
|
+
current_version = fetcher.available_specs(:latest).first.values.first.detect { |g| g.name == 'ey-pro-cli' }.version
|
186
|
+
if Gem::Version.new(EyProCliVersion::VERSION) < current_version
|
151
187
|
print <<-EOF
|
152
188
|
ey-pro-cli gem outdated, consider updating!
|
153
189
|
Installed version: #{EyProCliVersion::VERSION}
|
154
|
-
Current Version: #{current_version}
|
190
|
+
Current Version: #{current_version.to_s}
|
155
191
|
EOF
|
156
192
|
.yellow
|
193
|
+
else
|
194
|
+
puts "ey-pro-cli is up to date".green
|
157
195
|
end
|
158
196
|
end
|
159
197
|
|
@@ -168,7 +206,7 @@ Current Version: #{current_version}
|
|
168
206
|
|
169
207
|
def core_account_for(options={})
|
170
208
|
@core_account ||= core_client.accounts.get(options[:account])
|
171
|
-
@core_account ||= core_client.accounts.first(name: options[:account])
|
209
|
+
@core_account ||= core_client.users.current.accounts.first(name: options[:account])
|
172
210
|
end
|
173
211
|
|
174
212
|
def operator(options)
|
@@ -187,10 +225,13 @@ Current Version: #{current_version}
|
|
187
225
|
rescue
|
188
226
|
options[:app]
|
189
227
|
end
|
228
|
+
|
229
|
+
actor = options[:environment].is_a?(Ey::Core::Client::Environment) ? options[:environment].account : operator(options)
|
230
|
+
|
190
231
|
if app.is_a?(Integer)
|
191
|
-
|
232
|
+
actor.applications.get(app)
|
192
233
|
else
|
193
|
-
|
234
|
+
actor.applications.first(name: app)
|
194
235
|
end
|
195
236
|
end
|
196
237
|
end
|
data/lib/ey_pro_cli/version.rb
CHANGED
@@ -0,0 +1,30 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe EyProCli do
|
4
|
+
describe "applications" do
|
5
|
+
context "with a token" do
|
6
|
+
context "with multiple accounts" do
|
7
|
+
before(:each) do
|
8
|
+
create_core_credentials
|
9
|
+
@accounts = create_accounts(subject.core_client, quantity: 2)
|
10
|
+
@applications = @accounts.map { |a| boot_environment(subject.core_client, account: a)[2] }
|
11
|
+
end
|
12
|
+
|
13
|
+
it "returns a list of applications" do
|
14
|
+
output = capture(:stdout) { subject.applications }
|
15
|
+
|
16
|
+
expect(output).to match(/#{@applications.first.name}/)
|
17
|
+
expect(output).to match(/#{@applications.last.name}/)
|
18
|
+
end
|
19
|
+
|
20
|
+
it "returns the list of applications for the specified account" do
|
21
|
+
subject.options = {account: @accounts.first.id}
|
22
|
+
|
23
|
+
output = capture(:stdout) { subject.applications }
|
24
|
+
expect(output).to match(/#{@accounts.first.applications.first.name}/)
|
25
|
+
expect(output).not_to match(/#{@accounts.last.applications.first.name}/)
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
data/spec/deploy_spec.rb
CHANGED
@@ -33,19 +33,20 @@ describe EyProCli do
|
|
33
33
|
end
|
34
34
|
end
|
35
35
|
|
36
|
-
|
37
|
-
|
36
|
+
# @TODO: Moved the updater to rubygems, need to figure out how to test these
|
37
|
+
#context "--no-update-check" do
|
38
|
+
#before(:each) { subject.options = options }
|
38
39
|
|
39
|
-
it "has the updater message without the flag" do
|
40
|
-
expect(capture(:stdout) { subject.deploy }).to match(/gem outdated, consider updating/i)
|
41
|
-
end
|
40
|
+
#it "has the updater message without the flag" do
|
41
|
+
#expect(capture(:stdout) { subject.deploy }).to match(/gem outdated, consider updating/i)
|
42
|
+
#end
|
42
43
|
|
43
|
-
it "does not have the message with the flag" do
|
44
|
-
options.merge!("no-update-check" => true)
|
44
|
+
#it "does not have the message with the flag" do
|
45
|
+
#options.merge!("no-update-check" => true)
|
45
46
|
|
46
|
-
expect(capture(:stdout) { subject.deploy }).not_to match(/gem outdated, consider updating/i)
|
47
|
-
end
|
48
|
-
end
|
47
|
+
#expect(capture(:stdout) { subject.deploy }).not_to match(/gem outdated, consider updating/i)
|
48
|
+
#end
|
49
|
+
#end
|
49
50
|
end
|
50
51
|
end
|
51
52
|
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe EyProCli do
|
4
|
+
describe "environments" do
|
5
|
+
context "with a token" do
|
6
|
+
context "with multiple accounts" do
|
7
|
+
before(:each) do
|
8
|
+
create_core_credentials
|
9
|
+
@accounts = create_accounts(subject.core_client, quantity: 2)
|
10
|
+
@environments = @accounts.map { |a| boot_environment(subject.core_client, account: a)[1] }
|
11
|
+
end
|
12
|
+
|
13
|
+
it "returns a list of environments" do
|
14
|
+
output = capture(:stdout) { subject.environments }
|
15
|
+
|
16
|
+
expect(output).to match(/#{@environments.first.name}/)
|
17
|
+
expect(output).to match(/#{@environments.last.name}/)
|
18
|
+
end
|
19
|
+
|
20
|
+
it "returns the list of environments for the specified account" do
|
21
|
+
subject.options = {account: @accounts.first.id}
|
22
|
+
|
23
|
+
output = capture(:stdout) { subject.environments }
|
24
|
+
expect(output).to match(/#{@accounts.first.environments.first.name}/)
|
25
|
+
expect(output).not_to match(/#{@accounts.last.environments.first.name}/)
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
data/spec/support/core_helper.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
module CoreHelper
|
2
|
-
def boot_environment(core_client)
|
3
|
-
account
|
2
|
+
def boot_environment(core_client, account: nil)
|
3
|
+
account ||= create_accounts(core_client).first
|
4
4
|
environment = account.environments.create(name: SecureRandom.hex(4))
|
5
5
|
application = account.applications.create(name: SecureRandom.hex(4))
|
6
6
|
provider = create_provider(account)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ey-pro-cli
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.12
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Engine Yard Cloud Team
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-07-
|
11
|
+
date: 2015-07-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: thor
|
@@ -613,7 +613,9 @@ files:
|
|
613
613
|
- lib/vendor/core/ey-core/token_authentication.rb
|
614
614
|
- lib/vendor/core/ey-core/version.rb
|
615
615
|
- spec/accounts_spec.rb
|
616
|
+
- spec/applications_spec.rb
|
616
617
|
- spec/deploy_spec.rb
|
618
|
+
- spec/environments_spec.rb
|
617
619
|
- spec/login_spec.rb
|
618
620
|
- spec/logout_spec.rb
|
619
621
|
- spec/spec_helper.rb
|
@@ -644,7 +646,9 @@ specification_version: 4
|
|
644
646
|
summary: Command-line deployment for Engine Yard pro
|
645
647
|
test_files:
|
646
648
|
- spec/accounts_spec.rb
|
649
|
+
- spec/applications_spec.rb
|
647
650
|
- spec/deploy_spec.rb
|
651
|
+
- spec/environments_spec.rb
|
648
652
|
- spec/login_spec.rb
|
649
653
|
- spec/logout_spec.rb
|
650
654
|
- spec/spec_helper.rb
|