shelly 0.0.48.pre2 → 0.0.48.pre3

Sign up to get free protection for your applications and to get access to all the features.
data/lib/shelly/app.rb CHANGED
@@ -1,5 +1,4 @@
1
1
  require 'erb'
2
- require 'launchy'
3
2
  require "shelly/backup"
4
3
 
5
4
  module Shelly
@@ -168,11 +167,6 @@ module Shelly
168
167
  attributes["mail_server_ip"]
169
168
  end
170
169
 
171
- def open_billing_page
172
- url = "#{shelly.shellyapp_url}/login?api_key=#{current_user.token}&return_to=/apps/#{code_name}/edit_billing"
173
- Launchy.open(url)
174
- end
175
-
176
170
  def self.inside_git_repository?
177
171
  system("git status > /dev/null 2>&1")
178
172
  end
@@ -82,7 +82,7 @@ module Shelly
82
82
  @app = Shelly::App.new
83
83
  @app.code_name = options["code-name"] || ask_for_code_name
84
84
  @app.databases = options["databases"] || ask_for_databases
85
- @app.domains = options["domains"]
85
+ @app.domains = options["domains"] || ["#{@app.code_name}.shellyapp.com"]
86
86
  @app.create
87
87
 
88
88
  say "Adding remote production #{@app.git_url}", :green
@@ -90,9 +90,14 @@ module Shelly
90
90
 
91
91
  say "Creating Cloudfile", :green
92
92
  @app.create_cloudfile
93
-
94
- say "Provide billing details. Opening browser...", :green
95
- @app.open_billing_page
93
+ if @app.attributes["trial"]
94
+ say_new_line
95
+ say "Billing information", :green
96
+ say "Cloud created with 20 Euro credit."
97
+ say "Remember to provide billing details before trial ends."
98
+ url = "#{@app.shelly.shellyapp_url}/apps/#{@app.code_name}/edit_billing"
99
+ say url
100
+ end
96
101
 
97
102
  info_adding_cloudfile_to_repository
98
103
  info_deploying_to_shellycloud
@@ -101,7 +106,7 @@ module Shelly
101
106
  e.each_error { |error| say_error error, :with_exit => false }
102
107
  say_new_line
103
108
  say_error "Fix erros in the below command and type it again to create your cloud" , :with_exit => false
104
- say_error "shelly add --code-name=#{@app.code_name} --databases=#{@app.databases.join} --domains=#{@app.code_name}.shellyapp.com"
109
+ say_error "shelly add --code-name=#{@app.code_name} --databases=#{@app.databases.join(',')} --domains=#{@app.domains.join(',')}"
105
110
  end
106
111
 
107
112
  desc "list", "List available clouds"
@@ -1,3 +1,3 @@
1
1
  module Shelly
2
- VERSION = "0.0.48.pre2"
2
+ VERSION = "0.0.48.pre3"
3
3
  end
data/shelly.gemspec CHANGED
@@ -26,7 +26,6 @@ Gem::Specification.new do |s|
26
26
  s.add_runtime_dependency "wijet-thor", "~> 0.14.7"
27
27
  s.add_runtime_dependency "rest-client"
28
28
  s.add_runtime_dependency "json"
29
- s.add_runtime_dependency "wijet-launchy"
30
29
  s.add_runtime_dependency "progressbar"
31
30
 
32
31
  s.files = `git ls-files`.split("\n")
@@ -165,16 +165,6 @@ config
165
165
  end
166
166
  end
167
167
 
168
- describe "#open_billing_page" do
169
- it "should open browser window" do
170
- user = mock(:token => "abc", :email => nil, :password => nil, :config_dir => "~/.shelly")
171
- @app.stub(:current_user).and_return(user)
172
- url = "#{@app.shelly.shellyapp_url}/login?api_key=abc&return_to=/apps/foo-staging/edit_billing"
173
- Launchy.should_receive(:open).with(url)
174
- @app.open_billing_page
175
- end
176
- end
177
-
178
168
  describe "#start & #stop" do
179
169
  it "should start cloud" do
180
170
  @client.should_receive(:start_cloud).with("foo-staging")
@@ -280,7 +270,7 @@ config
280
270
  end
281
271
  end
282
272
  end
283
-
273
+
284
274
  describe "#redeploy" do
285
275
  it "should redeploy app via API" do
286
276
  @client.should_receive(:redeploy).with("foo-staging")
@@ -269,11 +269,11 @@ OUT
269
269
  @app.stub(:add_git_remote)
270
270
  @app.stub(:create)
271
271
  @app.stub(:generate_cloudfile).and_return("Example Cloudfile")
272
- @app.stub(:open_billing_page)
273
272
  @app.stub(:git_url).and_return("git@git.shellycloud.com:foooo.git")
274
273
  Shelly::App.stub(:inside_git_repository?).and_return(true)
275
274
  Shelly::App.stub(:new).and_return(@app)
276
275
  @client.stub(:token).and_return("abc")
276
+ @app.stub(:attributes).and_return({"trial" => false})
277
277
  end
