shelly 0.0.48.pre2 → 0.0.48.pre3

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