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.
@@ -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 exit with message if command run outside git repository" do
37
- Shelly::App.stub(:inside_git_repository?).and_return(false)
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 exit with message if there is no Cloudfile" do
45
- File.delete("Cloudfile")
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 raise an error if user does not have access to cloud" do
84
- response = {"message" => "Couldn't find Cloud with code_name = foo-staging"}
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-staging' cloud defined in Cloudfile")
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 exit with message if there is no Cloudfile" do
106
- File.delete("Cloudfile")
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 exit with message if command run outside git repository" do
114
- Shelly::App.stub(:inside_git_repository?).and_return(false)
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
- response = {"message" => "Cloud foo-staging not found"}
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-staging' cloud defined in Cloudfile")
149
- invoke(@cli_user, :add, "megan@example.com")
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
@@ -1,82 +1,46 @@
1
1
  require "spec_helper"
2
2
 
3
- describe Shelly::Client::APIError do
4
- before do
5
- body = {"message" => "Couldn't find Cloud with code_name = fooo",
6
- "errors" => [["first", "foo"]], "url" => "https://foo.bar"}
7
- @error = Shelly::Client::APIError.new(404, body)
8
- end
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
- it "should return user friendly string" do
23
- @error.each_error { |error| error.should == "First foo" }
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 "#resource_not_found?" do
27
- context "on 404 response" do
28
- it "should return which resource was not found" do
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 "#not_found?" do
42
- it "should return true if response status code is 404" do
43
- @error.should be_not_found
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
- describe "#validation?" do
53
- context "when error is caused by validation errors" do
54
- it "should return true" do
55
- body = {"message" => "Validation Failed"}
56
- error = Shelly::Client::APIError.new(422, body)
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 "#unauthorized?" do
69
- context "when error is caused by unauthorized error" do
70
- it "should return true" do
71
- error = Shelly::Client::APIError.new(401)
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/deploys"), :body => [{:failed => false, :created_at => time},
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/deploys/2011-11-29-11-50-16"), :body => {:content => "Log"}.to_json)
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/logs"),
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("/ssh_key", {:ssh_key => "abc"})
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
- %w(401, 404 422 500).each do |code|
371
- context "on #{code} response code" do
372
- it "should raise APIError" do
373
- @response.stub(:code).and_return(code.to_i)
374
- @response.stub(:body).and_return({"message" => "random error happened"}.to_json)
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
- lambda {
377
- @client.post("/api/apps/flower/command", :body => "puts User.count")
378
- }.should raise_error(Shelly::Client::APIError, "random error happened")
379
- end
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
@@ -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
@@ -1,3 +1,8 @@
1
+ if ENV["COVERAGE"]
2
+ require "simplecov"
3
+ SimpleCov.start
4
+ end
5
+
1
6
  require "rspec"
2
7
  require "shelly"
3
8
  require "helpers"
@@ -12,4 +17,3 @@ RSpec.configure do |config|
12
17
  config.include RSpec::Helpers
13
18
  config.include FakeFS::SpecHelpers
14
19
  end
15
-
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.43
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-03 00:00:00.000000000 Z
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: &70237654877900 !ruby/object:Gem::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: *70237654877900
24
+ version_requirements: *70206898312780
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: rake
27
- requirement: &70237654877480 !ruby/object:Gem::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: *70237654877480
35
+ version_requirements: *70206898266580
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: guard
38
- requirement: &70237654877060 !ruby/object:Gem::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: *70237654877060
46
+ version_requirements: *70206898212380
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: guard-rspec
49
- requirement: &70237654876640 !ruby/object:Gem::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: *70237654876640
57
+ version_requirements: *70206898169340
58
58
  - !ruby/object:Gem::Dependency
59
- name: growl_notify
60
- requirement: &70237654876180 !ruby/object:Gem::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: *70237654876180
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: &70237654892140 !ruby/object:Gem::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: *70237654892140
90
+ version_requirements: *70206898037160
80
91
  - !ruby/object:Gem::Dependency
81
92
  name: fakefs
82
- requirement: &70237654891720 !ruby/object:Gem::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: *70237654891720
101
+ version_requirements: *70206898006080
91
102
  - !ruby/object:Gem::Dependency
92
103
  name: fakeweb
93
- requirement: &70237654891300 !ruby/object:Gem::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: *70237654891300
112
+ version_requirements: *70206897962100
102
113
  - !ruby/object:Gem::Dependency
103
114
  name: wijet-thor
104
- requirement: &70237654890800 !ruby/object:Gem::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: *70237654890800
123
+ version_requirements: *70206897912840
113
124
  - !ruby/object:Gem::Dependency
114
125
  name: rest-client
115
- requirement: &70237654890380 !ruby/object:Gem::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: *70237654890380
134
+ version_requirements: *70206897862480
124
135
  - !ruby/object:Gem::Dependency
125
136
  name: json
126
- requirement: &70237654889920 !ruby/object:Gem::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: *70237654889920
145
+ version_requirements: *70206897821420
135
146
  - !ruby/object:Gem::Dependency
136
147
  name: wijet-launchy
137
- requirement: &70237654889500 !ruby/object:Gem::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: *70237654889500
156
+ version_requirements: *70206897777600
146
157
  - !ruby/object:Gem::Dependency
147
158
  name: progressbar
148
- requirement: &70237654889080 !ruby/object:Gem::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: *70237654889080
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: '0'
242
+ version: 1.3.1
232
243
  requirements: []
233
244
  rubyforge_project: shelly
234
245
  rubygems_version: 1.8.10