shelly 0.0.56 → 0.0.57

Sign up to get free protection for your applications and to get access to all the features.
@@ -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)
@@ -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.code_name}/billing/edit"
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 production master"
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", "Stop the cloud"
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
- say "Cloud '#{@app.code_name}' stopped"
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.code_name}' cloud defined in Cloudfile"
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.code_name}."
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.code_name}' cloud defined in Cloudfile"
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.code_name}:", :green
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.code_name}' cloud defined in Cloudfile"
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
- unless ["code-name", "databases"].all? do |option|
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
@@ -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
@@ -8,8 +8,8 @@
8
8
  <%- end -%>
9
9
  servers:
10
10
  app1:
11
- size: large
12
- thin: 4
11
+ size: <%= size %>
12
+ thin: <%= thin %>
13
13
  # whenever: on
14
14
  # delayed_job: 1
15
15
  <%- @databases.each do |kind| -%>
@@ -1,3 +1,3 @@
1
1
  module Shelly
2
- VERSION = "0.0.56"
2
+ VERSION = "0.0.57"
3
3
  end
@@ -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 # Stop the cloud
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 show help and exit if not all options are passed" do
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 databases are not valid" do
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 = {"code-name" => "foo", "databases" => ["not existing"]}
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 { invoke(@main, :stop) }.should raise_error(SystemExit)
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 start the cloud" do
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
- invoke(@main, :stop)
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 start specific cloud and exit" do
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 start" do
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
- invoke(@main, :stop)
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
- version: 0.0.56
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
- date: 2012-03-23 00:00:00.000000000Z
13
- dependencies:
14
- - !ruby/object:Gem::Dependency
15
- name: rspec
16
- requirement: &70229037288560 !ruby/object:Gem::Requirement
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
- version_requirements: *70229037288560
25
- - !ruby/object:Gem::Dependency
48
+ type: :development
26
49
  name: rake
27
- requirement: &70229037288140 !ruby/object:Gem::Requirement
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
- version: '0'
33
- type: :development
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
- version_requirements: *70229037288140
36
- - !ruby/object:Gem::Dependency
62
+ type: :development
37
63
  name: guard
38
- requirement: &70229037287500 !ruby/object:Gem::Requirement
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
- version: '0'
44
- type: :development
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
- version_requirements: *70229037287500
47
- - !ruby/object:Gem::Dependency
76
+ type: :development
48
77
  name: guard-rspec
49
- requirement: &70229037286900 !ruby/object:Gem::Requirement
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
- version: '0'
55
- type: :development
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
- prerelease: false
68
- version_requirements: *70229037286280
69
- - !ruby/object:Gem::Dependency
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
- version: '0'
77
- type: :development
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
- requirement: &70229037284480 !ruby/object:Gem::Requirement
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
- version: '0'
99
- type: :development
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
- prerelease: false
112
- version_requirements: *70229037284020
113
- - !ruby/object:Gem::Dependency
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
- version_requirements: *70229037283500
124
- - !ruby/object:Gem::Dependency
148
+ type: :runtime
125
149
  name: rest-client
126
- requirement: &70229037283080 !ruby/object:Gem::Requirement
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
- version: '0'
132
- type: :runtime
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
- version_requirements: *70229037283080
135
- - !ruby/object:Gem::Dependency
162
+ type: :runtime
136
163
  name: json
137
- requirement: &70229037282620 !ruby/object:Gem::Requirement
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
- version: '0'
143
- type: :runtime
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
- prerelease: false
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
- files:
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
- require_paths:
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
- version: '0'
226
- required_rubygems_version: !ruby/object:Gem::Requirement
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
- version: '0'
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
- - spec/helpers.rb
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
+