shelly 0.0.43 → 0.0.44.pre

Sign up to get free protection for your applications and to get access to all the features.
@@ -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