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.
@@ -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
+