shelly 0.0.43 → 0.0.44.pre
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/.gitignore +1 -0
- data/lib/shelly/app.rb +4 -0
- data/lib/shelly/cli/backup.rb +42 -43
- data/lib/shelly/cli/config.rb +34 -47
- data/lib/shelly/cli/deploys.rb +14 -22
- data/lib/shelly/cli/main.rb +95 -88
- data/lib/shelly/cli/runner.rb +6 -2
- data/lib/shelly/cli/user.rb +10 -16
- data/lib/shelly/client.rb +36 -32
- data/lib/shelly/download_progress_bar.rb +1 -1
- data/lib/shelly/helpers.rb +5 -10
- data/lib/shelly/user.rb +10 -2
- data/lib/shelly/version.rb +1 -1
- data/lib/thor/thor.rb +4 -0
- data/shelly.gemspec +2 -1
- data/spec/helpers.rb +7 -0
- data/spec/shelly/app_spec.rb +11 -5
- data/spec/shelly/cli/backup_spec.rb +36 -31
- data/spec/shelly/cli/config_spec.rb +70 -35
- data/spec/shelly/cli/deploys_spec.rb +19 -19
- data/spec/shelly/cli/main_spec.rb +213 -105
- data/spec/shelly/cli/runner_spec.rb +29 -1
- data/spec/shelly/cli/user_spec.rb +20 -53
- data/spec/shelly/client_spec.rb +90 -81
- data/spec/shelly/download_progress_bar_spec.rb +4 -4
- data/spec/shelly/user_spec.rb +23 -0
- data/spec/spec_helper.rb +5 -1
- metadata +43 -32
@@ -12,6 +12,9 @@ describe Shelly::CLI::User do
|
|
12
12
|
$stdout.stub(:puts)
|
13
13
|
$stdout.stub(:print)
|
14
14
|
@client.stub(:token).and_return("abc")
|
15
|
+
FileUtils.mkdir_p("/projects/foo")
|
16
|
+
Dir.chdir("/projects/foo")
|
17
|
+
File.open("Cloudfile", 'w') {|f| f.write("foo-staging:\nfoo-production:\n") }
|
15
18
|
end
|
16
19
|
|
17
20
|
describe "#help" do
|
@@ -25,39 +28,16 @@ describe Shelly::CLI::User do
|
|
25
28
|
|
26
29
|
describe "#list" do
|
27
30
|
before do
|
28
|
-
FileUtils.mkdir_p("/projects/foo")
|
29
|
-
Dir.chdir("/projects/foo")
|
30
|
-
File.open("Cloudfile", 'w') {|f| f.write("foo-staging:\nfoo-production:\n") }
|
31
|
-
Shelly::App.stub(:inside_git_repository?).and_return(true)
|
32
31
|
@cloudfile = Shelly::Cloudfile.new
|
33
32
|
Shelly::Cloudfile.stub(:new).and_return(@cloudfile)
|
34
33
|
end
|
35
34
|
|
36
|
-
it "should
|
37
|
-
|
38
|
-
$stdout.should_receive(:puts).with("\e[31mMust be run inside your project git repository\e[0m")
|
39
|
-
lambda {
|
40
|
-
invoke(@cli_user, :list)
|
41
|
-
}.should raise_error(SystemExit)
|
35
|
+
it "should ensure user has logged in" do
|
36
|
+
hooks(@cli_user, :list).should include(:logged_in?)
|
42
37
|
end
|
43
38
|
|
44
|
-
it "should
|
45
|
-
|
46
|
-
$stdout.should_receive(:puts).with("\e[31mNo Cloudfile found\e[0m")
|
47
|
-
lambda {
|
48
|
-
invoke(@cli_user, :list)
|
49
|
-
}.should raise_error(SystemExit)
|
50
|
-
end
|
51
|
-
|
52
|
-
it "should exit if user is not logged in" do
|
53
|
-
response = {"message" => "Unauthorized", "url" => "https://admin.winniecloud.com/users/password/new"}
|
54
|
-
exception = Shelly::Client::APIError.new(401, response)
|
55
|
-
@client.stub(:token).and_raise(exception)
|
56
|
-
$stdout.should_receive(:puts).with(red "You are not logged in. To log in use:")
|
57
|
-
$stdout.should_receive(:puts).with(" shelly login")
|
58
|
-
lambda {
|
59
|
-
invoke(@cli_user, :list)
|
60
|
-
}.should raise_error(SystemExit)
|
39
|
+
it "should ensure that Cloudfile is present" do
|
40
|
+
hooks(@cli_user, :list).should include(:cloudfile_present?)
|
61
41
|
end
|
62
42
|
|
63
43
|
context "on success" do
|
@@ -80,42 +60,28 @@ describe Shelly::CLI::User do
|
|
80
60
|
end
|
81
61
|
|
82
62
|
context "on failure" do
|
83
|
-
it "should
|
84
|
-
|
85
|
-
exception = Shelly::Client::APIError.new(404, response)
|
63
|
+
it "should exit with 1 if user does not have access to cloud" do
|
64
|
+
exception = Shelly::Client::NotFoundException.new("resource" => "cloud")
|
86
65
|
@client.stub(:app_users).and_raise(exception)
|
87
|
-
$stdout.should_receive(:puts).with(red "You have no access to 'foo-
|
88
|
-
invoke(@cli_user, :list)
|
66
|
+
$stdout.should_receive(:puts).with(red "You have no access to 'foo-production' cloud defined in Cloudfile")
|
67
|
+
lambda { invoke(@cli_user, :list) }.should raise_error(SystemExit)
|
89
68
|
end
|
90
69
|
end
|
91
70
|
end
|
92
71
|
|
93
72
|
describe "#add" do
|
94
73
|
before do
|
95
|
-
FileUtils.mkdir_p("/projects/foo")
|
96
|
-
Dir.chdir("/projects/foo")
|
97
|
-
File.open("Cloudfile", 'w') {|f| f.write("foo-staging:\nfoo-production:\n") }
|
98
|
-
Shelly::App.stub(:inside_git_repository?).and_return(true)
|
99
|
-
@client.stub(:token).and_return("abc")
|
100
74
|
@user = Shelly::User.new
|
101
75
|
@client.stub(:apps).and_return([{"code_name" => "abc"}, {"code_name" => "fooo"}])
|
102
76
|
Shelly::User.stub(:new).and_return(@user)
|
103
77
|
end
|
104
78
|
|
105
|
-
it "should
|
106
|
-
|
107
|
-
$stdout.should_receive(:puts).with("\e[31mNo Cloudfile found\e[0m")
|
108
|
-
lambda {
|
109
|
-
invoke(@cli_user, :add)
|
110
|
-
}.should raise_error(SystemExit)
|
79
|
+
it "should ensure user has logged in" do
|
80
|
+
hooks(@cli_user, :add).should include(:logged_in?)
|
111
81
|
end
|
112
82
|
|
113
|
-
it "should
|
114
|
-
|
115
|
-
$stdout.should_receive(:puts).with("\e[31mMust be run inside your project git repository\e[0m")
|
116
|
-
lambda {
|
117
|
-
invoke(@cli_user, :add)
|
118
|
-
}.should raise_error(SystemExit)
|
83
|
+
it "should ensure that Cloudfile is present" do
|
84
|
+
hooks(@cli_user, :add).should include(:cloudfile_present?)
|
119
85
|
end
|
120
86
|
|
121
87
|
context "on success" do
|
@@ -142,11 +108,12 @@ describe Shelly::CLI::User do
|
|
142
108
|
|
143
109
|
context "on failure" do
|
144
110
|
it "should raise error if user doesnt have access to cloud" do
|
145
|
-
|
146
|
-
exception = Shelly::Client::APIError.new(404, response)
|
111
|
+
exception = Shelly::Client::NotFoundException.new("resource" => "cloud")
|
147
112
|
@client.stub(:send_invitation).and_raise(exception)
|
148
|
-
$stdout.should_receive(:puts).with(red "You have no access to 'foo-
|
149
|
-
|
113
|
+
$stdout.should_receive(:puts).with(red "You have no access to 'foo-production' cloud defined in Cloudfile")
|
114
|
+
lambda {
|
115
|
+
invoke(@cli_user, :add, "megan@example.com")
|
116
|
+
}.should raise_error(SystemExit)
|
150
117
|
end
|
151
118
|
end
|
152
119
|
end
|
data/spec/shelly/client_spec.rb
CHANGED
@@ -1,82 +1,46 @@
|
|
1
1
|
require "spec_helper"
|
2
2
|
|
3
|
-
describe Shelly::Client::
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
it "should return error message" do
|
11
|
-
@error.message.should == "Couldn't find Cloud with code_name = fooo"
|
12
|
-
end
|
13
|
-
|
14
|
-
it "should return array of errors" do
|
15
|
-
@error.errors.should == [["first", "foo"]]
|
16
|
-
end
|
17
|
-
|
18
|
-
it "should return url" do
|
19
|
-
@error.url.should == "https://foo.bar"
|
3
|
+
describe Shelly::Client::NotFoundException do
|
4
|
+
describe "#resource" do
|
5
|
+
it "should return name of not found resource" do
|
6
|
+
message = {"resource" => "log"}
|
7
|
+
exception = Shelly::Client::NotFoundException.new(message)
|
8
|
+
exception.resource.should == :log
|
9
|
+
end
|
20
10
|
end
|
11
|
+
end
|
21
12
|
|
22
|
-
|
23
|
-
|
13
|
+
describe Shelly::Client::ValidationException do
|
14
|
+
before do
|
15
|
+
@body = {"message" => "Validation Failed",
|
16
|
+
"errors" => [["first", "foo"]], "url" => "https://foo.bar"}
|
17
|
+
@exception = Shelly::Client::ValidationException.new(@body)
|
24
18
|
end
|
25
19
|
|
26
|
-
describe "#
|
27
|
-
|
28
|
-
|
29
|
-
@error.resource_not_found.should == :cloud
|
30
|
-
end
|
31
|
-
end
|
32
|
-
|
33
|
-
context "on non 404 response" do
|
34
|
-
it "should return nil" do
|
35
|
-
error = Shelly::Client::APIError.new(401)
|
36
|
-
error.resource_not_found.should be_nil
|
37
|
-
end
|
20
|
+
describe "#errors" do
|
21
|
+
it "should return errors array" do
|
22
|
+
@exception.errors.should == [["first", "foo"]]
|
38
23
|
end
|
39
24
|
end
|
40
25
|
|
41
|
-
describe "#
|
42
|
-
it "should return
|
43
|
-
@error.should
|
44
|
-
end
|
45
|
-
|
46
|
-
it "should return false if response status code is not 404" do
|
47
|
-
error = Shelly::Client::APIError.new(500)
|
48
|
-
error.should_not be_not_found
|
26
|
+
describe "#each_error" do
|
27
|
+
it "should return user friendly string" do
|
28
|
+
@exception.each_error { |error| error.should == "First foo" }
|
49
29
|
end
|
50
30
|
end
|
31
|
+
end
|
51
32
|
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
error.should be_validation
|
58
|
-
end
|
59
|
-
end
|
60
|
-
|
61
|
-
context "when error is not caused by validation errors" do
|
62
|
-
it "should return false" do
|
63
|
-
@error.should_not be_validation
|
64
|
-
end
|
65
|
-
end
|
33
|
+
describe Shelly::Client::APIException do
|
34
|
+
before do
|
35
|
+
body = {"message" => "Not Found",
|
36
|
+
"errors" => [["first", "foo"]], "url" => "https://foo.bar"}
|
37
|
+
@error = Shelly::Client::APIException.new(body)
|
66
38
|
end
|
67
39
|
|
68
|
-
describe "#
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
error.should be_unauthorized
|
73
|
-
end
|
74
|
-
end
|
75
|
-
|
76
|
-
context "when error is not caused by unauthorized" do
|
77
|
-
it "should return false" do
|
78
|
-
@error.should_not be_unauthorized
|
79
|
-
end
|
40
|
+
describe "#[]" do
|
41
|
+
it "should return value of given key from response body" do
|
42
|
+
@error["message"].should == "Not Found"
|
43
|
+
@error[:message].should == "Not Found"
|
80
44
|
end
|
81
45
|
end
|
82
46
|
end
|
@@ -133,7 +97,7 @@ describe Shelly::Client do
|
|
133
97
|
describe "#deploy_logs" do
|
134
98
|
it "should send get request" do
|
135
99
|
time = Time.now
|
136
|
-
FakeWeb.register_uri(:get, api_url("apps/staging-foo/
|
100
|
+
FakeWeb.register_uri(:get, api_url("apps/staging-foo/deployment_logs"), :body => [{:failed => false, :created_at => time},
|
137
101
|
{:failed => true, :created_at => time+1}].to_json)
|
138
102
|
response = @client.deploy_logs("staging-foo")
|
139
103
|
response.should == [{"failed"=>false, "created_at"=>time.to_s},
|
@@ -143,7 +107,7 @@ describe Shelly::Client do
|
|
143
107
|
|
144
108
|
describe "#deploy_log" do
|
145
109
|
it "should send get request with cloud and log" do
|
146
|
-
FakeWeb.register_uri(:get, api_url("apps/staging-foo/
|
110
|
+
FakeWeb.register_uri(:get, api_url("apps/staging-foo/deployment_logs/2011-11-29-11-50-16"), :body => {:content => "Log"}.to_json)
|
147
111
|
response = @client.deploy_log("staging-foo", "2011-11-29-11-50-16")
|
148
112
|
response.should == {"content" => "Log"}
|
149
113
|
end
|
@@ -192,7 +156,7 @@ describe Shelly::Client do
|
|
192
156
|
describe "#application_logs" do
|
193
157
|
it "should send get request" do
|
194
158
|
time = Time.now
|
195
|
-
FakeWeb.register_uri(:get, api_url("apps/staging-foo/
|
159
|
+
FakeWeb.register_uri(:get, api_url("apps/staging-foo/application_logs"),
|
196
160
|
:body => {:logs => ["application_log_1", "application_log_2"]}.to_json)
|
197
161
|
response = @client.application_logs("staging-foo")
|
198
162
|
response.should == {"logs" => ["application_log_1", "application_log_2"]}
|
@@ -214,10 +178,10 @@ describe Shelly::Client do
|
|
214
178
|
response.should == [{"email" => "test@example.com"}, {"email" => "test2@example.com"}]
|
215
179
|
end
|
216
180
|
end
|
217
|
-
|
181
|
+
|
218
182
|
describe "#app" do
|
219
183
|
it "should fetch app from API" do
|
220
|
-
FakeWeb.register_uri(:get, api_url("apps/staging-foo"),
|
184
|
+
FakeWeb.register_uri(:get, api_url("apps/staging-foo"),
|
221
185
|
:body => {:web_server_ip => "192.0.2.1", :mail_server_ip => "192.0.2.3"}.to_json)
|
222
186
|
response = @client.app("staging-foo")
|
223
187
|
response.should == {"web_server_ip" => "192.0.2.1", "mail_server_ip" => "192.0.2.3"}
|
@@ -235,7 +199,7 @@ describe Shelly::Client do
|
|
235
199
|
|
236
200
|
describe "#add_ssh_key" do
|
237
201
|
it "should send put with give SSH key" do
|
238
|
-
@client.should_receive(:post).with("/
|
202
|
+
@client.should_receive(:post).with("/ssh_keys", {:ssh_key => "abc"})
|
239
203
|
@client.add_ssh_key("abc")
|
240
204
|
end
|
241
205
|
end
|
@@ -255,6 +219,14 @@ describe Shelly::Client do
|
|
255
219
|
end
|
256
220
|
end
|
257
221
|
|
222
|
+
describe "#redeploy" do
|
223
|
+
it "should send post to deploys resource for given cloud" do
|
224
|
+
FakeWeb.register_uri(:post, api_url("apps/staging-foo/deploys"), :body => "")
|
225
|
+
response = @client.redeploy("staging-foo")
|
226
|
+
response.should == {}
|
227
|
+
end
|
228
|
+
end
|
229
|
+
|
258
230
|
describe "#stop_cloud" do
|
259
231
|
it "should sent delete request with cloud's code_name" do
|
260
232
|
FakeWeb.register_uri(:put, api_url("apps/staging-foo/stop"), :body => {}.to_json)
|
@@ -367,19 +339,56 @@ describe Shelly::Client do
|
|
367
339
|
@client.get('/account')
|
368
340
|
end
|
369
341
|
|
370
|
-
|
371
|
-
|
372
|
-
|
373
|
-
|
374
|
-
|
342
|
+
context "on 401 response" do
|
343
|
+
it "should raise UnauthorizedException" do
|
344
|
+
@response.stub(:code).and_return(401)
|
345
|
+
@response.stub(:body).and_return("")
|
346
|
+
lambda {
|
347
|
+
@client.post("/")
|
348
|
+
}.should raise_error(Shelly::Client::UnauthorizedException)
|
349
|
+
end
|
350
|
+
end
|
351
|
+
|
352
|
+
context "on 404 response" do
|
353
|
+
it "should raise NotFoundException" do
|
354
|
+
@response.stub(:code).and_return(404)
|
355
|
+
@response.stub(:body).and_return("")
|
356
|
+
lambda {
|
357
|
+
@client.post("/")
|
358
|
+
}.should raise_error(Shelly::Client::NotFoundException)
|
359
|
+
end
|
360
|
+
end
|
361
|
+
|
362
|
+
context "on 409 response" do
|
363
|
+
it "should raise ConflictException" do
|
364
|
+
@response.stub(:code).and_return(409)
|
365
|
+
@response.stub(:body).and_return("")
|
366
|
+
lambda {
|
367
|
+
@client.post("/")
|
368
|
+
}.should raise_error(Shelly::Client::ConflictException)
|
369
|
+
end
|
370
|
+
end
|
371
|
+
|
372
|
+
context "on 422 response" do
|
373
|
+
it "should raise ValidationException" do
|
374
|
+
@response.stub(:code).and_return(422)
|
375
|
+
@response.stub(:body).and_return("")
|
376
|
+
lambda {
|
377
|
+
@client.post("/")
|
378
|
+
}.should raise_error(Shelly::Client::ValidationException)
|
379
|
+
end
|
380
|
+
end
|
375
381
|
|
376
|
-
|
377
|
-
|
378
|
-
|
379
|
-
|
382
|
+
context "on unsupported response" do
|
383
|
+
it "should raise generic APIException" do
|
384
|
+
@response.stub(:code).and_return(500)
|
385
|
+
@response.stub(:body).and_return("")
|
386
|
+
lambda {
|
387
|
+
@client.post("/")
|
388
|
+
}.should raise_error(Shelly::Client::APIException)
|
380
389
|
end
|
381
390
|
end
|
382
|
-
|
391
|
+
|
383
392
|
it "should return empty hash if response is not a valid JSON" do
|
384
393
|
JSON.should_receive(:parse).with("").and_raise(JSON::ParserError)
|
385
394
|
@response.stub(:code).and_return("204")
|
@@ -6,21 +6,21 @@ describe Shelly::DownloadProgressBar do
|
|
6
6
|
$stderr.stub(:print)
|
7
7
|
@bar = Shelly::DownloadProgressBar.new(4444)
|
8
8
|
end
|
9
|
-
|
9
|
+
|
10
10
|
it "should inherith from ProgressBar" do
|
11
11
|
@bar.should be_kind_of(ProgressBar)
|
12
12
|
end
|
13
|
-
|
13
|
+
|
14
14
|
it "should initialize parent with header and given size" do
|
15
15
|
@bar.title.should == "Progress"
|
16
16
|
@bar.total.should == 4444
|
17
17
|
end
|
18
|
-
|
18
|
+
|
19
19
|
describe "#progress_callback" do
|
20
20
|
it "should return callback for updating progress bar" do
|
21
21
|
@bar.should_receive(:inc).with(10)
|
22
22
|
@bar.should_receive(:inc).with(20)
|
23
|
-
|
23
|
+
|
24
24
|
@bar.progress_callback.call(10)
|
25
25
|
@bar.progress_callback.call(20)
|
26
26
|
end
|
data/spec/shelly/user_spec.rb
CHANGED
@@ -70,6 +70,16 @@ describe Shelly::User do
|
|
70
70
|
end
|
71
71
|
end
|
72
72
|
|
73
|
+
describe "#delete_credentials" do
|
74
|
+
it "should delete credentials from file" do
|
75
|
+
@user.save_credentials
|
76
|
+
File.exists?("~/.shelly/credentials").should be_true
|
77
|
+
File.read("~/.shelly/credentials").should == "bob@example.com\nsecret"
|
78
|
+
@user.delete_credentials
|
79
|
+
File.exists?("~/.shelly/credentials").should be_false
|
80
|
+
end
|
81
|
+
end
|
82
|
+
|
73
83
|
describe "#load_credentials" do
|
74
84
|
it "should load credentials from file" do
|
75
85
|
config_dir = File.expand_path("~/.shelly")
|
@@ -120,6 +130,19 @@ describe Shelly::User do
|
|
120
130
|
end
|
121
131
|
end
|
122
132
|
|
133
|
+
describe "#delete_ssh_key" do
|
134
|
+
it "should invoke logout when ssh key exists" do
|
135
|
+
@client.should_receive(:logout).with('ssh-key AAbbcc')
|
136
|
+
@user.delete_ssh_key
|
137
|
+
end
|
138
|
+
|
139
|
+
it "should not invoke logout when ssh key doesn't exist" do
|
140
|
+
FileUtils.rm_rf("~/.ssh/id_rsa.pub")
|
141
|
+
@client.should_not_receive(:logout)
|
142
|
+
@user.delete_ssh_key
|
143
|
+
end
|
144
|
+
end
|
145
|
+
|
123
146
|
describe "#upload_ssh_key" do
|
124
147
|
it "should read and upload user's public SSH key" do
|
125
148
|
@client.should_receive(:add_ssh_key).with("ssh-key AAbbcc")
|
data/spec/spec_helper.rb
CHANGED
metadata
CHANGED
@@ -1,19 +1,19 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: shelly
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
5
|
-
prerelease:
|
4
|
+
version: 0.0.44.pre
|
5
|
+
prerelease: 7
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Shelly Cloud team
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-01-
|
12
|
+
date: 2012-01-08 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rspec
|
16
|
-
requirement: &
|
16
|
+
requirement: &70206898312780 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: '0'
|
22
22
|
type: :development
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70206898312780
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: rake
|
27
|
-
requirement: &
|
27
|
+
requirement: &70206898266580 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: '0'
|
33
33
|
type: :development
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *70206898266580
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: guard
|
38
|
-
requirement: &
|
38
|
+
requirement: &70206898212380 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ! '>='
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: '0'
|
44
44
|
type: :development
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *70206898212380
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: guard-rspec
|
49
|
-
requirement: &
|
49
|
+
requirement: &70206898169340 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ! '>='
|
@@ -54,10 +54,10 @@ dependencies:
|
|
54
54
|
version: '0'
|
55
55
|
type: :development
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *70206898169340
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
|
-
name:
|
60
|
-
requirement: &
|
59
|
+
name: simplecov
|
60
|
+
requirement: &70206898115120 !ruby/object:Gem::Requirement
|
61
61
|
none: false
|
62
62
|
requirements:
|
63
63
|
- - ! '>='
|
@@ -65,10 +65,21 @@ dependencies:
|
|
65
65
|
version: '0'
|
66
66
|
type: :development
|
67
67
|
prerelease: false
|
68
|
-
version_requirements: *
|
68
|
+
version_requirements: *70206898115120
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: ruby_gntp
|
71
|
+
requirement: &70206898084560 !ruby/object:Gem::Requirement
|
72
|
+
none: false
|
73
|
+
requirements:
|
74
|
+
- - ! '>='
|
75
|
+
- !ruby/object:Gem::Version
|
76
|
+
version: '0'
|
77
|
+
type: :development
|
78
|
+
prerelease: false
|
79
|
+
version_requirements: *70206898084560
|
69
80
|
- !ruby/object:Gem::Dependency
|
70
81
|
name: rb-fsevent
|
71
|
-
requirement: &
|
82
|
+
requirement: &70206898037160 !ruby/object:Gem::Requirement
|
72
83
|
none: false
|
73
84
|
requirements:
|
74
85
|
- - ! '>='
|
@@ -76,10 +87,10 @@ dependencies:
|
|
76
87
|
version: '0'
|
77
88
|
type: :development
|
78
89
|
prerelease: false
|
79
|
-
version_requirements: *
|
90
|
+
version_requirements: *70206898037160
|
80
91
|
- !ruby/object:Gem::Dependency
|
81
92
|
name: fakefs
|
82
|
-
requirement: &
|
93
|
+
requirement: &70206898006080 !ruby/object:Gem::Requirement
|
83
94
|
none: false
|
84
95
|
requirements:
|
85
96
|
- - ! '>='
|
@@ -87,10 +98,10 @@ dependencies:
|
|
87
98
|
version: '0'
|
88
99
|
type: :development
|
89
100
|
prerelease: false
|
90
|
-
version_requirements: *
|
101
|
+
version_requirements: *70206898006080
|
91
102
|
- !ruby/object:Gem::Dependency
|
92
103
|
name: fakeweb
|
93
|
-
requirement: &
|
104
|
+
requirement: &70206897962100 !ruby/object:Gem::Requirement
|
94
105
|
none: false
|
95
106
|
requirements:
|
96
107
|
- - ! '>='
|
@@ -98,10 +109,10 @@ dependencies:
|
|
98
109
|
version: '0'
|
99
110
|
type: :development
|
100
111
|
prerelease: false
|
101
|
-
version_requirements: *
|
112
|
+
version_requirements: *70206897962100
|
102
113
|
- !ruby/object:Gem::Dependency
|
103
114
|
name: wijet-thor
|
104
|
-
requirement: &
|
115
|
+
requirement: &70206897912840 !ruby/object:Gem::Requirement
|
105
116
|
none: false
|
106
117
|
requirements:
|
107
118
|
- - ~>
|
@@ -109,10 +120,10 @@ dependencies:
|
|
109
120
|
version: 0.14.7
|
110
121
|
type: :runtime
|
111
122
|
prerelease: false
|
112
|
-
version_requirements: *
|
123
|
+
version_requirements: *70206897912840
|
113
124
|
- !ruby/object:Gem::Dependency
|
114
125
|
name: rest-client
|
115
|
-
requirement: &
|
126
|
+
requirement: &70206897862480 !ruby/object:Gem::Requirement
|
116
127
|
none: false
|
117
128
|
requirements:
|
118
129
|
- - ! '>='
|
@@ -120,10 +131,10 @@ dependencies:
|
|
120
131
|
version: '0'
|
121
132
|
type: :runtime
|
122
133
|
prerelease: false
|
123
|
-
version_requirements: *
|
134
|
+
version_requirements: *70206897862480
|
124
135
|
- !ruby/object:Gem::Dependency
|
125
136
|
name: json
|
126
|
-
requirement: &
|
137
|
+
requirement: &70206897821420 !ruby/object:Gem::Requirement
|
127
138
|
none: false
|
128
139
|
requirements:
|
129
140
|
- - ! '>='
|
@@ -131,10 +142,10 @@ dependencies:
|
|
131
142
|
version: '0'
|
132
143
|
type: :runtime
|
133
144
|
prerelease: false
|
134
|
-
version_requirements: *
|
145
|
+
version_requirements: *70206897821420
|
135
146
|
- !ruby/object:Gem::Dependency
|
136
147
|
name: wijet-launchy
|
137
|
-
requirement: &
|
148
|
+
requirement: &70206897777600 !ruby/object:Gem::Requirement
|
138
149
|
none: false
|
139
150
|
requirements:
|
140
151
|
- - ! '>='
|
@@ -142,10 +153,10 @@ dependencies:
|
|
142
153
|
version: '0'
|
143
154
|
type: :runtime
|
144
155
|
prerelease: false
|
145
|
-
version_requirements: *
|
156
|
+
version_requirements: *70206897777600
|
146
157
|
- !ruby/object:Gem::Dependency
|
147
158
|
name: progressbar
|
148
|
-
requirement: &
|
159
|
+
requirement: &70206897756220 !ruby/object:Gem::Requirement
|
149
160
|
none: false
|
150
161
|
requirements:
|
151
162
|
- - ! '>='
|
@@ -153,7 +164,7 @@ dependencies:
|
|
153
164
|
version: '0'
|
154
165
|
type: :runtime
|
155
166
|
prerelease: false
|
156
|
-
version_requirements: *
|
167
|
+
version_requirements: *70206897756220
|
157
168
|
description: Tool for managing applications and clouds at shellycloud.com
|
158
169
|
email:
|
159
170
|
- support@shellycloud.com
|
@@ -226,9 +237,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
226
237
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
227
238
|
none: false
|
228
239
|
requirements:
|
229
|
-
- - ! '
|
240
|
+
- - ! '>'
|
230
241
|
- !ruby/object:Gem::Version
|
231
|
-
version:
|
242
|
+
version: 1.3.1
|
232
243
|
requirements: []
|
233
244
|
rubyforge_project: shelly
|
234
245
|
rubygems_version: 1.8.10
|