shelly 0.0.56 → 0.0.57
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/shelly/app.rb +3 -1
- data/lib/shelly/cli/main.rb +23 -13
- data/lib/shelly/helpers.rb +6 -0
- data/lib/shelly/templates/Cloudfile.erb +2 -2
- data/lib/shelly/version.rb +1 -1
- data/spec/shelly/app_spec.rb +35 -1
- data/spec/shelly/cli/main_spec.rb +26 -14
- metadata +163 -147
data/lib/shelly/app.rb
CHANGED
@@ -4,9 +4,10 @@ require "shelly/backup"
|
|
4
4
|
module Shelly
|
5
5
|
class App < Model
|
6
6
|
DATABASE_KINDS = %w(postgresql mongodb redis none)
|
7
|
+
SERVER_SIZES = %w(small large)
|
7
8
|
|
8
9
|
attr_accessor :code_name, :databases, :ruby_version, :environment,
|
9
|
-
:git_url, :domains, :web_server_ip, :mail_server_ip
|
10
|
+
:git_url, :domains, :web_server_ip, :mail_server_ip, :size, :thin
|
10
11
|
|
11
12
|
def initialize(code_name = nil)
|
12
13
|
self.code_name = code_name
|
@@ -39,6 +40,7 @@ module Shelly
|
|
39
40
|
|
40
41
|
def generate_cloudfile
|
41
42
|
@email = current_user.email
|
43
|
+
thin = (size == "small" ? 2 : 4)
|
42
44
|
template = File.read(cloudfile_template_path)
|
43
45
|
cloudfile = ERB.new(template, 0, "%<>-")
|
44
46
|
cloudfile.result(binding)
|
data/lib/shelly/cli/main.rb
CHANGED
@@ -74,12 +74,15 @@ module Shelly
|
|
74
74
|
method_option :databases, :type => :array, :aliases => "-d",
|
75
75
|
:banner => Shelly::App::DATABASE_KINDS.join(', '),
|
76
76
|
:desc => "List of databases of your choice"
|
77
|
+
method_option :size, :type => :string, :aliases => "-s",
|
78
|
+
:desc => "Server size [large, small]"
|
77
79
|
desc "add", "Add a new cloud"
|
78
80
|
def add
|
79
81
|
check_options(options)
|
80
82
|
@app = Shelly::App.new
|
81
83
|
@app.code_name = options["code-name"] || ask_for_code_name
|
82
84
|
@app.databases = options["databases"] || ask_for_databases
|
85
|
+
@app.size = options["size"] || "large"
|
83
86
|
@app.create
|
84
87
|
|
85
88
|
if overwrite_remote?(@app)
|
@@ -97,7 +100,7 @@ module Shelly
|
|
97
100
|
say "Billing information", :green
|
98
101
|
say "Cloud created with 20 Euro credit."
|
99
102
|
say "Remember to provide billing details before trial ends."
|
100
|
-
url = "#{@app.shelly.shellyapp_url}/apps/#{@app
|
103
|
+
url = "#{@app.shelly.shellyapp_url}/apps/#{@app}/billing/edit"
|
101
104
|
say url
|
102
105
|
end
|
103
106
|
|
@@ -108,7 +111,7 @@ module Shelly
|
|
108
111
|
e.each_error { |error| say_error error, :with_exit => false }
|
109
112
|
say_new_line
|
110
113
|
say_error "Fix erros in the below command and type it again to create your cloud" , :with_exit => false
|
111
|
-
say_error "shelly add --code-name=#{@app.code_name} --databases=#{@app.databases.join(',')}"
|
114
|
+
say_error "shelly add --code-name=#{@app.code_name} --databases=#{@app.databases.join(',')} --size=#{@app.size}"
|
112
115
|
end
|
113
116
|
|
114
117
|
desc "list", "List available clouds"
|
@@ -165,7 +168,7 @@ module Shelly
|
|
165
168
|
when "no_code"
|
166
169
|
say_error "Not starting: no source code provided", :with_exit => false
|
167
170
|
say_error "Push source code using:", :with_exit => false
|
168
|
-
say " git push
|
171
|
+
say " git push #{@app} master"
|
169
172
|
when "deploy_failed", "configuration_failed"
|
170
173
|
say_error "Not starting: deployment failed", :with_exit => false
|
171
174
|
say_error "Support has been notified", :with_exit => false
|
@@ -218,22 +221,24 @@ We have been notified about it. We will be adding new resources shortly}
|
|
218
221
|
say "Your application is set up.", :green
|
219
222
|
end
|
220
223
|
|
221
|
-
desc "stop", "
|
224
|
+
desc "stop", "Shutdown the cloud"
|
222
225
|
method_option :cloud, :type => :string, :aliases => "-c", :desc => "Specify cloud"
|
223
226
|
def stop
|
224
227
|
multiple_clouds(options[:cloud], "stop")
|
228
|
+
ask_to_stop_application
|
225
229
|
@app.stop
|
226
|
-
|
230
|
+
say_new_line
|
231
|
+
say "Cloud '#{@app}' stopped"
|
227
232
|
rescue Client::NotFoundException => e
|
228
233
|
raise unless e.resource == :cloud
|
229
|
-
say_error "You have no access to '#{@app
|
234
|
+
say_error "You have no access to '#{@app}' cloud defined in Cloudfile"
|
230
235
|
end
|
231
236
|
|
232
237
|
desc "delete", "Delete the cloud"
|
233
238
|
method_option :cloud, :type => :string, :aliases => "-c", :desc => "Specify cloud"
|
234
239
|
def delete
|
235
240
|
multiple_clouds(options[:cloud], "delete")
|
236
|
-
say "You are about to delete application: #{@app
|
241
|
+
say "You are about to delete application: #{@app}."
|
237
242
|
say "Press Control-C at any moment to cancel."
|
238
243
|
say "Please confirm each question by typing yes and pressing Enter."
|
239
244
|
say_new_line
|
@@ -251,7 +256,7 @@ We have been notified about it. We will be adding new resources shortly}
|
|
251
256
|
end
|
252
257
|
rescue Client::NotFoundException => e
|
253
258
|
raise unless e.resource == :cloud
|
254
|
-
say_error "You have no access to '#{@app
|
259
|
+
say_error "You have no access to '#{@app}' cloud defined in Cloudfile"
|
255
260
|
end
|
256
261
|
|
257
262
|
desc "logs", "Show latest application logs"
|
@@ -261,14 +266,14 @@ We have been notified about it. We will be adding new resources shortly}
|
|
261
266
|
multiple_clouds(cloud, "logs")
|
262
267
|
begin
|
263
268
|
logs = @app.application_logs
|
264
|
-
say "Cloud #{@app
|
269
|
+
say "Cloud #{@app}:", :green
|
265
270
|
logs.each_with_index do |log, i|
|
266
271
|
say "Instance #{i+1}:", :green
|
267
272
|
say log
|
268
273
|
end
|
269
274
|
rescue Client::NotFoundException => e
|
270
275
|
raise unless e.resource == :cloud
|
271
|
-
say_error "You have no access to '#{cloud || @app
|
276
|
+
say_error "You have no access to '#{cloud || @app}' cloud defined in Cloudfile"
|
272
277
|
end
|
273
278
|
end
|
274
279
|
|
@@ -355,15 +360,20 @@ We have been notified about it. We will be adding new resources shortly}
|
|
355
360
|
|
356
361
|
def check_options(options)
|
357
362
|
unless options.empty?
|
358
|
-
|
359
|
-
options.include?(option.to_s) && options[option.to_s] != option.to_s
|
360
|
-
end && valid_databases?(options["databases"])
|
363
|
+
if !valid_size?(options["size"]) or !valid_databases?(options["databases"])
|
361
364
|
say_error "Try `shelly help add` for more information"
|
362
365
|
end
|
363
366
|
end
|
364
367
|
end
|
365
368
|
|
369
|
+
def valid_size?(size)
|
370
|
+
return true unless size.present?
|
371
|
+
sizes = Shelly::App::SERVER_SIZES
|
372
|
+
sizes.include?(size)
|
373
|
+
end
|
374
|
+
|
366
375
|
def valid_databases?(databases)
|
376
|
+
return true unless databases.present?
|
367
377
|
kinds = Shelly::App::DATABASE_KINDS
|
368
378
|
databases.all? { |kind| kinds.include?(kind) }
|
369
379
|
end
|
data/lib/shelly/helpers.rb
CHANGED
@@ -53,6 +53,12 @@ module Shelly
|
|
53
53
|
end
|
54
54
|
end
|
55
55
|
|
56
|
+
def ask_to_stop_application
|
57
|
+
stop_question = "Are you sure you want to shut down your application (yes/no):"
|
58
|
+
stop_application = ask(stop_question)
|
59
|
+
exit 1 unless stop_application == "yes"
|
60
|
+
end
|
61
|
+
|
56
62
|
def inside_git_repository?
|
57
63
|
say_error "Must be run inside your project git repository" unless App.inside_git_repository?
|
58
64
|
end
|
data/lib/shelly/version.rb
CHANGED
data/spec/shelly/app_spec.rb
CHANGED
@@ -157,11 +157,12 @@ describe Shelly::App do
|
|
157
157
|
end
|
158
158
|
|
159
159
|
describe "#generate_cloudfile" do
|
160
|
-
it "should return generated cloudfile" do
|
160
|
+
it "should return generated cloudfile for large instance" do
|
161
161
|
user = mock(:email => "bob@example.com")
|
162
162
|
@app.stub(:current_user).and_return(user)
|
163
163
|
@app.databases = %w(postgresql mongodb)
|
164
164
|
@app.domains = %w(foo-staging.winniecloud.com foo.example.com)
|
165
|
+
@app.size = "large"
|
165
166
|
FakeFS.deactivate!
|
166
167
|
expected = <<-config
|
167
168
|
foo-staging:
|
@@ -185,6 +186,39 @@ foo-staging:
|
|
185
186
|
size: large
|
186
187
|
databases:
|
187
188
|
- mongodb
|
189
|
+
config
|
190
|
+
@app.generate_cloudfile.strip.should == expected.strip
|
191
|
+
end
|
192
|
+
|
193
|
+
it "should return generated cloudfile for small instance" do
|
194
|
+
user = mock(:email => "bob@example.com")
|
195
|
+
@app.stub(:current_user).and_return(user)
|
196
|
+
@app.databases = %w(postgresql mongodb)
|
197
|
+
@app.domains = %w(foo-staging.winniecloud.com foo.example.com)
|
198
|
+
@app.size = "small"
|
199
|
+
FakeFS.deactivate!
|
200
|
+
expected = <<-config
|
201
|
+
foo-staging:
|
202
|
+
ruby_version: 1.9.3 # 1.9.3, 1.9.2 or ree-1.8.7
|
203
|
+
environment: production # RAILS_ENV
|
204
|
+
monitoring_email: bob@example.com
|
205
|
+
domains:
|
206
|
+
- foo-staging.winniecloud.com
|
207
|
+
- foo.example.com
|
208
|
+
servers:
|
209
|
+
app1:
|
210
|
+
size: small
|
211
|
+
thin: 2
|
212
|
+
# whenever: on
|
213
|
+
# delayed_job: 1
|
214
|
+
postgresql:
|
215
|
+
size: large
|
216
|
+
databases:
|
217
|
+
- postgresql
|
218
|
+
mongodb:
|
219
|
+
size: large
|
220
|
+
databases:
|
221
|
+
- mongodb
|
188
222
|
config
|
189
223
|
@app.generate_cloudfile.strip.should == expected.strip
|
190
224
|
end
|
@@ -41,7 +41,7 @@ Tasks:
|
|
41
41
|
shelly register [EMAIL] # Register new account
|
42
42
|
shelly setup # Set up clouds
|
43
43
|
shelly start # Start the cloud
|
44
|
-
shelly stop #
|
44
|
+
shelly stop # Shutdown the cloud
|
45
45
|
shelly user <command> # Manage collaborators
|
46
46
|
shelly version # Display shelly version
|
47
47
|
|
@@ -314,17 +314,17 @@ OUT
|
|
314
314
|
|
315
315
|
context "command line options" do
|
316
316
|
context "invalid params" do
|
317
|
-
it "should
|
317
|
+
it "should exit if databases are not valid" do
|
318
318
|
$stdout.should_receive(:puts).with("\e[31mTry `shelly help add` for more information\e[0m")
|
319
|
-
@main.options = {"code-name" => "foo"}
|
319
|
+
@main.options = {"code-name" => "foo", "databases" => ["not existing"]}
|
320
320
|
lambda {
|
321
321
|
invoke(@main, :add)
|
322
322
|
}.should raise_error(SystemExit)
|
323
323
|
end
|
324
324
|
|
325
|
-
it "should exit if
|
325
|
+
it "should exit if size is not valid" do
|
326
326
|
$stdout.should_receive(:puts).with("\e[31mTry `shelly help add` for more information\e[0m")
|
327
|
-
@main.options = {"
|
327
|
+
@main.options = {"size" => "wrong_size"}
|
328
328
|
lambda {
|
329
329
|
invoke(@main, :add)
|
330
330
|
}.should raise_error(SystemExit)
|
@@ -334,7 +334,7 @@ OUT
|
|
334
334
|
context "valid params" do
|
335
335
|
it "should create app on shelly cloud" do
|
336
336
|
@app.should_receive(:create)
|
337
|
-
@main.options = {"code-name" => "foo", "databases" => ["postgresql"]}
|
337
|
+
@main.options = {"code-name" => "foo", "databases" => ["postgresql"], "size" => "large"}
|
338
338
|
invoke(@main, :add)
|
339
339
|
end
|
340
340
|
end
|
@@ -428,7 +428,7 @@ OUT
|
|
428
428
|
@app.should_receive(:create).and_raise(exception)
|
429
429
|
$stdout.should_receive(:puts).with("\e[31mCode name has been already taken\e[0m")
|
430
430
|
$stdout.should_receive(:puts).with("\e[31mFix erros in the below command and type it again to create your cloud\e[0m")
|
431
|
-
$stdout.should_receive(:puts).with("\e[31mshelly add --code-name=foo-staging --databases=postgresql\e[0m")
|
431
|
+
$stdout.should_receive(:puts).with("\e[31mshelly add --code-name=foo-staging --databases=postgresql --size=large\e[0m")
|
432
432
|
lambda {
|
433
433
|
fake_stdin(["", ""]) do
|
434
434
|
invoke(@main, :add)
|
@@ -630,7 +630,7 @@ OUT
|
|
630
630
|
raise_conflict("state" => "no_code")
|
631
631
|
$stdout.should_receive(:puts).with(red "Not starting: no source code provided")
|
632
632
|
$stdout.should_receive(:puts).with(red "Push source code using:")
|
633
|
-
$stdout.should_receive(:puts).with(" git push production master")
|
633
|
+
$stdout.should_receive(:puts).with(" git push foo-production master")
|
634
634
|
lambda { invoke(@main, :start) }.should raise_error(SystemExit)
|
635
635
|
end
|
636
636
|
|
@@ -699,14 +699,22 @@ We have been notified about it. We will be adding new resources shortly")
|
|
699
699
|
it "should exit if user doesn't have access to clouds in Cloudfile" do
|
700
700
|
@client.stub(:stop_cloud).and_raise(Shelly::Client::NotFoundException.new("resource" => "cloud"))
|
701
701
|
$stdout.should_receive(:puts).with(red "You have no access to 'foo-production' cloud defined in Cloudfile")
|
702
|
-
lambda {
|
702
|
+
lambda {
|
703
|
+
fake_stdin(["yes"]) do
|
704
|
+
invoke(@main, :stop)
|
705
|
+
end
|
706
|
+
}.should raise_error(SystemExit)
|
703
707
|
end
|
704
708
|
|
705
709
|
context "single cloud in Cloudfile" do
|
706
|
-
it "should
|
710
|
+
it "should stop the cloud" do
|
707
711
|
@client.stub(:stop_cloud)
|
712
|
+
$stdout.should_receive(:print).with("Are you sure you want to shut down your application (yes/no): ")
|
713
|
+
$stdout.should_receive(:puts).with("\n")
|
708
714
|
$stdout.should_receive(:puts).with("Cloud 'foo-production' stopped")
|
709
|
-
|
715
|
+
fake_stdin(["yes"]) do
|
716
|
+
invoke(@main, :stop)
|
717
|
+
end
|
710
718
|
end
|
711
719
|
end
|
712
720
|
|
@@ -715,7 +723,7 @@ We have been notified about it. We will be adding new resources shortly")
|
|
715
723
|
File.open("Cloudfile", 'w') {|f| f.write("foo-staging:\nfoo-production:\n") }
|
716
724
|
end
|
717
725
|
|
718
|
-
it "should show information to
|
726
|
+
it "should show information to stop specific cloud and exit" do
|
719
727
|
$stdout.should_receive(:puts).with(red "You have multiple clouds in Cloudfile.")
|
720
728
|
$stdout.should_receive(:puts).with("Select cloud using `shelly stop --cloud foo-production`")
|
721
729
|
$stdout.should_receive(:puts).with("Available clouds:")
|
@@ -724,11 +732,15 @@ We have been notified about it. We will be adding new resources shortly")
|
|
724
732
|
lambda { invoke(@main, :stop) }.should raise_error(SystemExit)
|
725
733
|
end
|
726
734
|
|
727
|
-
it "should fetch from command line which cloud to
|
735
|
+
it "should fetch from command line which cloud to stop" do
|
728
736
|
@client.should_receive(:stop_cloud).with("foo-staging")
|
737
|
+
$stdout.should_receive(:print).with("Are you sure you want to shut down your application (yes/no): ")
|
738
|
+
$stdout.should_receive(:puts).with("\n")
|
729
739
|
$stdout.should_receive(:puts).with("Cloud 'foo-staging' stopped")
|
730
740
|
@main.options = {:cloud => "foo-staging"}
|
731
|
-
|
741
|
+
fake_stdin(["yes"]) do
|
742
|
+
invoke(@main, :stop)
|
743
|
+
end
|
732
744
|
end
|
733
745
|
end
|
734
746
|
end
|
metadata
CHANGED
@@ -1,167 +1,190 @@
|
|
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: 109
|
5
5
|
prerelease:
|
6
|
+
segments:
|
7
|
+
- 0
|
8
|
+
- 0
|
9
|
+
- 57
|
10
|
+
version: 0.0.57
|
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-03-27 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
|
32
|
+
requirement: *id001
|
33
|
+
prerelease: false
|
22
34
|
type: :development
|
35
|
+
name: rspec
|
36
|
+
- !ruby/object:Gem::Dependency
|
37
|
+
version_requirements: &id002 !ruby/object:Gem::Requirement
|
38
|
+
none: false
|
39
|
+
requirements:
|
40
|
+
- - ">="
|
41
|
+
- !ruby/object:Gem::Version
|
42
|
+
hash: 3
|
43
|
+
segments:
|
44
|
+
- 0
|
45
|
+
version: "0"
|
46
|
+
requirement: *id002
|
23
47
|
prerelease: false
|
24
|
-
|
25
|
-
- !ruby/object:Gem::Dependency
|
48
|
+
type: :development
|
26
49
|
name: rake
|
27
|
-
|
50
|
+
- !ruby/object:Gem::Dependency
|
51
|
+
version_requirements: &id003 !ruby/object:Gem::Requirement
|
28
52
|
none: false
|
29
|
-
requirements:
|
30
|
-
- -
|
31
|
-
- !ruby/object:Gem::Version
|
32
|
-
|
33
|
-
|
53
|
+
requirements:
|
54
|
+
- - ">="
|
55
|
+
- !ruby/object:Gem::Version
|
56
|
+
hash: 3
|
57
|
+
segments:
|
58
|
+
- 0
|
59
|
+
version: "0"
|
60
|
+
requirement: *id003
|
34
61
|
prerelease: false
|
35
|
-
|
36
|
-
- !ruby/object:Gem::Dependency
|
62
|
+
type: :development
|
37
63
|
name: guard
|
38
|
-
|
64
|
+
- !ruby/object:Gem::Dependency
|
65
|
+
version_requirements: &id004 !ruby/object:Gem::Requirement
|
39
66
|
none: false
|
40
|
-
requirements:
|
41
|
-
- -
|
42
|
-
- !ruby/object:Gem::Version
|
43
|
-
|
44
|
-
|
67
|
+
requirements:
|
68
|
+
- - ">="
|
69
|
+
- !ruby/object:Gem::Version
|
70
|
+
hash: 3
|
71
|
+
segments:
|
72
|
+
- 0
|
73
|
+
version: "0"
|
74
|
+
requirement: *id004
|
45
75
|
prerelease: false
|
46
|
-
|
47
|
-
- !ruby/object:Gem::Dependency
|
76
|
+
type: :development
|
48
77
|
name: guard-rspec
|
49
|
-
|
78
|
+
- !ruby/object:Gem::Dependency
|
79
|
+
version_requirements: &id005 !ruby/object:Gem::Requirement
|
50
80
|
none: false
|
51
|
-
requirements:
|
52
|
-
- -
|
53
|
-
- !ruby/object:Gem::Version
|
54
|
-
|
55
|
-
|
81
|
+
requirements:
|
82
|
+
- - ">="
|
83
|
+
- !ruby/object:Gem::Version
|
84
|
+
hash: 3
|
85
|
+
segments:
|
86
|
+
- 0
|
87
|
+
version: "0"
|
88
|
+
requirement: *id005
|
56
89
|
prerelease: false
|
57
|
-
version_requirements: *70229037286900
|
58
|
-
- !ruby/object:Gem::Dependency
|
59
|
-
name: simplecov
|
60
|
-
requirement: &70229037286280 !ruby/object:Gem::Requirement
|
61
|
-
none: false
|
62
|
-
requirements:
|
63
|
-
- - ! '>='
|
64
|
-
- !ruby/object:Gem::Version
|
65
|
-
version: '0'
|
66
90
|
type: :development
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
name: ruby_gntp
|
71
|
-
requirement: &70229037285560 !ruby/object:Gem::Requirement
|
91
|
+
name: simplecov
|
92
|
+
- !ruby/object:Gem::Dependency
|
93
|
+
version_requirements: &id006 !ruby/object:Gem::Requirement
|
72
94
|
none: false
|
73
|
-
requirements:
|
74
|
-
- -
|
75
|
-
- !ruby/object:Gem::Version
|
76
|
-
|
77
|
-
|
95
|
+
requirements:
|
96
|
+
- - ">="
|
97
|
+
- !ruby/object:Gem::Version
|
98
|
+
hash: 3
|
99
|
+
segments:
|
100
|
+
- 0
|
101
|
+
version: "0"
|
102
|
+
requirement: *id006
|
78
103
|
prerelease: false
|
79
|
-
version_requirements: *70229037285560
|
80
|
-
- !ruby/object:Gem::Dependency
|
81
|
-
name: rb-fsevent
|
82
|
-
requirement: &70229037284940 !ruby/object:Gem::Requirement
|
83
|
-
none: false
|
84
|
-
requirements:
|
85
|
-
- - ! '>='
|
86
|
-
- !ruby/object:Gem::Version
|
87
|
-
version: '0'
|
88
104
|
type: :development
|
89
|
-
prerelease: false
|
90
|
-
version_requirements: *70229037284940
|
91
|
-
- !ruby/object:Gem::Dependency
|
92
105
|
name: fakefs
|
93
|
-
|
106
|
+
- !ruby/object:Gem::Dependency
|
107
|
+
version_requirements: &id007 !ruby/object:Gem::Requirement
|
94
108
|
none: false
|
95
|
-
requirements:
|
96
|
-
- -
|
97
|
-
- !ruby/object:Gem::Version
|
98
|
-
|
99
|
-
|
109
|
+
requirements:
|
110
|
+
- - ">="
|
111
|
+
- !ruby/object:Gem::Version
|
112
|
+
hash: 3
|
113
|
+
segments:
|
114
|
+
- 0
|
115
|
+
version: "0"
|
116
|
+
requirement: *id007
|
100
117
|
prerelease: false
|
101
|
-
version_requirements: *70229037284480
|
102
|
-
- !ruby/object:Gem::Dependency
|
103
|
-
name: fakeweb
|
104
|
-
requirement: &70229037284020 !ruby/object:Gem::Requirement
|
105
|
-
none: false
|
106
|
-
requirements:
|
107
|
-
- - ! '>='
|
108
|
-
- !ruby/object:Gem::Version
|
109
|
-
version: '0'
|
110
118
|
type: :development
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
name: wijet-thor
|
115
|
-
requirement: &70229037283500 !ruby/object:Gem::Requirement
|
119
|
+
name: fakeweb
|
120
|
+
- !ruby/object:Gem::Dependency
|
121
|
+
version_requirements: &id008 !ruby/object:Gem::Requirement
|
116
122
|
none: false
|
117
|
-
requirements:
|
123
|
+
requirements:
|
118
124
|
- - ~>
|
119
|
-
- !ruby/object:Gem::Version
|
125
|
+
- !ruby/object:Gem::Version
|
126
|
+
hash: 41
|
127
|
+
segments:
|
128
|
+
- 0
|
129
|
+
- 14
|
130
|
+
- 7
|
120
131
|
version: 0.14.7
|
132
|
+
requirement: *id008
|
133
|
+
prerelease: false
|
121
134
|
type: :runtime
|
135
|
+
name: wijet-thor
|
136
|
+
- !ruby/object:Gem::Dependency
|
137
|
+
version_requirements: &id009 !ruby/object:Gem::Requirement
|
138
|
+
none: false
|
139
|
+
requirements:
|
140
|
+
- - ">="
|
141
|
+
- !ruby/object:Gem::Version
|
142
|
+
hash: 3
|
143
|
+
segments:
|
144
|
+
- 0
|
145
|
+
version: "0"
|
146
|
+
requirement: *id009
|
122
147
|
prerelease: false
|
123
|
-
|
124
|
-
- !ruby/object:Gem::Dependency
|
148
|
+
type: :runtime
|
125
149
|
name: rest-client
|
126
|
-
|
150
|
+
- !ruby/object:Gem::Dependency
|
151
|
+
version_requirements: &id010 !ruby/object:Gem::Requirement
|
127
152
|
none: false
|
128
|
-
requirements:
|
129
|
-
- -
|
130
|
-
- !ruby/object:Gem::Version
|
131
|
-
|
132
|
-
|
153
|
+
requirements:
|
154
|
+
- - ">="
|
155
|
+
- !ruby/object:Gem::Version
|
156
|
+
hash: 3
|
157
|
+
segments:
|
158
|
+
- 0
|
159
|
+
version: "0"
|
160
|
+
requirement: *id010
|
133
161
|
prerelease: false
|
134
|
-
|
135
|
-
- !ruby/object:Gem::Dependency
|
162
|
+
type: :runtime
|
136
163
|
name: json
|
137
|
-
|
164
|
+
- !ruby/object:Gem::Dependency
|
165
|
+
version_requirements: &id011 !ruby/object:Gem::Requirement
|
138
166
|
none: false
|
139
|
-
requirements:
|
140
|
-
- -
|
141
|
-
- !ruby/object:Gem::Version
|
142
|
-
|
143
|
-
|
167
|
+
requirements:
|
168
|
+
- - ">="
|
169
|
+
- !ruby/object:Gem::Version
|
170
|
+
hash: 3
|
171
|
+
segments:
|
172
|
+
- 0
|
173
|
+
version: "0"
|
174
|
+
requirement: *id011
|
144
175
|
prerelease: false
|
145
|
-
version_requirements: *70229037282620
|
146
|
-
- !ruby/object:Gem::Dependency
|
147
|
-
name: progressbar
|
148
|
-
requirement: &70229037282200 !ruby/object:Gem::Requirement
|
149
|
-
none: false
|
150
|
-
requirements:
|
151
|
-
- - ! '>='
|
152
|
-
- !ruby/object:Gem::Version
|
153
|
-
version: '0'
|
154
176
|
type: :runtime
|
155
|
-
|
156
|
-
version_requirements: *70229037282200
|
177
|
+
name: progressbar
|
157
178
|
description: Tool for managing applications and clouds at shellycloud.com
|
158
|
-
email:
|
179
|
+
email:
|
159
180
|
- support@shellycloud.com
|
160
|
-
executables:
|
181
|
+
executables:
|
161
182
|
- shelly
|
162
183
|
extensions: []
|
184
|
+
|
163
185
|
extra_rdoc_files: []
|
164
|
-
|
186
|
+
|
187
|
+
files:
|
165
188
|
- .gitignore
|
166
189
|
- .travis.yml
|
167
190
|
- Gemfile
|
@@ -213,43 +236,36 @@ files:
|
|
213
236
|
- spec/thor/options_spec.rb
|
214
237
|
homepage: http://shellycloud.com
|
215
238
|
licenses: []
|
239
|
+
|
216
240
|
post_install_message:
|
217
241
|
rdoc_options: []
|
218
|
-
|
242
|
+
|
243
|
+
require_paths:
|
219
244
|
- lib
|
220
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
245
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
221
246
|
none: false
|
222
|
-
requirements:
|
223
|
-
- -
|
224
|
-
- !ruby/object:Gem::Version
|
225
|
-
|
226
|
-
|
247
|
+
requirements:
|
248
|
+
- - ">="
|
249
|
+
- !ruby/object:Gem::Version
|
250
|
+
hash: 3
|
251
|
+
segments:
|
252
|
+
- 0
|
253
|
+
version: "0"
|
254
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
227
255
|
none: false
|
228
|
-
requirements:
|
229
|
-
- -
|
230
|
-
- !ruby/object:Gem::Version
|
231
|
-
|
256
|
+
requirements:
|
257
|
+
- - ">="
|
258
|
+
- !ruby/object:Gem::Version
|
259
|
+
hash: 3
|
260
|
+
segments:
|
261
|
+
- 0
|
262
|
+
version: "0"
|
232
263
|
requirements: []
|
264
|
+
|
233
265
|
rubyforge_project: shelly
|
234
266
|
rubygems_version: 1.8.10
|
235
267
|
signing_key:
|
236
268
|
specification_version: 3
|
237
269
|
summary: Shelly Cloud command line tool
|
238
|
-
test_files:
|
239
|
-
|
240
|
-
- spec/input_faker.rb
|
241
|
-
- spec/shelly/app_spec.rb
|
242
|
-
- spec/shelly/backup_spec.rb
|
243
|
-
- spec/shelly/cli/backup_spec.rb
|
244
|
-
- spec/shelly/cli/config_spec.rb
|
245
|
-
- spec/shelly/cli/deploys_spec.rb
|
246
|
-
- spec/shelly/cli/main_spec.rb
|
247
|
-
- spec/shelly/cli/runner_spec.rb
|
248
|
-
- spec/shelly/cli/user_spec.rb
|
249
|
-
- spec/shelly/client_spec.rb
|
250
|
-
- spec/shelly/cloudfile_spec.rb
|
251
|
-
- spec/shelly/download_progress_bar_spec.rb
|
252
|
-
- spec/shelly/model_spec.rb
|
253
|
-
- spec/shelly/user_spec.rb
|
254
|
-
- spec/spec_helper.rb
|
255
|
-
- spec/thor/options_spec.rb
|
270
|
+
test_files: []
|
271
|
+
|