shelly 0.2.17 → 0.2.18

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.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: a07cc071938f6bb5c849911f4ce586696defdb0a
4
+ data.tar.gz: dd4978354e6889f603d27fd9e281904dcc0c2ba9
5
+ SHA512:
6
+ metadata.gz: 6e0848e3a498550f2ac9d5a6d5785cc7b1d0de377d3a45841b493e72a064a8606cc733db493452cc9ececaea70061c0fc1c768622c8be42a85e7c1127f55a54e
7
+ data.tar.gz: 59ba72b5979aa81a3a406c51c2987f2eba428f59d416b9bd2cd421ac557474ee18c87af107328c1c914f91c08bfc9f978bd2c70e6ccc0032cf9446830899cfce
data/CHANGELOG.md CHANGED
@@ -1,3 +1,7 @@
1
+ ## 0.2.18 / 2013-04-25
2
+
3
+ * [bug] `shelly add` doesn't prompt the user to provide billing details when adding to existing organization.
4
+
1
5
  ## 0.2.17 / 2013-04-12
2
6
 
3
7
  * [feature] Added '--cloud code_name' to command given in output after failed `shelly redeploy` and `shelly stop`.
data/lib/shelly/app.rb CHANGED
@@ -214,6 +214,10 @@ module Shelly
214
214
  attributes["organization"]["credit"].to_f
215
215
  end
216
216
 
217
+ def organization_details_present?
218
+ attributes["organization"]["details_present"]
219
+ end
220
+
217
221
  def self.inside_git_repository?
218
222
  system("git status > /dev/null 2>&1")
219
223
  end
@@ -116,12 +116,16 @@ module Shelly
116
116
 
117
117
  say "Creating Cloudfile", :green
118
118
  app.create_cloudfile
119
- if app.credit > 0
119
+ if app.credit > 0 || !app.organization_details_present?
120
120
  say_new_line
121
121
  say "Billing information", :green
122
- say "Cloud created with #{app.credit.to_i} Euro credit."
123
- say "Remember to provide billing details before trial ends."
124
- say app.edit_billing_url
122
+ if app.credit > 0
123
+ say "#{app.credit.to_i} Euro credit remaining."
124
+ end
125
+ if !app.organization_details_present?
126
+ say "Remember to provide billing details before trial ends."
127
+ say app.edit_billing_url
128
+ end
125
129
  end
126
130
 
127
131
  info_adding_cloudfile_to_repository
@@ -201,7 +205,7 @@ module Shelly
201
205
  case e[:state]
202
206
  when "running"
203
207
  say_error "Not starting: cloud '#{app}' is already running"
204
- when "deploying", "configuring"
208
+ when "deploying"
205
209
  say_error "Not starting: cloud '#{app}' is currently deploying"
206
210
  when "no_code"
207
211
  say_error "Not starting: no source code provided", :with_exit => false
@@ -372,7 +376,7 @@ Wait until cloud is in 'turned off' state and try again.}
372
376
  deployment_progress(app, deployment_id, "Cloud redeploy")
373
377
  rescue Client::ConflictException => e
374
378
  case e[:state]
375
- when "deploying", "configuring"
379
+ when "deploying"
376
380
  say_error "Your application is being redeployed at the moment"
377
381
  when "no_code", "no_billing", "turned_off"
378
382
  say_error "Cloud #{app} is not running", :with_exit => false
@@ -1,3 +1,3 @@
1
1
  module Shelly
2
- VERSION = "0.2.17"
2
+ VERSION = "0.2.18"
3
3
  end
