shelly 0.0.56 → 0.0.57
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 +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
|
+
|