shelly 0.1.0 → 0.1.1
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/lib/shelly/app.rb +12 -0
- data/lib/shelly/cli/main.rb +30 -7
- data/lib/shelly/client.rb +4 -0
- data/lib/shelly/version.rb +1 -1
- data/shelly.gemspec +1 -1
- data/spec/shelly/app_spec.rb +31 -1
- data/spec/shelly/cli/main_spec.rb +97 -15
- data/spec/shelly/client_spec.rb +10 -0
- metadata +186 -243
data/lib/shelly/app.rb
CHANGED
@@ -207,6 +207,14 @@ module Shelly
|
|
207
207
|
attributes["mail_server_ip"]
|
208
208
|
end
|
209
209
|
|
210
|
+
def git_info
|
211
|
+
attributes["git_info"]
|
212
|
+
end
|
213
|
+
|
214
|
+
def state
|
215
|
+
attributes["state"]
|
216
|
+
end
|
217
|
+
|
210
218
|
def self.inside_git_repository?
|
211
219
|
system("git status > /dev/null 2>&1")
|
212
220
|
end
|
@@ -222,5 +230,9 @@ module Shelly
|
|
222
230
|
def open
|
223
231
|
Launchy.open("http://#{attributes["domain"]}")
|
224
232
|
end
|
233
|
+
|
234
|
+
def console
|
235
|
+
shelly.console(code_name)
|
236
|
+
end
|
225
237
|
end
|
226
238
|
end
|
data/lib/shelly/cli/main.rb
CHANGED
@@ -16,7 +16,7 @@ module Shelly
|
|
16
16
|
check_unknown_options!(:except => :rake)
|
17
17
|
|
18
18
|
# FIXME: it should be possible to pass single symbol, instead of one element array
|
19
|
-
before_hook :logged_in?, :only => [:add, :status, :list, :start, :stop, :logs, :delete, :ip, :logout, :execute, :rake, :setup]
|
19
|
+
before_hook :logged_in?, :only => [:add, :status, :list, :start, :stop, :logs, :delete, :info, :ip, :logout, :execute, :rake, :setup, :console]
|
20
20
|
before_hook :inside_git_repository?, :only => [:add, :setup]
|
21
21
|
|
22
22
|
map %w(-v --version) => :version
|
@@ -132,13 +132,23 @@ module Shelly
|
|
132
132
|
end
|
133
133
|
|
134
134
|
map "status" => :list
|
135
|
+
map "ip" => :info
|
135
136
|
method_option :cloud, :type => :string, :aliases => "-c", :desc => "Specify cloud"
|
136
|
-
desc "
|
137
|
-
def
|
138
|
-
app = multiple_clouds(options[:cloud], "
|
139
|
-
|
140
|
-
|
141
|
-
|
137
|
+
desc "info", "Show basic information about cloud"
|
138
|
+
def info
|
139
|
+
app = multiple_clouds(options[:cloud], "info")
|
140
|
+
msg = if app.state == "deploy_failed" || app.state == "configuration_failed"
|
141
|
+
" (deployment log: `shelly deploys show last -c #{app}`)"
|
142
|
+
end
|
143
|
+
say "Cloud #{app}:", msg.present? ? :red : :green
|
144
|
+
print_wrapped "State: #{app.state}#{msg}", :ident => 2
|
145
|
+
say_new_line
|
146
|
+
print_wrapped "Deployed commit sha: #{app.git_info["deployed_commit_sha"]}", :ident => 2
|
147
|
+
print_wrapped "Deployed commit message: #{app.git_info["deployed_commit_message"]}", :ident => 2
|
148
|
+
print_wrapped "Deployed by: #{app.git_info["deployed_push_author"]}", :ident => 2
|
149
|
+
say_new_line
|
150
|
+
print_wrapped "Repository URL: #{app.git_info["repository_url"]}", :ident => 2
|
151
|
+
print_wrapped "Web server IP: #{app.web_server_ip}", :ident => 2
|
142
152
|
print_wrapped "Mail server IP: #{app.mail_server_ip}", :ident => 2
|
143
153
|
rescue Client::NotFoundException => e
|
144
154
|
raise unless e.resource == :cloud
|
@@ -333,6 +343,19 @@ We have been notified about it. We will be adding new resources shortly}
|
|
333
343
|
app.open
|
334
344
|
end
|
335
345
|
|
346
|
+
desc "console", "Open application console"
|
347
|
+
method_option :cloud, :type => :string, :aliases => "-c", :desc => "Specify cloud"
|
348
|
+
def console
|
349
|
+
app = multiple_clouds(options[:cloud], "console")
|
350
|
+
console = app.console
|
351
|
+
exec "ssh -o StrictHostKeyChecking=no -p #{console['port']} -l #{console['user']} #{console['node_ip']}"
|
352
|
+
rescue Client::NotFoundException => e
|
353
|
+
raise unless e.resource == :cloud
|
354
|
+
say_error "You have no access to '#{app}' cloud defined in Cloudfile"
|
355
|
+
rescue Client::APIException => e
|
356
|
+
say_error "Cloud #{app} is not running. Cannot run console."
|
357
|
+
end
|
358
|
+
|
336
359
|
# FIXME: move to helpers
|
337
360
|
no_tasks do
|
338
361
|
# Returns valid arguments for rake, removes shelly gem arguments
|
data/lib/shelly/client.rb
CHANGED
data/lib/shelly/version.rb
CHANGED
data/shelly.gemspec
CHANGED
@@ -28,7 +28,7 @@ Gem::Specification.new do |s|
|
|
28
28
|
s.add_runtime_dependency "json"
|
29
29
|
s.add_runtime_dependency "progressbar"
|
30
30
|
s.add_runtime_dependency "launchy"
|
31
|
-
s.add_runtime_dependency "shelly-dependencies", "~> 0.1.
|
31
|
+
s.add_runtime_dependency "shelly-dependencies", "~> 0.1.1"
|
32
32
|
|
33
33
|
s.files = `git ls-files`.split("\n")
|
34
34
|
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
data/spec/shelly/app_spec.rb
CHANGED
@@ -134,7 +134,14 @@ describe Shelly::App do
|
|
134
134
|
|
135
135
|
describe "#attributes" do
|
136
136
|
before do
|
137
|
-
@response = {"web_server_ip" => "192.0.2.1",
|
137
|
+
@response = {"web_server_ip" => "192.0.2.1",
|
138
|
+
"mail_server_ip" => "192.0.2.3",
|
139
|
+
"state" => "running",
|
140
|
+
"git_info" => {
|
141
|
+
"deployed_commit_message" => "Commit message",
|
142
|
+
"deployed_commit_sha" => "52e65ed2d085eaae560cdb81b2b56a7d76",
|
143
|
+
"repository_url" => "git@winniecloud.net:example-cloud",
|
144
|
+
"deployed_push_author" => "megan@example.com"}}
|
138
145
|
@client.stub(:app).and_return(@response)
|
139
146
|
end
|
140
147
|
|
@@ -154,6 +161,22 @@ describe Shelly::App do
|
|
154
161
|
@app.mail_server_ip.should == "192.0.2.3"
|
155
162
|
end
|
156
163
|
end
|
164
|
+
|
165
|
+
describe "#state" do
|
166
|
+
it "should return state of cloud" do
|
167
|
+
@app.state.should == "running"
|
168
|
+
end
|
169
|
+
end
|
170
|
+
|
171
|
+
describe "#git_info" do
|
172
|
+
it "should return git info" do
|
173
|
+
@app.git_info.should == {
|
174
|
+
"deployed_commit_message" => "Commit message",
|
175
|
+
"deployed_commit_sha" => "52e65ed2d085eaae560cdb81b2b56a7d76",
|
176
|
+
"repository_url" => "git@winniecloud.net:example-cloud",
|
177
|
+
"deployed_push_author" => "megan@example.com"}
|
178
|
+
end
|
179
|
+
end
|
157
180
|
end
|
158
181
|
|
159
182
|
describe "#generate_cloudfile" do
|
@@ -382,4 +405,11 @@ config
|
|
382
405
|
@app.open
|
383
406
|
end
|
384
407
|
end
|
408
|
+
|
409
|
+
describe "#console" do
|
410
|
+
it "should fetch instance data from Api" do
|
411
|
+
@client.should_receive(:console).with("foo-staging")
|
412
|
+
@app.console
|
413
|
+
end
|
414
|
+
end
|
385
415
|
end
|
@@ -27,11 +27,12 @@ Tasks:
|
|
27
27
|
shelly add # Add a new cloud
|
28
28
|
shelly backup <command> # Manage database backups
|
29
29
|
shelly config <command> # Manage application configuration files
|
30
|
+
shelly console # Open application console
|
30
31
|
shelly delete # Delete the cloud
|
31
32
|
shelly deploys <command> # View deploy logs
|
32
33
|
shelly execute CODE # Run code on one of application servers
|
33
34
|
shelly help [TASK] # Describe available tasks or one specific task
|
34
|
-
shelly
|
35
|
+
shelly info # Show basic information about cloud
|
35
36
|
shelly list # List available clouds
|
36
37
|
shelly login [EMAIL] # Log into Shelly Cloud
|
37
38
|
shelly logout # Logout from Shelly Cloud
|
@@ -739,37 +740,67 @@ We have been notified about it. We will be adding new resources shortly")
|
|
739
740
|
|
740
741
|
end
|
741
742
|
|
742
|
-
describe "#
|
743
|
+
describe "#info" do
|
743
744
|
before do
|
744
745
|
File.open("Cloudfile", 'w') { |f| f.write("foo-production:\n") }
|
745
|
-
@app = Shelly::App.new("foo-
|
746
|
+
@app = Shelly::App.new("foo-production")
|
746
747
|
@main.stub(:logged_in?).and_return(true)
|
748
|
+
@app.stub(:attributes).and_return(response)
|
747
749
|
end
|
748
750
|
|
749
751
|
it "should ensure user has logged in" do
|
750
|
-
hooks(@main, :
|
752
|
+
hooks(@main, :info).should include(:logged_in?)
|
751
753
|
end
|
752
754
|
|
753
755
|
# multiple_clouds is tested in main_spec.rb in describe "#start" block
|
754
756
|
it "should ensure multiple_clouds check" do
|
755
|
-
@app.should_receive(:web_server_ip).and_return("11.11")
|
756
|
-
@app.should_receive(:mail_server_ip).and_return("22.22")
|
757
757
|
@main.should_receive(:multiple_clouds).and_return(@app)
|
758
|
-
invoke(@main, :
|
758
|
+
invoke(@main, :info)
|
759
759
|
end
|
760
760
|
|
761
761
|
context "on success" do
|
762
|
-
it "should display
|
763
|
-
@
|
764
|
-
$stdout.should_receive(:puts).with("
|
762
|
+
it "should display basic information about cloud" do
|
763
|
+
@main.should_receive(:multiple_clouds).and_return(@app)
|
764
|
+
$stdout.should_receive(:puts).with(green "Cloud foo-production:")
|
765
|
+
$stdout.should_receive(:puts).with(" State: running")
|
766
|
+
$stdout.should_receive(:puts).with(" Deployed commit sha: 52e65ed2d085eaae560cdb81b2b56a7d76")
|
767
|
+
$stdout.should_receive(:puts).with(" Deployed commit message: Commit message")
|
768
|
+
$stdout.should_receive(:puts).with(" Deployed by: megan@example.com")
|
769
|
+
$stdout.should_receive(:puts).with(" Repository URL: git@winniecloud.net:example-cloud")
|
765
770
|
$stdout.should_receive(:puts).with(" Web server IP: 22.22.22.22")
|
766
771
|
$stdout.should_receive(:puts).with(" Mail server IP: 11.11.11.11")
|
767
|
-
invoke(@main, :
|
768
|
-
end
|
769
|
-
|
772
|
+
invoke(@main, :info)
|
773
|
+
end
|
774
|
+
|
775
|
+
context "when deploy failed or configuration failed" do
|
776
|
+
it "should display basic information about information and command to last log" do
|
777
|
+
@app.stub(:attributes).and_return(response({"state" => "deploy_failed"}))
|
778
|
+
@main.should_receive(:multiple_clouds).and_return(@app)
|
779
|
+
$stdout.should_receive(:puts).with(red "Cloud foo-production:")
|
780
|
+
$stdout.should_receive(:puts).with(" State: deploy_failed (deployment log: `shelly deploys show last -c foo-production`)")
|
781
|
+
$stdout.should_receive(:puts).with(" Deployed commit sha: 52e65ed2d085eaae560cdb81b2b56a7d76")
|
782
|
+
$stdout.should_receive(:puts).with(" Deployed commit message: Commit message")
|
783
|
+
$stdout.should_receive(:puts).with(" Deployed by: megan@example.com")
|
784
|
+
$stdout.should_receive(:puts).with(" Repository URL: git@winniecloud.net:example-cloud")
|
785
|
+
$stdout.should_receive(:puts).with(" Web server IP: 22.22.22.22")
|
786
|
+
$stdout.should_receive(:puts).with(" Mail server IP: 11.11.11.11")
|
787
|
+
invoke(@main, :info)
|
788
|
+
end
|
770
789
|
|
771
|
-
|
772
|
-
|
790
|
+
it "should display basic information about information and command to last log" do
|
791
|
+
@app.stub(:attributes).and_return(response({"state" => "configuration_failed"}))
|
792
|
+
@main.should_receive(:multiple_clouds).and_return(@app)
|
793
|
+
$stdout.should_receive(:puts).with(red "Cloud foo-production:")
|
794
|
+
$stdout.should_receive(:puts).with(" State: configuration_failed (deployment log: `shelly deploys show last -c foo-production`)")
|
795
|
+
$stdout.should_receive(:puts).with(" Deployed commit sha: 52e65ed2d085eaae560cdb81b2b56a7d76")
|
796
|
+
$stdout.should_receive(:puts).with(" Deployed commit message: Commit message")
|
797
|
+
$stdout.should_receive(:puts).with(" Deployed by: megan@example.com")
|
798
|
+
$stdout.should_receive(:puts).with(" Repository URL: git@winniecloud.net:example-cloud")
|
799
|
+
$stdout.should_receive(:puts).with(" Web server IP: 22.22.22.22")
|
800
|
+
$stdout.should_receive(:puts).with(" Mail server IP: 11.11.11.11")
|
801
|
+
invoke(@main, :info)
|
802
|
+
end
|
803
|
+
end
|
773
804
|
end
|
774
805
|
|
775
806
|
context "on failure" do
|
@@ -780,6 +811,20 @@ We have been notified about it. We will be adding new resources shortly")
|
|
780
811
|
lambda { invoke(@main, :ip) }.should raise_error(SystemExit)
|
781
812
|
end
|
782
813
|
end
|
814
|
+
|
815
|
+
def response(options = {})
|
816
|
+
{ "code_name" => "foo-production",
|
817
|
+
"state" => "running",
|
818
|
+
"git_info" =>
|
819
|
+
{
|
820
|
+
"deployed_commit_message" => "Commit message",
|
821
|
+
"deployed_commit_sha" => "52e65ed2d085eaae560cdb81b2b56a7d76",
|
822
|
+
"repository_url" => "git@winniecloud.net:example-cloud",
|
823
|
+
"deployed_push_author" => "megan@example.com"
|
824
|
+
},
|
825
|
+
"mail_server_ip" => "11.11.11.11",
|
826
|
+
"web_server_ip" => "22.22.22.22" }.merge(options)
|
827
|
+
end
|
783
828
|
end
|
784
829
|
|
785
830
|
describe "#setup" do
|
@@ -1278,4 +1323,41 @@ We have been notified about it. We will be adding new resources shortly")
|
|
1278
1323
|
invoke(@main, :open)
|
1279
1324
|
end
|
1280
1325
|
end
|
1326
|
+
|
1327
|
+
describe "#console" do
|
1328
|
+
before do
|
1329
|
+
@user = Shelly::User.new
|
1330
|
+
@client.stub(:token).and_return("abc")
|
1331
|
+
@app = Shelly::App.new("foo-production")
|
1332
|
+
@app.stub(:open)
|
1333
|
+
Shelly::App.stub(:new).and_return(@app)
|
1334
|
+
FileUtils.mkdir_p("/projects/foo")
|
1335
|
+
Dir.chdir("/projects/foo")
|
1336
|
+
File.open("Cloudfile", 'w') { |f| f.write("foo-production:\n") }
|
1337
|
+
end
|
1338
|
+
|
1339
|
+
it "execute ssh command" do
|
1340
|
+
expected = {"port" => "40010", "node_ip" => "10.0.0.10", "user"=>"foo-production"}
|
1341
|
+
@client.stub(:console).and_return(expected)
|
1342
|
+
@main.should_receive(:exec).with("ssh -o StrictHostKeyChecking=no -p 40010 -l foo-production 10.0.0.10")
|
1343
|
+
invoke(@main, :console)
|
1344
|
+
end
|
1345
|
+
|
1346
|
+
it "should exit if user doesn't have access to clouds in Cloudfile" do
|
1347
|
+
exception = Shelly::Client::NotFoundException.new("resource" => "cloud")
|
1348
|
+
@client.stub(:console).and_raise(exception)
|
1349
|
+
$stdout.should_receive(:puts).with(red "You have no access to 'foo-production' cloud defined in Cloudfile")
|
1350
|
+
lambda { invoke(@main, :console) }.should raise_error(SystemExit)
|
1351
|
+
end
|
1352
|
+
|
1353
|
+
context "Instances are not running" do
|
1354
|
+
it "should display error" do
|
1355
|
+
@client.stub(:console).and_raise(Shelly::Client::APIException)
|
1356
|
+
$stdout.should_receive(:puts).with(red "Cloud foo-production is not running. Cannot run console.")
|
1357
|
+
lambda {
|
1358
|
+
invoke(@main, :console)
|
1359
|
+
}.should raise_error(SystemExit)
|
1360
|
+
end
|
1361
|
+
end
|
1362
|
+
end
|
1281
1363
|
end
|
data/spec/shelly/client_spec.rb
CHANGED
@@ -199,6 +199,16 @@ describe Shelly::Client do
|
|
199
199
|
end
|
200
200
|
end
|
201
201
|
|
202
|
+
describe "#console" do
|
203
|
+
it "should fetch instance data from API" do
|
204
|
+
body = {:port => "40010", :node_ip => "10.0.0.10", :user => "foo-production"}
|
205
|
+
FakeWeb.register_uri(:get, api_url("apps/staging-foo/console"),
|
206
|
+
:body => body.to_json)
|
207
|
+
response = @client.console("staging-foo")
|
208
|
+
response.should == {"port" => "40010", "node_ip" => "10.0.0.10", "user"=>"foo-production"}
|
209
|
+
end
|
210
|
+
end
|
211
|
+
|
202
212
|
describe "#send_invitation" do
|
203
213
|
it "should send post with developer's email" do
|
204
214
|
FakeWeb.register_uri(:post, api_url("apps/staging-foo/collaborations"), :body => {}.to_json)
|
metadata
CHANGED
@@ -1,264 +1,220 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: shelly
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
hash: 25
|
5
5
|
prerelease:
|
6
|
+
segments:
|
7
|
+
- 0
|
8
|
+
- 1
|
9
|
+
- 1
|
10
|
+
version: 0.1.1
|
6
11
|
platform: ruby
|
7
|
-
authors:
|
12
|
+
authors:
|
8
13
|
- Shelly Cloud team
|
9
14
|
autorequire:
|
10
15
|
bindir: bin
|
11
16
|
cert_chain: []
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
+
|
18
|
+
date: 2012-04-24 00:00:00 Z
|
19
|
+
dependencies:
|
20
|
+
- !ruby/object:Gem::Dependency
|
21
|
+
version_requirements: &id001 !ruby/object:Gem::Requirement
|
17
22
|
none: false
|
18
|
-
requirements:
|
23
|
+
requirements:
|
19
24
|
- - ~>
|
20
|
-
- !ruby/object:Gem::Version
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
hash: 47
|
27
|
+
segments:
|
28
|
+
- 2
|
29
|
+
- 8
|
30
|
+
- 0
|
21
31
|
version: 2.8.0
|
22
|
-
|
32
|
+
requirement: *id001
|
23
33
|
prerelease: false
|
24
|
-
|
34
|
+
type: :development
|
35
|
+
name: rspec
|
36
|
+
- !ruby/object:Gem::Dependency
|
37
|
+
version_requirements: &id002 !ruby/object:Gem::Requirement
|
25
38
|
none: false
|
26
|
-
requirements:
|
27
|
-
- -
|
28
|
-
- !ruby/object:Gem::Version
|
29
|
-
|
30
|
-
|
39
|
+
requirements:
|
40
|
+
- - ">="
|
41
|
+
- !ruby/object:Gem::Version
|
42
|
+
hash: 3
|
43
|
+
segments:
|
44
|
+
- 0
|
45
|
+
version: "0"
|
46
|
+
requirement: *id002
|
47
|
+
prerelease: false
|
48
|
+
type: :development
|
31
49
|
name: rake
|
32
|
-
|
50
|
+
- !ruby/object:Gem::Dependency
|
51
|
+
version_requirements: &id003 !ruby/object:Gem::Requirement
|
33
52
|
none: false
|
34
|
-
requirements:
|
35
|
-
- -
|
36
|
-
- !ruby/object:Gem::Version
|
37
|
-
|
38
|
-
|
53
|
+
requirements:
|
54
|
+
- - ">="
|
55
|
+
- !ruby/object:Gem::Version
|
56
|
+
hash: 3
|
57
|
+
segments:
|
58
|
+
- 0
|
59
|
+
version: "0"
|
60
|
+
requirement: *id003
|
39
61
|
prerelease: false
|
40
|
-
|
41
|
-
none: false
|
42
|
-
requirements:
|
43
|
-
- - ! '>='
|
44
|
-
- !ruby/object:Gem::Version
|
45
|
-
version: '0'
|
46
|
-
- !ruby/object:Gem::Dependency
|
62
|
+
type: :development
|
47
63
|
name: guard
|
48
|
-
|
64
|
+
- !ruby/object:Gem::Dependency
|
65
|
+
version_requirements: &id004 !ruby/object:Gem::Requirement
|
49
66
|
none: false
|
50
|
-
requirements:
|
51
|
-
- -
|
52
|
-
- !ruby/object:Gem::Version
|
53
|
-
|
54
|
-
|
67
|
+
requirements:
|
68
|
+
- - ">="
|
69
|
+
- !ruby/object:Gem::Version
|
70
|
+
hash: 3
|
71
|
+
segments:
|
72
|
+
- 0
|
73
|
+
version: "0"
|
74
|
+
requirement: *id004
|
55
75
|
prerelease: false
|
56
|
-
|
57
|
-
none: false
|
58
|
-
requirements:
|
59
|
-
- - ! '>='
|
60
|
-
- !ruby/object:Gem::Version
|
61
|
-
version: '0'
|
62
|
-
- !ruby/object:Gem::Dependency
|
76
|
+
type: :development
|
63
77
|
name: guard-rspec
|
64
|
-
|
78
|
+
- !ruby/object:Gem::Dependency
|
79
|
+
version_requirements: &id005 !ruby/object:Gem::Requirement
|
65
80
|
none: false
|
66
|
-
requirements:
|
67
|
-
- -
|
68
|
-
- !ruby/object:Gem::Version
|
69
|
-
|
70
|
-
|
81
|
+
requirements:
|
82
|
+
- - ">="
|
83
|
+
- !ruby/object:Gem::Version
|
84
|
+
hash: 3
|
85
|
+
segments:
|
86
|
+
- 0
|
87
|
+
version: "0"
|
88
|
+
requirement: *id005
|
71
89
|
prerelease: false
|
72
|
-
version_requirements: !ruby/object:Gem::Requirement
|
73
|
-
none: false
|
74
|
-
requirements:
|
75
|
-
- - ! '>='
|
76
|
-
- !ruby/object:Gem::Version
|
77
|
-
version: '0'
|
78
|
-
- !ruby/object:Gem::Dependency
|
79
|
-
name: simplecov
|
80
|
-
requirement: !ruby/object:Gem::Requirement
|
81
|
-
none: false
|
82
|
-
requirements:
|
83
|
-
- - ! '>='
|
84
|
-
- !ruby/object:Gem::Version
|
85
|
-
version: '0'
|
86
90
|
type: :development
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
requirements:
|
91
|
-
- - ! '>='
|
92
|
-
- !ruby/object:Gem::Version
|
93
|
-
version: '0'
|
94
|
-
- !ruby/object:Gem::Dependency
|
95
|
-
name: ruby_gntp
|
96
|
-
requirement: !ruby/object:Gem::Requirement
|
91
|
+
name: simplecov
|
92
|
+
- !ruby/object:Gem::Dependency
|
93
|
+
version_requirements: &id006 !ruby/object:Gem::Requirement
|
97
94
|
none: false
|
98
|
-
requirements:
|
99
|
-
- -
|
100
|
-
- !ruby/object:Gem::Version
|
101
|
-
|
102
|
-
|
95
|
+
requirements:
|
96
|
+
- - ">="
|
97
|
+
- !ruby/object:Gem::Version
|
98
|
+
hash: 3
|
99
|
+
segments:
|
100
|
+
- 0
|
101
|
+
version: "0"
|
102
|
+
requirement: *id006
|
103
103
|
prerelease: false
|
104
|
-
version_requirements: !ruby/object:Gem::Requirement
|
105
|
-
none: false
|
106
|
-
requirements:
|
107
|
-
- - ! '>='
|
108
|
-
- !ruby/object:Gem::Version
|
109
|
-
version: '0'
|
110
|
-
- !ruby/object:Gem::Dependency
|
111
|
-
name: rb-fsevent
|
112
|
-
requirement: !ruby/object:Gem::Requirement
|
113
|
-
none: false
|
114
|
-
requirements:
|
115
|
-
- - ! '>='
|
116
|
-
- !ruby/object:Gem::Version
|
117
|
-
version: '0'
|
118
104
|
type: :development
|
119
|
-
prerelease: false
|
120
|
-
version_requirements: !ruby/object:Gem::Requirement
|
121
|
-
none: false
|
122
|
-
requirements:
|
123
|
-
- - ! '>='
|
124
|
-
- !ruby/object:Gem::Version
|
125
|
-
version: '0'
|
126
|
-
- !ruby/object:Gem::Dependency
|
127
105
|
name: fakefs
|
128
|
-
|
106
|
+
- !ruby/object:Gem::Dependency
|
107
|
+
version_requirements: &id007 !ruby/object:Gem::Requirement
|
129
108
|
none: false
|
130
|
-
requirements:
|
131
|
-
- -
|
132
|
-
- !ruby/object:Gem::Version
|
133
|
-
|
134
|
-
|
109
|
+
requirements:
|
110
|
+
- - ">="
|
111
|
+
- !ruby/object:Gem::Version
|
112
|
+
hash: 3
|
113
|
+
segments:
|
114
|
+
- 0
|
115
|
+
version: "0"
|
116
|
+
requirement: *id007
|
135
117
|
prerelease: false
|
136
|
-
version_requirements: !ruby/object:Gem::Requirement
|
137
|
-
none: false
|
138
|
-
requirements:
|
139
|
-
- - ! '>='
|
140
|
-
- !ruby/object:Gem::Version
|
141
|
-
version: '0'
|
142
|
-
- !ruby/object:Gem::Dependency
|
143
|
-
name: fakeweb
|
144
|
-
requirement: !ruby/object:Gem::Requirement
|
145
|
-
none: false
|
146
|
-
requirements:
|
147
|
-
- - ! '>='
|
148
|
-
- !ruby/object:Gem::Version
|
149
|
-
version: '0'
|
150
118
|
type: :development
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
requirements:
|
155
|
-
- - ! '>='
|
156
|
-
- !ruby/object:Gem::Version
|
157
|
-
version: '0'
|
158
|
-
- !ruby/object:Gem::Dependency
|
159
|
-
name: wijet-thor
|
160
|
-
requirement: !ruby/object:Gem::Requirement
|
119
|
+
name: fakeweb
|
120
|
+
- !ruby/object:Gem::Dependency
|
121
|
+
version_requirements: &id008 !ruby/object:Gem::Requirement
|
161
122
|
none: false
|
162
|
-
requirements:
|
123
|
+
requirements:
|
163
124
|
- - ~>
|
164
|
-
- !ruby/object:Gem::Version
|
125
|
+
- !ruby/object:Gem::Version
|
126
|
+
hash: 41
|
127
|
+
segments:
|
128
|
+
- 0
|
129
|
+
- 14
|
130
|
+
- 7
|
165
131
|
version: 0.14.7
|
166
|
-
|
132
|
+
requirement: *id008
|
167
133
|
prerelease: false
|
168
|
-
|
134
|
+
type: :runtime
|
135
|
+
name: wijet-thor
|
136
|
+
- !ruby/object:Gem::Dependency
|
137
|
+
version_requirements: &id009 !ruby/object:Gem::Requirement
|
169
138
|
none: false
|
170
|
-
requirements:
|
171
|
-
- -
|
172
|
-
- !ruby/object:Gem::Version
|
173
|
-
|
174
|
-
|
139
|
+
requirements:
|
140
|
+
- - ">="
|
141
|
+
- !ruby/object:Gem::Version
|
142
|
+
hash: 3
|
143
|
+
segments:
|
144
|
+
- 0
|
145
|
+
version: "0"
|
146
|
+
requirement: *id009
|
147
|
+
prerelease: false
|
148
|
+
type: :runtime
|
175
149
|
name: rest-client
|
176
|
-
|
150
|
+
- !ruby/object:Gem::Dependency
|
151
|
+
version_requirements: &id010 !ruby/object:Gem::Requirement
|
177
152
|
none: false
|
178
|
-
requirements:
|
179
|
-
- -
|
180
|
-
- !ruby/object:Gem::Version
|
181
|
-
|
182
|
-
|
153
|
+
requirements:
|
154
|
+
- - ">="
|
155
|
+
- !ruby/object:Gem::Version
|
156
|
+
hash: 3
|
157
|
+
segments:
|
158
|
+
- 0
|
159
|
+
version: "0"
|
160
|
+
requirement: *id010
|
183
161
|
prerelease: false
|
184
|
-
|
185
|
-
none: false
|
186
|
-
requirements:
|
187
|
-
- - ! '>='
|
188
|
-
- !ruby/object:Gem::Version
|
189
|
-
version: '0'
|
190
|
-
- !ruby/object:Gem::Dependency
|
162
|
+
type: :runtime
|
191
163
|
name: json
|
192
|
-
|
164
|
+
- !ruby/object:Gem::Dependency
|
165
|
+
version_requirements: &id011 !ruby/object:Gem::Requirement
|
193
166
|
none: false
|
194
|
-
requirements:
|
195
|
-
- -
|
196
|
-
- !ruby/object:Gem::Version
|
197
|
-
|
198
|
-
|
167
|
+
requirements:
|
168
|
+
- - ">="
|
169
|
+
- !ruby/object:Gem::Version
|
170
|
+
hash: 3
|
171
|
+
segments:
|
172
|
+
- 0
|
173
|
+
version: "0"
|
174
|
+
requirement: *id011
|
199
175
|
prerelease: false
|
200
|
-
|
201
|
-
none: false
|
202
|
-
requirements:
|
203
|
-
- - ! '>='
|
204
|
-
- !ruby/object:Gem::Version
|
205
|
-
version: '0'
|
206
|
-
- !ruby/object:Gem::Dependency
|
176
|
+
type: :runtime
|
207
177
|
name: progressbar
|
208
|
-
|
178
|
+
- !ruby/object:Gem::Dependency
|
179
|
+
version_requirements: &id012 !ruby/object:Gem::Requirement
|
209
180
|
none: false
|
210
|
-
requirements:
|
211
|
-
- -
|
212
|
-
- !ruby/object:Gem::Version
|
213
|
-
|
214
|
-
|
181
|
+
requirements:
|
182
|
+
- - ">="
|
183
|
+
- !ruby/object:Gem::Version
|
184
|
+
hash: 3
|
185
|
+
segments:
|
186
|
+
- 0
|
187
|
+
version: "0"
|
188
|
+
requirement: *id012
|
215
189
|
prerelease: false
|
216
|
-
version_requirements: !ruby/object:Gem::Requirement
|
217
|
-
none: false
|
218
|
-
requirements:
|
219
|
-
- - ! '>='
|
220
|
-
- !ruby/object:Gem::Version
|
221
|
-
version: '0'
|
222
|
-
- !ruby/object:Gem::Dependency
|
223
|
-
name: launchy
|
224
|
-
requirement: !ruby/object:Gem::Requirement
|
225
|
-
none: false
|
226
|
-
requirements:
|
227
|
-
- - ! '>='
|
228
|
-
- !ruby/object:Gem::Version
|
229
|
-
version: '0'
|
230
190
|
type: :runtime
|
231
|
-
|
232
|
-
|
233
|
-
|
234
|
-
requirements:
|
235
|
-
- - ! '>='
|
236
|
-
- !ruby/object:Gem::Version
|
237
|
-
version: '0'
|
238
|
-
- !ruby/object:Gem::Dependency
|
239
|
-
name: shelly-dependencies
|
240
|
-
requirement: !ruby/object:Gem::Requirement
|
191
|
+
name: launchy
|
192
|
+
- !ruby/object:Gem::Dependency
|
193
|
+
version_requirements: &id013 !ruby/object:Gem::Requirement
|
241
194
|
none: false
|
242
|
-
requirements:
|
195
|
+
requirements:
|
243
196
|
- - ~>
|
244
|
-
- !ruby/object:Gem::Version
|
245
|
-
|
246
|
-
|
197
|
+
- !ruby/object:Gem::Version
|
198
|
+
hash: 25
|
199
|
+
segments:
|
200
|
+
- 0
|
201
|
+
- 1
|
202
|
+
- 1
|
203
|
+
version: 0.1.1
|
204
|
+
requirement: *id013
|
247
205
|
prerelease: false
|
248
|
-
|
249
|
-
|
250
|
-
requirements:
|
251
|
-
- - ~>
|
252
|
-
- !ruby/object:Gem::Version
|
253
|
-
version: 0.1.0
|
206
|
+
type: :runtime
|
207
|
+
name: shelly-dependencies
|
254
208
|
description: Tool for managing applications and clouds at shellycloud.com
|
255
|
-
email:
|
209
|
+
email:
|
256
210
|
- support@shellycloud.com
|
257
|
-
executables:
|
211
|
+
executables:
|
258
212
|
- shelly
|
259
213
|
extensions: []
|
214
|
+
|
260
215
|
extra_rdoc_files: []
|
261
|
-
|
216
|
+
|
217
|
+
files:
|
262
218
|
- .gitignore
|
263
219
|
- .travis.yml
|
264
220
|
- Gemfile
|
@@ -311,49 +267,36 @@ files:
|
|
311
267
|
- spec/thor/options_spec.rb
|
312
268
|
homepage: http://shellycloud.com
|
313
269
|
licenses: []
|
270
|
+
|
314
271
|
post_install_message:
|
315
272
|
rdoc_options: []
|
316
|
-
|
273
|
+
|
274
|
+
require_paths:
|
317
275
|
- lib
|
318
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
276
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
319
277
|
none: false
|
320
|
-
requirements:
|
321
|
-
- -
|
322
|
-
- !ruby/object:Gem::Version
|
323
|
-
|
324
|
-
segments:
|
278
|
+
requirements:
|
279
|
+
- - ">="
|
280
|
+
- !ruby/object:Gem::Version
|
281
|
+
hash: 3
|
282
|
+
segments:
|
325
283
|
- 0
|
326
|
-
|
327
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
284
|
+
version: "0"
|
285
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
328
286
|
none: false
|
329
|
-
requirements:
|
330
|
-
- -
|
331
|
-
- !ruby/object:Gem::Version
|
332
|
-
|
333
|
-
segments:
|
287
|
+
requirements:
|
288
|
+
- - ">="
|
289
|
+
- !ruby/object:Gem::Version
|
290
|
+
hash: 3
|
291
|
+
segments:
|
334
292
|
- 0
|
335
|
-
|
293
|
+
version: "0"
|
336
294
|
requirements: []
|
295
|
+
|
337
296
|
rubyforge_project: shelly
|
338
|
-
rubygems_version: 1.8.
|
297
|
+
rubygems_version: 1.8.10
|
339
298
|
signing_key:
|
340
299
|
specification_version: 3
|
341
300
|
summary: Shelly Cloud command line tool
|
342
|
-
test_files:
|
343
|
-
|
344
|
-
- spec/input_faker.rb
|
345
|
-
- spec/shelly/app_spec.rb
|
346
|
-
- spec/shelly/backup_spec.rb
|
347
|
-
- spec/shelly/cli/backup_spec.rb
|
348
|
-
- spec/shelly/cli/config_spec.rb
|
349
|
-
- spec/shelly/cli/deploys_spec.rb
|
350
|
-
- spec/shelly/cli/main_spec.rb
|
351
|
-
- spec/shelly/cli/runner_spec.rb
|
352
|
-
- spec/shelly/cli/user_spec.rb
|
353
|
-
- spec/shelly/client_spec.rb
|
354
|
-
- spec/shelly/cloudfile_spec.rb
|
355
|
-
- spec/shelly/download_progress_bar_spec.rb
|
356
|
-
- spec/shelly/model_spec.rb
|
357
|
-
- spec/shelly/user_spec.rb
|
358
|
-
- spec/spec_helper.rb
|
359
|
-
- spec/thor/options_spec.rb
|
301
|
+
test_files: []
|
302
|
+
|