@@ -134,7 +134,8 @@ describe Shelly::App do
134
134
  @response = {"web_server_ip" => "192.0.2.1",
135
135
  "state" => "running",
136
136
  "organization" => {
137
- "credit" => 23.0
137
+ "credit" => 23.0,
138
+ "details_present" => true
138
139
  },
139
140
  "git_info" => {
140
141
  "deployed_commit_message" => "Commit message",
@@ -145,11 +146,17 @@ describe Shelly::App do
145
146
  end
146
147
 
147
148
  describe "#credit" do
148
- it "should return freecredit that app has" do
149
+ it "should return free credit that app has" do
149
150
  @app.credit.should == 23.0
150
151
  end
151
152
  end
152
153
 
154
+ describe "#organization_details_present?" do
155
+ it "should return app's organization's details_present?" do
156
+ @app.organization_details_present?.should == true
157
+ end
158
+ end
159
+
153
160
  it "should fetch app attributes from API and cache them" do
154
161
  @client.should_receive(:app).with("foo-staging").exactly(:once).and_return(@response)
155
162
  2.times { @app.attributes }
@@ -9,6 +9,7 @@ describe Shelly::CLI::Main do
9
9
  Shelly::CLI::Main.stub(:new).and_return(@main)
10
10
  @client = mock
11
11
  @client.stub(:token).and_return("abc")
12
+ @client.stub(:shellyapp_url).and_return("https://example.com")
12
13
  Shelly::Client.stub(:new).and_return(@client)
13
14
  Shelly::User.stub(:guess_email).and_return("")
14
15
  $stdout.stub(:puts)
@@ -291,7 +292,8 @@ describe Shelly::CLI::Main do
291
292
  Shelly::App.stub(:inside_git_repository?).and_return(true)
292
293
  Shelly::App.stub(:new).and_return(@app)
293
294
  @client.stub(:token).and_return("abc")
294
- @app.stub(:attributes).and_return({"organization" => {"credit" => 0}})
295
+ @app.stub(:attributes).and_return(
296
+ {"organization" => {"credit" => 0, "details_present" => true}})
295
297
  @app.stub(:git_remote_exist?).and_return(false)
296
298
  @main.stub(:check => true)
297
299
  @main.stub(:ask_for_organization)
@@ -418,14 +420,14 @@ More info at http://git-scm.com/book/en/Git-Basics-Getting-a-Git-Repository\e[0m
418
420
  end
419
421
 
420
422
  it "should create the app on shelly cloud and show credit information" do
421
- @app.stub(:attributes).and_return("organization" => {"credit" => "40"})
423
+ @app.stub(:attributes).and_return(
424
+ "organization" => {"credit" => "40", "details_present" => false})
422
425
  @app.stub(:organization).and_return("example")
423
- @client.stub(:shellyapp_url).and_return("http://example.com")
424
426
  @app.should_receive(:create)
425
427
  $stdout.should_receive(:puts).with(green "Billing information")
426
- $stdout.should_receive(:puts).with("Cloud created with 40 Euro credit.")
428
+ $stdout.should_receive(:puts).with("40 Euro credit remaining.")
427
429
  $stdout.should_receive(:puts).with("Remember to provide billing details before trial ends.")
428
- $stdout.should_receive(:puts).with("http://example.com/organizations/example/edit")
430
+ $stdout.should_receive(:puts).with("https://example.com/organizations/example/edit")
429
431
 
430
432
  fake_stdin(["", ""]) do
431
433
  invoke(@main, :add)
@@ -754,12 +756,10 @@ More info at http://git-scm.com/book/en/Git-Basics-Getting-a-Git-Repository\e[0m
754
756
  lambda { invoke(@main, :start) }.should raise_error(SystemExit)
755
757
  end
756
758
 
757
- %w{deploying configuring}.each do |state|
758
- it "should show information that cloud is #{state}" do
759
- raise_conflict("state" => state)
760
- $stdout.should_receive(:puts).with(red "Not starting: cloud 'foo-production' is currently deploying")
761
- lambda { invoke(@main, :start) }.should raise_error(SystemExit)
762
- end
759
+ it "should show information that cloud is deploying" do
760
+ raise_conflict("state" => "deploying")
761
+ $stdout.should_receive(:puts).with(red "Not starting: cloud 'foo-production' is currently deploying")
762
+ lambda { invoke(@main, :start) }.should raise_error(SystemExit)
763
763
  end
764
764
 
765
765
  it "should show information that cloud has no code" do
@@ -793,7 +793,6 @@ We have been notified about it. We will be adding new resources shortly")
793
793
  @app.stub(:edit_billing_url).and_return("http://example.com/billing/edit")
794
794
  $stdout.should_receive(:puts).with(red "Please fill in billing details to start foo-production.")
795
795
  $stdout.should_receive(:puts).with(red "Visit: http://example.com/billing/edit")
796
- @client.stub(:shellyapp_url).and_return("http://example.com")
797
796
  lambda { invoke(@main, :start) }.should raise_error(SystemExit)
798
797
  end
799
798
 
@@ -895,7 +894,6 @@ Wait until cloud is in 'turned off' state and try again.")
895
894
 
896
895
  it "should show messge about app's no_code" do
897
896
  raise_conflict("state" => "no_code")
898
- @client.stub(:shellyapp_url).and_return("https://example.com")
899
897
  $stdout.should_receive(:puts).with(red "You need to deploy your cloud first.")
900
898
  $stdout.should_receive(:puts).with('More information can be found at:')
901
899
  $stdout.should_receive(:puts).with('https://example.com/documentation/deployment')
@@ -1360,16 +1358,14 @@ Wait until cloud is in 'turned off' state and try again.")
1360
1358
  end
1361
1359
  end
1362
1360
 
1363
- %w(deploying configuring).each do |state|
1364
- context "when application is in #{state} state" do
1365
- it "should display error that deploy is in progress" do
1366
- exception = Shelly::Client::ConflictException.new("state" => state)
1367
- @client.should_receive(:redeploy).with("foo-production").and_raise(exception)
1368
- $stdout.should_receive(:puts).with(red "Your application is being redeployed at the moment")
1369
- lambda {
1370
- invoke(@main, :redeploy)
1371
- }.should raise_error(SystemExit)
1372
- end
1361
+ context "when application is in deploying state" do
1362
+ it "should display error that deploy is in progress" do
1363
+ exception = Shelly::Client::ConflictException.new("state" => "deploying")
1364
+ @client.should_receive(:redeploy).with("foo-production").and_raise(exception)
1365
+ $stdout.should_receive(:puts).with(red "Your application is being redeployed at the moment")
1366
+ lambda {
1367
+ invoke(@main, :redeploy)
1368
+ }.should raise_error(SystemExit)
1373
1369
  end
1374
1370
  end
1375
1371
 
metadata CHANGED
@@ -1,20 +1,18 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: shelly
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.17
5
- prerelease:
4
+ version: 0.2.18
6
5
  platform: ruby
7
6
  authors:
8
7
  - Shelly Cloud team
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2013-04-12 00:00:00.000000000 Z
11
+ date: 2013-04-25 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: rspec
16
15
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
16
  requirements:
19
17
  - - ~>
20
18
  - !ruby/object:Gem::Version
@@ -22,7 +20,6 @@ dependencies:
22
20
  type: :development
23
21
  prerelease: false
24
22
  version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
23
  requirements:
27
24
  - - ~>
28
25
  - !ruby/object:Gem::Version
@@ -30,103 +27,118 @@ dependencies:
30
27
  - !ruby/object:Gem::Dependency
31
28
  name: rake
32
29
  requirement: !ruby/object:Gem::Requirement
33
- none: false
34
30
  requirements:
35
- - - ! '>='
31
+ - - '>='
36
32
  - !ruby/object:Gem::Version
37
33
  version: '0'
38
34
  type: :development
39
35
  prerelease: false
40
36
  version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
37
  requirements:
43
- - - ! '>='
38
+ - - '>='
44
39
  - !ruby/object:Gem::Version
45
40
  version: '0'
46
41
  - !ruby/object:Gem::Dependency
47
42
  name: guard
48
43
  requirement: !ruby/object:Gem::Requirement
49
- none: false
50
44
  requirements:
51
- - - ! '>='
45
+ - - '>='
52
46
  - !ruby/object:Gem::Version
53
47
  version: '0'
54
48
  type: :development
55
49
  prerelease: false
56
50
  version_requirements: !ruby/object:Gem::Requirement
57
- none: false
58
51
  requirements:
59
- - - ! '>='
52
+ - - '>='
60
53
  - !ruby/object:Gem::Version
61
54
  version: '0'
62
55
  - !ruby/object:Gem::Dependency
63
56
  name: guard-rspec
64
57
  requirement: !ruby/object:Gem::Requirement
65
- none: false
66
58
  requirements:
67
- - - ! '>='
59
+ - - '>='
68
60
  - !ruby/object:Gem::Version
69
61
  version: '0'
70
62
  type: :development
71
63
  prerelease: false
72
64
  version_requirements: !ruby/object:Gem::Requirement
73
- none: false
74
65
  requirements:
75
- - - ! '>='
66
+ - - '>='
76
67
  - !ruby/object:Gem::Version
77
68
  version: '0'
78
69
  - !ruby/object:Gem::Dependency
79
70
  name: simplecov
80
71
  requirement: !ruby/object:Gem::Requirement
81
- none: false
82
72
  requirements:
83
- - - ! '>='
73
+ - - '>='
84
74
  - !ruby/object:Gem::Version
85
75
  version: '0'
86
76
  type: :development
87
77
  prerelease: false
88
78
  version_requirements: !ruby/object:Gem::Requirement
89
- none: false
90
79
  requirements:
91
- - - ! '>='
80
+ - - '>='
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: ruby_gntp
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - '>='
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - '>='
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: rb-fsevent
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - '>='
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - '>='
92
109
  - !ruby/object:Gem::Version
93
110
  version: '0'
94
111
  - !ruby/object:Gem::Dependency
95
112
  name: fakefs
96
113
  requirement: !ruby/object:Gem::Requirement
97
- none: false
98
114
  requirements:
99
- - - ! '>='
115
+ - - '>='
100
116
  - !ruby/object:Gem::Version
101
117
  version: '0'
102
118
  type: :development
103
119
  prerelease: false
104
120
  version_requirements: !ruby/object:Gem::Requirement
105
- none: false
106
121
  requirements:
107
- - - ! '>='
122
+ - - '>='
108
123
  - !ruby/object:Gem::Version
109
124
  version: '0'
110
125
  - !ruby/object:Gem::Dependency
111
126
  name: fakeweb
112
127
  requirement: !ruby/object:Gem::Requirement
113
- none: false
114
128
  requirements:
115
- - - ! '>='
129
+ - - '>='
116
130
  - !ruby/object:Gem::Version
117
131
  version: '0'
118
132
  type: :development
119
133
  prerelease: false
120
134
  version_requirements: !ruby/object:Gem::Requirement
121
- none: false
122
135
  requirements:
123
- - - ! '>='
136
+ - - '>='
124
137
  - !ruby/object:Gem::Version
125
138
  version: '0'
126
139
  - !ruby/object:Gem::Dependency
127
140
  name: wijet-thor
128
141
  requirement: !ruby/object:Gem::Requirement
129
- none: false
130
142
  requirements:
131
143
  - - ~>
132
144
  - !ruby/object:Gem::Version
@@ -134,7 +146,6 @@ dependencies:
134
146
  type: :runtime
135
147
  prerelease: false
136
148
  version_requirements: !ruby/object:Gem::Requirement
137
- none: false
138
149
  requirements:
139
150
  - - ~>
140
151
  - !ruby/object:Gem::Version
@@ -142,65 +153,57 @@ dependencies:
142
153
  - !ruby/object:Gem::Dependency
143
154
  name: rest-client
144
155
  requirement: !ruby/object:Gem::Requirement
145
- none: false
146
156
  requirements:
147
- - - ! '>='
157
+ - - '>='
148
158
  - !ruby/object:Gem::Version
149
159
  version: '0'
150
160
  type: :runtime
151
161
  prerelease: false
152
162
  version_requirements: !ruby/object:Gem::Requirement
153
- none: false
154
163
  requirements:
155
- - - ! '>='
164
+ - - '>='
156
165
  - !ruby/object:Gem::Version
157
166
  version: '0'
158
167
  - !ruby/object:Gem::Dependency
159
168
  name: json
160
169
  requirement: !ruby/object:Gem::Requirement
161
- none: false
162
170
  requirements:
163
- - - ! '>='
171
+ - - '>='
164
172
  - !ruby/object:Gem::Version
165
173
  version: '0'
166
174
  type: :runtime
167
175
  prerelease: false
168
176
  version_requirements: !ruby/object:Gem::Requirement
169
- none: false
170
177
  requirements:
171
- - - ! '>='
178
+ - - '>='
172
179
  - !ruby/object:Gem::Version
173
180
  version: '0'
174
181
  - !ruby/object:Gem::Dependency
175
182
  name: progressbar
176
183
  requirement: !ruby/object:Gem::Requirement
177
- none: false
178
184
  requirements:
179
- - - ! '>='
185
+ - - '>='
180
186
  - !ruby/object:Gem::Version
181
187
  version: '0'
182
188
  type: :runtime
183
189
  prerelease: false
184
190
  version_requirements: !ruby/object:Gem::Requirement
185
- none: false
186
191
  requirements:
187
- - - ! '>='
192
+ - - '>='
188
193
  - !ruby/object:Gem::Version
189
194
  version: '0'
190
195
  - !ruby/object:Gem::Dependency
191
196
  name: launchy
192
197
  requirement: !ruby/object:Gem::Requirement
193
- none: false
194
198
  requirements:
195
- - - ! '>='
199
+ - - '>='
196
200
  - !ruby/object:Gem::Version
197
201
  version: '0'
198
202
  type: :runtime
199
203
  prerelease: false
200
204
  version_requirements: !ruby/object:Gem::Requirement
201
- none: false
202
205
  requirements:
203
- - - ! '>='
206
+ - - '>='
204
207
  - !ruby/object:Gem::Version
205
208
  version: '0'
206
209
  description: Tool for managing applications and clouds at shellycloud.com
@@ -273,26 +276,46 @@ files:
273
276
  - spec/thor/options_spec.rb
274
277
  homepage: http://shellycloud.com
275
278
  licenses: []
279
+ metadata: {}
276
280
  post_install_message:
277
281
  rdoc_options: []
278
282
  require_paths:
279
283
  - lib
280
284
  required_ruby_version: !ruby/object:Gem::Requirement
281
- none: false
282
285
  requirements:
283
- - - ! '>='
286
+ - - '>='
284
287
  - !ruby/object:Gem::Version
285
288
  version: '0'
286
289
  required_rubygems_version: !ruby/object:Gem::Requirement
287
- none: false
288
290
  requirements:
289
- - - ! '>='
291
+ - - '>='
290
292
  - !ruby/object:Gem::Version
291
293
  version: '0'
292
294
  requirements: []
293
295
  rubyforge_project: shelly
294
- rubygems_version: 1.8.24
296
+ rubygems_version: 2.0.2
295
297
  signing_key:
296
- specification_version: 3
298
+ specification_version: 4
297
299
  summary: Shelly Cloud command line tool
298
- test_files: []
300
+ test_files:
301
+ - spec/helpers.rb
302
+ - spec/input_faker.rb
303
+ - spec/shelly/app_spec.rb
304
+ - spec/shelly/backup_spec.rb
305
+ - spec/shelly/cli/backup_spec.rb
306
+ - spec/shelly/cli/config_spec.rb
307
+ - spec/shelly/cli/deploy_spec.rb
308
+ - spec/shelly/cli/file_spec.rb
309
+ - spec/shelly/cli/main_spec.rb
310
+ - spec/shelly/cli/organization_spec.rb
311
+ - spec/shelly/cli/runner_spec.rb
312
+ - spec/shelly/cli/user_spec.rb
313
+ - spec/shelly/client_spec.rb
314
+ - spec/shelly/cloudfile_spec.rb
315
+ - spec/shelly/download_progress_bar_spec.rb
316
+ - spec/shelly/model_spec.rb
317
+ - spec/shelly/organization_spec.rb
318
+ - spec/shelly/structure_validator_spec.rb
319
+ - spec/shelly/user_spec.rb
320
+ - spec/spec_helper.rb
321
+ - spec/thor/options_spec.rb