278
278
 
279
279
  # This spec tests inside_git_repository? hook
@@ -311,7 +311,7 @@ OUT
311
311
 
312
312
  it "should exit if databases are not valid" do
313
313
  $stdout.should_receive(:puts).with("\e[31mTry 'shelly help add' for more information\e[0m")
314
- @main.options = {"code-name" => "foo", :databases => ["not existing"], :domains => "foo.example.com"}
314
+ @main.options = {"code-name" => "foo", "databases" => ["not existing"], "domains" => ["foo.example.com"]}
315
315
  lambda {
316
316
  invoke(@main, :add)
317
317
  }.should raise_error(SystemExit)
@@ -386,6 +386,28 @@ OUT
386
386
  end
387
387
  end
388
388
 
389
+ it "should create the app on shelly cloud and show trial information" do
390
+ @app.stub(:attributes).and_return({"trial" => true})
391
+ @client.stub(:shellyapp_url).and_return("http://example.com")
392
+ @app.should_receive(:create)
393
+ $stdout.should_receive(:puts).with(green "Billing information")
394
+ $stdout.should_receive(:puts).with("Cloud created with 20 Euro credit.")
395
+ $stdout.should_receive(:puts).with("Remember to provide billing details before trial ends.")
396
+
397
+ fake_stdin(["", ""]) do
398
+ invoke(@main, :add)
399
+ end
400
+ end
401
+
402
+ it "should create the app on shelly cloud and shouldn't show trial information" do
403
+ @app.should_receive(:create)
404
+ $stdout.should_not_receive(:puts).with(green "Billing information")
405
+
406
+ fake_stdin(["", ""]) do
407
+ invoke(@main, :add)
408
+ end
409
+ end
410
+
389
411
  it "should display validation errors if they are any" do
390
412
  body = {"message" => "Validation Failed", "errors" => [["code_name", "has been already taken"]]}
391
413
  exception = Shelly::Client::ValidationException.new(body)
@@ -400,6 +422,19 @@ OUT
400
422
  }.should raise_error(SystemExit)
401
423
  end
402
424
 
425
+ it "should display correct domains in error message" do
426
+ body = {"message" => "Validation Failed", "errors" => [["code_name", "has been already taken"]]}
427
+ exception = Shelly::Client::ValidationException.new(body)
428
+ @app.should_receive(:create).and_raise(exception)
429
+ @main.options = {"code-name" => "foo-staging", "databases" => ["postgresql"], "domains" => ["test.example.com","test2.example.com"]}
430
+ $stdout.should_receive(:puts).with("\e[31mshelly add --code-name=foo-staging --databases=postgresql --domains=test.example.com,test2.example.com\e[0m")
431
+ lambda {
432
+ fake_stdin(["", ""]) do
433
+ invoke(@main, :add)
434
+ end
435
+ }.should raise_error(SystemExit)
436
+ end
437
+
403
438
  it "should add git remote" do
404
439
  $stdout.should_receive(:puts).with("\e[32mAdding remote production git@git.shellycloud.com:foooo.git\e[0m")
405
440
  @app.should_receive(:add_git_remote)
@@ -416,14 +451,6 @@ OUT
416
451
  File.read("/projects/foo/Cloudfile").should == "Example Cloudfile"
417
452
  end
418
453
 
419
- it "should browser window with link to edit billing information" do
420
- $stdout.should_receive(:puts).with("\e[32mProvide billing details. Opening browser...\e[0m")
421
- @app.should_receive(:open_billing_page)
422
- fake_stdin(["foooo", ""]) do
423
- invoke(@main, :add)
424
- end
425
- end
426
-
427
454
  it "should display info about adding Cloudfile to repository" do
428
455
  $stdout.should_receive(:puts).with("\e[32mProject is now configured for use with Shell Cloud:\e[0m")
429
456
  $stdout.should_receive(:puts).with("\e[32mYou can review changes using\e[0m")
metadata CHANGED
@@ -1,178 +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.48.pre2
3
+ version: !ruby/object:Gem::Version
4
+ hash: 1923832111
5
5
  prerelease: 7
6
+ segments:
7
+ - 0
8
+ - 0
9
+ - 48
10
+ - pre
11
+ - 3
12
+ version: 0.0.48.pre3
6
13
  platform: ruby
7
- authors:
14
+ authors:
8
15
  - Shelly Cloud team
9
16
  autorequire:
10
17
  bindir: bin
11
18
  cert_chain: []
12
- date: 2012-02-13 00:00:00.000000000Z
13
- dependencies:
14
- - !ruby/object:Gem::Dependency
15
- name: rspec
16
- requirement: &70309508220820 !ruby/object:Gem::Requirement
19
+
20
+ date: 2012-02-14 00:00:00 Z
21
+ dependencies:
22
+ - !ruby/object:Gem::Dependency
23
+ version_requirements: &id001 !ruby/object:Gem::Requirement
17
24
  none: false
