shelly 0.0.28 → 0.0.29
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 +31 -2
- data/lib/shelly/cli/command.rb +1 -0
- data/lib/shelly/cli/deploys.rb +34 -0
- data/lib/shelly/cli/main.rb +103 -17
- data/lib/shelly/cli/user.rb +19 -12
- data/lib/shelly/client.rb +25 -9
- data/lib/shelly/cloudfile.rb +0 -18
- data/lib/shelly/helpers.rb +43 -11
- data/lib/shelly/version.rb +1 -1
- data/lib/thor/basic.rb +9 -0
- data/lib/thor/options.rb +0 -1
- data/spec/helpers.rb +8 -0
- data/spec/shelly/app_spec.rb +29 -3
- data/spec/shelly/cli/deploys_spec.rb +73 -0
- data/spec/shelly/cli/main_spec.rb +298 -19
- data/spec/shelly/cli/user_spec.rb +17 -17
- data/spec/shelly/client_spec.rb +52 -6
- data/spec/shelly/cloudfile_spec.rb +0 -13
- metadata +151 -132
@@ -27,6 +27,8 @@ describe Shelly::CLI::User do
|
|
27
27
|
Dir.chdir("/projects/foo")
|
28
28
|
File.open("Cloudfile", 'w') {|f| f.write("foo-staging:\nfoo-production:\n") }
|
29
29
|
Shelly::App.stub(:inside_git_repository?).and_return(true)
|
30
|
+
@cloudfile = Shelly::Cloudfile.new
|
31
|
+
Shelly::Cloudfile.stub(:new).and_return(@cloudfile)
|
30
32
|
end
|
31
33
|
|
32
34
|
it "should exit with message if command run outside git repository" do
|
@@ -47,33 +49,30 @@ describe Shelly::CLI::User do
|
|
47
49
|
|
48
50
|
context "on success" do
|
49
51
|
it "should receive clouds from the Cloudfile" do
|
50
|
-
@client.
|
51
|
-
@
|
52
|
+
@client.stub(:app_users).and_return(response)
|
53
|
+
@cloudfile.should_receive(:clouds).and_return(["foo-staging", "foo-production"])
|
52
54
|
@cli_user.list
|
53
55
|
end
|
54
56
|
|
55
57
|
it "should display clouds and users" do
|
56
|
-
@client.
|
57
|
-
@client.stub(:apps_users).and_return(response)
|
58
|
+
@client.stub(:app_users).and_return(response)
|
58
59
|
$stdout.should_receive(:puts).with("Cloud foo-production:")
|
59
60
|
$stdout.should_receive(:puts).with(" user@example.com")
|
60
|
-
$stdout.should_receive(:puts).with("Cloud foo-staging:")
|
61
|
-
$stdout.should_receive(:puts).with(" user2@example.com")
|
62
61
|
@cli_user.list
|
63
62
|
end
|
64
63
|
end
|
65
64
|
|
66
65
|
def response
|
67
|
-
[{'
|
68
|
-
{'code_name' => 'foo-staging', 'users' => [{'name' => 'username2','email' => 'user2@example.com'}]}]
|
66
|
+
[{'email' => 'user@example.com'}]
|
69
67
|
end
|
70
68
|
|
71
69
|
context "on failure" do
|
72
70
|
it "should raise an error if user does not have access to cloud" do
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
71
|
+
response = {"message" => "Cloud foo-staging not found"}
|
72
|
+
exception = Shelly::Client::APIError.new(response.to_json)
|
73
|
+
@client.stub(:app_users).and_raise(exception)
|
74
|
+
$stdout.should_receive(:puts).with(red "You have no access to 'foo-staging' cloud defined in Cloudfile")
|
75
|
+
@cli_user.list
|
77
76
|
end
|
78
77
|
end
|
79
78
|
end
|
@@ -94,7 +93,7 @@ describe Shelly::CLI::User do
|
|
94
93
|
File.delete("Cloudfile")
|
95
94
|
$stdout.should_receive(:puts).with("\e[31mNo Cloudfile found\e[0m")
|
96
95
|
lambda {
|
97
|
-
@cli_user.
|
96
|
+
@cli_user.add
|
98
97
|
}.should raise_error(SystemExit)
|
99
98
|
end
|
100
99
|
|
@@ -110,7 +109,6 @@ describe Shelly::CLI::User do
|
|
110
109
|
before do
|
111
110
|
@client.should_receive(:send_invitation).with("foo-production", "megan@example.com")
|
112
111
|
@client.should_receive(:send_invitation).with("foo-staging", "megan@example.com")
|
113
|
-
@client.should_receive(:apps).and_return([{"code_name" => "foo-production"}, {"code_name" => "foo-staging"}])
|
114
112
|
end
|
115
113
|
|
116
114
|
it "should ask about email" do
|
@@ -131,9 +129,11 @@ describe Shelly::CLI::User do
|
|
131
129
|
|
132
130
|
context "on failure" do
|
133
131
|
it "should raise error if user doesnt have access to cloud" do
|
134
|
-
|
135
|
-
|
136
|
-
|
132
|
+
response = {"message" => "Cloud foo-staging not found"}
|
133
|
+
exception = Shelly::Client::APIError.new(response.to_json)
|
134
|
+
@client.stub(:send_invitation).and_raise(exception)
|
135
|
+
$stdout.should_receive(:puts).with(red "You have no access to 'foo-staging' cloud defined in Cloudfile")
|
136
|
+
@cli_user.add("megan@example.com")
|
137
137
|
end
|
138
138
|
end
|
139
139
|
end
|
data/spec/shelly/client_spec.rb
CHANGED
@@ -100,6 +100,17 @@ describe Shelly::Client do
|
|
100
100
|
end
|
101
101
|
end
|
102
102
|
|
103
|
+
describe "#cloud_logs" do
|
104
|
+
it "should send get request" do
|
105
|
+
time = Time.now
|
106
|
+
FakeWeb.register_uri(:get, @url + "/apps/staging-foo/deploys", :body => [{:failed => false, :created_at => time},
|
107
|
+
{:failed => true, :created_at => time+1}].to_json)
|
108
|
+
response = @client.cloud_logs("staging-foo")
|
109
|
+
response.should == [{"failed"=>false, "created_at"=>time.to_s},
|
110
|
+
{"failed"=>true, "created_at"=>(time+1).to_s}]
|
111
|
+
end
|
112
|
+
end
|
113
|
+
|
103
114
|
describe "#create_app" do
|
104
115
|
it "should send post with app's attributes" do
|
105
116
|
@client.should_receive(:post).with("/apps", :app => {:code_name => "foo", :ruby_version => "1.9.2"})
|
@@ -108,11 +119,19 @@ describe Shelly::Client do
|
|
108
119
|
end
|
109
120
|
|
110
121
|
describe "#app_users" do
|
111
|
-
it "should send
|
112
|
-
FakeWeb.register_uri(:get, @url + "/apps/staging-foo/users", :body => {:
|
113
|
-
|
114
|
-
response = @client.
|
115
|
-
response.should == [{"
|
122
|
+
it "should send get request with app code_names" do
|
123
|
+
FakeWeb.register_uri(:get, @url + "/apps/staging-foo/users", :body => [{:email => "test@example.com"},
|
124
|
+
{:email => "test2@example.com"}].to_json)
|
125
|
+
response = @client.app_users("staging-foo")
|
126
|
+
response.should == [{"email" => "test@example.com"}, {"email" => "test2@example.com"}]
|
127
|
+
end
|
128
|
+
end
|
129
|
+
|
130
|
+
describe "#app_ips" do
|
131
|
+
it "should send get request with app code_name" do
|
132
|
+
FakeWeb.register_uri(:get, @url + "/apps/staging-foo/ips", :body => {:mail_server_ip => "10.0.1.1", :web_server_ip => "88.198.21.187"}.to_json)
|
133
|
+
response = @client.app_ips("staging-foo")
|
134
|
+
response.should == {"mail_server_ip" => "10.0.1.1", "web_server_ip" => "88.198.21.187"}
|
116
135
|
end
|
117
136
|
end
|
118
137
|
|
@@ -139,6 +158,22 @@ describe Shelly::Client do
|
|
139
158
|
end
|
140
159
|
end
|
141
160
|
|
161
|
+
describe "#start_cloud" do
|
162
|
+
it "should sent post request with cloud's code_name" do
|
163
|
+
FakeWeb.register_uri(:put, @url + "/apps/staging-foo/start", :body => {}.to_json)
|
164
|
+
response = @client.start_cloud("staging-foo")
|
165
|
+
response.should == {}
|
166
|
+
end
|
167
|
+
end
|
168
|
+
|
169
|
+
describe "#stop_cloud" do
|
170
|
+
it "should sent delete request with cloud's code_name" do
|
171
|
+
FakeWeb.register_uri(:put, @url + "/apps/staging-foo/stop", :body => {}.to_json)
|
172
|
+
response = @client.stop_cloud("staging-foo")
|
173
|
+
response.should == {}
|
174
|
+
end
|
175
|
+
end
|
176
|
+
|
142
177
|
describe "#ssh_key_available?" do
|
143
178
|
it "should send get request with ssh key" do
|
144
179
|
@client.should_receive(:get).with("/users/new", {:ssh_key => "ssh-key Abb"})
|
@@ -246,5 +281,16 @@ describe Shelly::Client do
|
|
246
281
|
@client.put("/account", :name => "new-one")
|
247
282
|
end
|
248
283
|
end
|
249
|
-
end
|
250
284
|
|
285
|
+
describe "#delete" do
|
286
|
+
it "should make DELETE request to given path with parameters" do
|
287
|
+
@client.should_receive(:request).with("/account", :delete, :name => "new-one")
|
288
|
+
@client.delete("/account", :name => "new-one")
|
289
|
+
end
|
290
|
+
|
291
|
+
it "should make DELETE request to apps with parameters" do
|
292
|
+
@client.should_receive(:request).with("/apps/new-one", :delete, {})
|
293
|
+
@client.delete("/apps/new-one")
|
294
|
+
end
|
295
|
+
end
|
296
|
+
end
|
@@ -22,17 +22,4 @@ describe Shelly::Cloudfile do
|
|
22
22
|
end
|
23
23
|
end
|
24
24
|
|
25
|
-
describe "#fetch_users" do
|
26
|
-
it "should return array to display with clouds and users" do
|
27
|
-
@cloudfile.write(@hash)
|
28
|
-
@client.should_receive(:apps_users).and_return(response)
|
29
|
-
response = @cloudfile.fetch_users
|
30
|
-
response.should == {"foo-staging" => ["user@example.com"]}
|
31
|
-
end
|
32
|
-
|
33
|
-
def response
|
34
|
-
[{'code_name' => 'foo-staging','users' => [{'email' => 'user@example.com'}]}]
|
35
|
-
end
|
36
|
-
end
|
37
|
-
|
38
25
|
end
|
metadata
CHANGED
@@ -1,156 +1,174 @@
|
|
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: 37
|
5
5
|
prerelease:
|
6
|
+
segments:
|
7
|
+
- 0
|
8
|
+
- 0
|
9
|
+
- 29
|
10
|
+
version: 0.0.29
|
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
|
-
|
13
|
-
|
14
|
-
|
17
|
+
|
18
|
+
date: 2011-12-13 00:00:00 Z
|
19
|
+
dependencies:
|
20
|
+
- !ruby/object:Gem::Dependency
|
15
21
|
name: rspec
|
16
|
-
requirement: &2153283640 !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
|
-
requirements:
|
19
|
-
- - ! '>='
|
20
|
-
- !ruby/object:Gem::Version
|
21
|
-
version: '0'
|
22
|
-
type: :development
|
23
22
|
prerelease: false
|
24
|
-
|
25
|
-
- !ruby/object:Gem::Dependency
|
26
|
-
name: rake
|
27
|
-
requirement: &2153283180 !ruby/object:Gem::Requirement
|
23
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
28
24
|
none: false
|
29
|
-
requirements:
|
30
|
-
- -
|
31
|
-
- !ruby/object:Gem::Version
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
- !ruby/object:Gem::Dependency
|
37
|
-
name: guard
|
38
|
-
requirement: &2153282720 !ruby/object:Gem::Requirement
|
39
|
-
none: false
|
40
|
-
requirements:
|
41
|
-
- - ! '>='
|
42
|
-
- !ruby/object:Gem::Version
|
43
|
-
version: '0'
|
25
|
+
requirements:
|
26
|
+
- - ">="
|
27
|
+
- !ruby/object:Gem::Version
|
28
|
+
hash: 3
|
29
|
+
segments:
|
30
|
+
- 0
|
31
|
+
version: "0"
|
44
32
|
type: :development
|
33
|
+
version_requirements: *id001
|
34
|
+
- !ruby/object:Gem::Dependency
|
35
|
+
name: rake
|
45
36
|
prerelease: false
|
46
|
-
|
47
|
-
- !ruby/object:Gem::Dependency
|
48
|
-
name: guard-rspec
|
49
|
-
requirement: &2153282300 !ruby/object:Gem::Requirement
|
37
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
50
38
|
none: false
|
51
|
-
requirements:
|
52
|
-
- -
|
53
|
-
- !ruby/object:Gem::Version
|
54
|
-
|
39
|
+
requirements:
|
40
|
+
- - ">="
|
41
|
+
- !ruby/object:Gem::Version
|
42
|
+
hash: 3
|
43
|
+
segments:
|
44
|
+
- 0
|
45
|
+
version: "0"
|
55
46
|
type: :development
|
47
|
+
version_requirements: *id002
|
48
|
+
- !ruby/object:Gem::Dependency
|
49
|
+
name: guard
|
56
50
|
prerelease: false
|
57
|
-
|
58
|
-
- !ruby/object:Gem::Dependency
|
59
|
-
name: growl_notify
|
60
|
-
requirement: &2153281780 !ruby/object:Gem::Requirement
|
51
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
61
52
|
none: false
|
62
|
-
requirements:
|
63
|
-
- -
|
64
|
-
- !ruby/object:Gem::Version
|
65
|
-
|
53
|
+
requirements:
|
54
|
+
- - ">="
|
55
|
+
- !ruby/object:Gem::Version
|
56
|
+
hash: 3
|
57
|
+
segments:
|
58
|
+
- 0
|
59
|
+
version: "0"
|
66
60
|
type: :development
|
61
|
+
version_requirements: *id003
|
62
|
+
- !ruby/object:Gem::Dependency
|
63
|
+
name: guard-rspec
|
67
64
|
prerelease: false
|
68
|
-
|
69
|
-
- !ruby/object:Gem::Dependency
|
70
|
-
name: rb-fsevent
|
71
|
-
requirement: &2153281320 !ruby/object:Gem::Requirement
|
65
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
72
66
|
none: false
|
73
|
-
requirements:
|
74
|
-
- -
|
75
|
-
- !ruby/object:Gem::Version
|
76
|
-
|
67
|
+
requirements:
|
68
|
+
- - ">="
|
69
|
+
- !ruby/object:Gem::Version
|
70
|
+
hash: 3
|
71
|
+
segments:
|
72
|
+
- 0
|
73
|
+
version: "0"
|
77
74
|
type: :development
|
78
|
-
|
79
|
-
|
80
|
-
- !ruby/object:Gem::Dependency
|
75
|
+
version_requirements: *id004
|
76
|
+
- !ruby/object:Gem::Dependency
|
81
77
|
name: fakefs
|
82
|
-
|
78
|
+
prerelease: false
|
79
|
+
requirement: &id005 !ruby/object:Gem::Requirement
|
83
80
|
none: false
|
84
|
-
requirements:
|
85
|
-
- -
|
86
|
-
- !ruby/object:Gem::Version
|
87
|
-
|
81
|
+
requirements:
|
82
|
+
- - ">="
|
83
|
+
- !ruby/object:Gem::Version
|
84
|
+
hash: 3
|
85
|
+
segments:
|
86
|
+
- 0
|
87
|
+
version: "0"
|
88
88
|
type: :development
|
89
|
-
|
90
|
-
|
91
|
-
- !ruby/object:Gem::Dependency
|
89
|
+
version_requirements: *id005
|
90
|
+
- !ruby/object:Gem::Dependency
|
92
91
|
name: fakeweb
|
93
|
-
|
92
|
+
prerelease: false
|
93
|
+
requirement: &id006 !ruby/object:Gem::Requirement
|
94
94
|
none: false
|
95
|
-
requirements:
|
96
|
-
- -
|
97
|
-
- !ruby/object:Gem::Version
|
98
|
-
|
95
|
+
requirements:
|
96
|
+
- - ">="
|
97
|
+
- !ruby/object:Gem::Version
|
98
|
+
hash: 3
|
99
|
+
segments:
|
100
|
+
- 0
|
101
|
+
version: "0"
|
99
102
|
type: :development
|
100
|
-
|
101
|
-
|
102
|
-
- !ruby/object:Gem::Dependency
|
103
|
+
version_requirements: *id006
|
104
|
+
- !ruby/object:Gem::Dependency
|
103
105
|
name: wijet-thor
|
104
|
-
|
106
|
+
prerelease: false
|
107
|
+
requirement: &id007 !ruby/object:Gem::Requirement
|
105
108
|
none: false
|
106
|
-
requirements:
|
109
|
+
requirements:
|
107
110
|
- - ~>
|
108
|
-
- !ruby/object:Gem::Version
|
111
|
+
- !ruby/object:Gem::Version
|
112
|
+
hash: 41
|
113
|
+
segments:
|
114
|
+
- 0
|
115
|
+
- 14
|
116
|
+
- 7
|
109
117
|
version: 0.14.7
|
110
118
|
type: :runtime
|
111
|
-
|
112
|
-
|
113
|
-
- !ruby/object:Gem::Dependency
|
119
|
+
version_requirements: *id007
|
120
|
+
- !ruby/object:Gem::Dependency
|
114
121
|
name: rest-client
|
115
|
-
|
122
|
+
prerelease: false
|
123
|
+
requirement: &id008 !ruby/object:Gem::Requirement
|
116
124
|
none: false
|
117
|
-
requirements:
|
118
|
-
- -
|
119
|
-
- !ruby/object:Gem::Version
|
120
|
-
|
125
|
+
requirements:
|
126
|
+
- - ">="
|
127
|
+
- !ruby/object:Gem::Version
|
128
|
+
hash: 3
|
129
|
+
segments:
|
130
|
+
- 0
|
131
|
+
version: "0"
|
121
132
|
type: :runtime
|
122
|
-
|
123
|
-
|
124
|
-
- !ruby/object:Gem::Dependency
|
133
|
+
version_requirements: *id008
|
134
|
+
- !ruby/object:Gem::Dependency
|
125
135
|
name: json
|
126
|
-
|
136
|
+
prerelease: false
|
137
|
+
requirement: &id009 !ruby/object:Gem::Requirement
|
127
138
|
none: false
|
128
|
-
requirements:
|
129
|
-
- -
|
130
|
-
- !ruby/object:Gem::Version
|
131
|
-
|
139
|
+
requirements:
|
140
|
+
- - ">="
|
141
|
+
- !ruby/object:Gem::Version
|
142
|
+
hash: 3
|
143
|
+
segments:
|
144
|
+
- 0
|
145
|
+
version: "0"
|
132
146
|
type: :runtime
|
133
|
-
|
134
|
-
|
135
|
-
- !ruby/object:Gem::Dependency
|
147
|
+
version_requirements: *id009
|
148
|
+
- !ruby/object:Gem::Dependency
|
136
149
|
name: wijet-launchy
|
137
|
-
|
150
|
+
prerelease: false
|
151
|
+
requirement: &id010 !ruby/object:Gem::Requirement
|
138
152
|
none: false
|
139
|
-
requirements:
|
140
|
-
- -
|
141
|
-
- !ruby/object:Gem::Version
|
142
|
-
|
153
|
+
requirements:
|
154
|
+
- - ">="
|
155
|
+
- !ruby/object:Gem::Version
|
156
|
+
hash: 3
|
157
|
+
segments:
|
158
|
+
- 0
|
159
|
+
version: "0"
|
143
160
|
type: :runtime
|
144
|
-
|
145
|
-
version_requirements: *2153277320
|
161
|
+
version_requirements: *id010
|
146
162
|
description: Tool for managing applications and clouds at shellycloud.com
|
147
|
-
email:
|
163
|
+
email:
|
148
164
|
- support@shellycloud.com
|
149
|
-
executables:
|
165
|
+
executables:
|
150
166
|
- shelly
|
151
167
|
extensions: []
|
168
|
+
|
152
169
|
extra_rdoc_files: []
|
153
|
-
|
170
|
+
|
171
|
+
files:
|
154
172
|
- .gitignore
|
155
173
|
- .travis.yml
|
156
174
|
- Gemfile
|
@@ -163,6 +181,7 @@ files:
|
|
163
181
|
- lib/shelly.rb
|
164
182
|
- lib/shelly/app.rb
|
165
183
|
- lib/shelly/cli/command.rb
|
184
|
+
- lib/shelly/cli/deploys.rb
|
166
185
|
- lib/shelly/cli/main.rb
|
167
186
|
- lib/shelly/cli/runner.rb
|
168
187
|
- lib/shelly/cli/user.rb
|
@@ -174,11 +193,13 @@ files:
|
|
174
193
|
- lib/shelly/user.rb
|
175
194
|
- lib/shelly/version.rb
|
176
195
|
- lib/thor/arguments.rb
|
196
|
+
- lib/thor/basic.rb
|
177
197
|
- lib/thor/options.rb
|
178
198
|
- shelly.gemspec
|
179
199
|
- spec/helpers.rb
|
180
200
|
- spec/input_faker.rb
|
181
201
|
- spec/shelly/app_spec.rb
|
202
|
+
- spec/shelly/cli/deploys_spec.rb
|
182
203
|
- spec/shelly/cli/main_spec.rb
|
183
204
|
- spec/shelly/cli/runner_spec.rb
|
184
205
|
- spec/shelly/cli/user_spec.rb
|
@@ -190,38 +211,36 @@ files:
|
|
190
211
|
- spec/thor/options_spec.rb
|
191
212
|
homepage: http://shellycloud.com
|
192
213
|
licenses: []
|
214
|
+
|
193
215
|
post_install_message:
|
194
216
|
rdoc_options: []
|
195
|
-
|
217
|
+
|
218
|
+
require_paths:
|
196
219
|
- lib
|
197
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
220
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
198
221
|
none: false
|
199
|
-
requirements:
|
200
|
-
- -
|
201
|
-
- !ruby/object:Gem::Version
|
202
|
-
|
203
|
-
|
222
|
+
requirements:
|
223
|
+
- - ">="
|
224
|
+
- !ruby/object:Gem::Version
|
225
|
+
hash: 3
|
226
|
+
segments:
|
227
|
+
- 0
|
228
|
+
version: "0"
|
229
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
204
230
|
none: false
|
205
|
-
requirements:
|
206
|
-
- -
|
207
|
-
- !ruby/object:Gem::Version
|
208
|
-
|
231
|
+
requirements:
|
232
|
+
- - ">="
|
233
|
+
- !ruby/object:Gem::Version
|
234
|
+
hash: 3
|
235
|
+
segments:
|
236
|
+
- 0
|
237
|
+
version: "0"
|
209
238
|
requirements: []
|
239
|
+
|
210
240
|
rubyforge_project: shelly
|
211
241
|
rubygems_version: 1.8.10
|
212
242
|
signing_key:
|
213
243
|
specification_version: 3
|
214
244
|
summary: Shelly Cloud command line tool
|
215
|
-
test_files:
|
216
|
-
|
217
|
-
- spec/input_faker.rb
|
218
|
-
- spec/shelly/app_spec.rb
|
219
|
-
- spec/shelly/cli/main_spec.rb
|
220
|
-
- spec/shelly/cli/runner_spec.rb
|
221
|
-
- spec/shelly/cli/user_spec.rb
|
222
|
-
- spec/shelly/client_spec.rb
|
223
|
-
- spec/shelly/cloudfile_spec.rb
|
224
|
-
- spec/shelly/model_spec.rb
|
225
|
-
- spec/shelly/user_spec.rb
|
226
|
-
- spec/spec_helper.rb
|
227
|
-
- spec/thor/options_spec.rb
|
245
|
+
test_files: []
|
246
|
+
|