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 +0 -6
- data/lib/shelly/cli/main.rb +10 -5
- data/lib/shelly/version.rb +1 -1
- data/shelly.gemspec +0 -1
- data/spec/shelly/app_spec.rb +1 -11
- data/spec/shelly/cli/main_spec.rb +37 -10
- metadata +165 -158
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
|
data/lib/shelly/cli/main.rb
CHANGED
@@ -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
|
-
|
95
|
-
|
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.
|
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"
|
data/lib/shelly/version.rb
CHANGED
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")
|
data/spec/shelly/app_spec.rb
CHANGED
@@ -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",
|
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
|
-
|
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
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
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
|
-
|
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
|
-
|
25
|
-
- !ruby/object:Gem::Dependency
|
48
|
+
type: :development
|
26
49
|
name: rake
|
27
|
-
|
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
|
-
|
33
|
-
|
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
|
-
|
36
|
-
- !ruby/object:Gem::Dependency
|
62
|
+
type: :development
|
37
63
|
name: guard
|
38
|
-
|
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
|
-
|
44
|
-
|
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
|
-
|
47
|
-
- !ruby/object:Gem::Dependency
|
76
|
+
type: :development
|
48
77
|
name: guard-rspec
|
49
|
-
|
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
|
-
|
55
|
-
|
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
|
-
|
68
|
-
|
69
|
-
|
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
|
-
|
77
|
-
|
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
|
-
|
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
|
-
|
99
|
-
|
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
|
-
|
112
|
-
|
113
|
-
|
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
|
-
|
124
|
-
- !ruby/object:Gem::Dependency
|
148
|
+
type: :runtime
|
125
149
|
name: rest-client
|
126
|
-
|
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
|
-
|
132
|
-
|
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
|
-
|
135
|
-
- !ruby/object:Gem::Dependency
|
162
|
+
type: :runtime
|
136
163
|
name: json
|
137
|
-
|
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
|
-
|
143
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
237
|
-
|
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
|
-
|
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
|
+
|