18
- requirements:
19
- - - ! '>='
20
- - !ruby/object:Gem::Version
21
- version: '0'
25
+ requirements:
26
+ - - ">="
27
+ - !ruby/object:Gem::Version
28
+ hash: 3
29
+ segments:
30
+ - 0
31
+ version: "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: *70309508220820
25
- - !ruby/object:Gem::Dependency
48
+ type: :development
26
49
  name: rake
27
- requirement: &70309508219840 !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: *70309508219840
36
- - !ruby/object:Gem::Dependency
62
+ type: :development
37
63
  name: guard
38
- requirement: &70309508218960 !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: *70309508218960
47
- - !ruby/object:Gem::Dependency
76
+ type: :development
48
77
  name: guard-rspec
49
- requirement: &70309508218100 !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: *70309508218100
58
- - !ruby/object:Gem::Dependency
59
- name: simplecov
60
- requirement: &70309508217260 !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: *70309508217260
69
- - !ruby/object:Gem::Dependency
70
- name: ruby_gntp
71
- requirement: &70309508216240 !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: *70309508216240
80
- - !ruby/object:Gem::Dependency
81
- name: rb-fsevent
82
- requirement: &70309508214920 !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: *70309508214920
91
- - !ruby/object:Gem::Dependency
92
105
  name: fakefs
93
- requirement: &70309508213740 !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: *70309508213740
102
- - !ruby/object:Gem::Dependency
103
- name: fakeweb
104
- requirement: &70309508212980 !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: *70309508212980
113
- - !ruby/object:Gem::Dependency
114
- name: wijet-thor
115
- requirement: &70309508211840 !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: *70309508211840
124
- - !ruby/object:Gem::Dependency
148
+ type: :runtime
125
149
  name: rest-client
126
- requirement: &70309508193840 !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: *70309508193840
135
- - !ruby/object:Gem::Dependency
162
+ type: :runtime
136
163
  name: json
137
- requirement: &70309508192980 !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: *70309508192980
146
- - !ruby/object:Gem::Dependency
147
- name: wijet-launchy
148
- requirement: &70309508192020 !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: *70309508192020
157
- - !ruby/object:Gem::Dependency
158
177
  name: progressbar
159
- requirement: &70309508190980 !ruby/object:Gem::Requirement
160
- none: false
161
- requirements:
162
- - - ! '>='
163
- - !ruby/object:Gem::Version
164
- version: '0'
165
- type: :runtime
166
- prerelease: false
167
- version_requirements: *70309508190980
168
178
  description: Tool for managing applications and clouds at shellycloud.com
169
- email:
179
+ email:
170
180
  - support@shellycloud.com
171
- executables:
181
+ executables:
172
182
  - shelly
173
183
  extensions: []
184
+
174
185
  extra_rdoc_files: []
175
- files:
186
+
187
+ files:
176
188
  - .gitignore
177
189
  - .travis.yml
178
190
  - Gemfile
@@ -224,43 +236,38 @@ files:
224
236
  - spec/thor/options_spec.rb
225
237
  homepage: http://shellycloud.com
226
238
  licenses: []
239
+
227
240
  post_install_message:
228
241
  rdoc_options: []
229
- require_paths:
242
+
243
+ require_paths:
230
244
  - lib
231
- required_ruby_version: !ruby/object:Gem::Requirement
245
+ required_ruby_version: !ruby/object:Gem::Requirement
232
246
  none: false
233
- requirements:
234
- - - ! '>='
235
- - !ruby/object:Gem::Version
236
- version: '0'
237
- 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
238
255
  none: false
239
- requirements:
240
- - - ! '>'
241
- - !ruby/object:Gem::Version
256
+ requirements:
257
+ - - ">"
258
+ - !ruby/object:Gem::Version
259
+ hash: 25
260
+ segments:
261
+ - 1
262
+ - 3
263
+ - 1
242
264
  version: 1.3.1
243
265
  requirements: []
266
+
244
267
  rubyforge_project: shelly
245
268
  rubygems_version: 1.8.10
246
269
  signing_key:
247
270
  specification_version: 3
248
271
  summary: Shelly Cloud command line tool
249
- test_files:
250
- - spec/helpers.rb
251
- - spec/input_faker.rb
252
- - spec/shelly/app_spec.rb
253
- - spec/shelly/backup_spec.rb
254
- - spec/shelly/cli/backup_spec.rb
255
- - spec/shelly/cli/config_spec.rb
256
- - spec/shelly/cli/deploys_spec.rb
257
- - spec/shelly/cli/main_spec.rb
258
- - spec/shelly/cli/runner_spec.rb
259
- - spec/shelly/cli/user_spec.rb
260
- - spec/shelly/client_spec.rb
261
- - spec/shelly/cloudfile_spec.rb
262
- - spec/shelly/download_progress_bar_spec.rb
263
- - spec/shelly/model_spec.rb
264
- - spec/shelly/user_spec.rb
265
- - spec/spec_helper.rb
266
- - spec/thor/options_spec.rb
272
+ test_files: []
273
+