gemlock 0.0.11 → 0.0.12
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/gemlock.rb +42 -3
- data/lib/gemlock/version.rb +1 -1
- data/spec/fixtures/gemlock.yml +2 -0
- data/spec/gemlock_spec.rb +43 -15
- metadata +20 -20
data/lib/gemlock.rb
CHANGED
@@ -70,8 +70,8 @@ module Gemlock
|
|
70
70
|
end
|
71
71
|
|
72
72
|
def difference(version_a, version_b)
|
73
|
-
major_a, minor_a, patch_a = version_a
|
74
|
-
major_b, minor_b, patch_b = version_b
|
73
|
+
major_a, minor_a, patch_a = process_version(version_a)
|
74
|
+
major_b, minor_b, patch_b = process_version(version_b)
|
75
75
|
|
76
76
|
if (major_a - major_b).abs > 0
|
77
77
|
"major"
|
@@ -85,7 +85,8 @@ module Gemlock
|
|
85
85
|
end
|
86
86
|
|
87
87
|
# By default, check for updates every 2 weeks
|
88
|
-
def initializer
|
88
|
+
def initializer
|
89
|
+
update_interval = Gemlock.update_interval
|
89
90
|
Thread.new(update_interval) do |interval|
|
90
91
|
loop do
|
91
92
|
puts "Checking for gem updates..."
|
@@ -108,6 +109,44 @@ module Gemlock
|
|
108
109
|
end
|
109
110
|
end
|
110
111
|
|
112
|
+
def update_interval
|
113
|
+
if parsed_config
|
114
|
+
if interval = parsed_config["interval"][0]
|
115
|
+
num_hours = interval.match(/\d*/)[0].to_i
|
116
|
+
if interval =~ /hour/
|
117
|
+
delay = 60*60
|
118
|
+
elsif interval =~ /day/
|
119
|
+
delay = 60*60*24
|
120
|
+
elsif interval =~ /week/
|
121
|
+
delay = 60*60*24*7
|
122
|
+
elsif interval =~ /month/
|
123
|
+
delay = 60*60*24*30
|
124
|
+
end
|
125
|
+
if delay && num_hours > 0
|
126
|
+
delay *= num_hours
|
127
|
+
return delay
|
128
|
+
elsif delay
|
129
|
+
return delay
|
130
|
+
end
|
131
|
+
end
|
132
|
+
end
|
133
|
+
60*60*24*7 #Seconds in a week
|
134
|
+
end
|
135
|
+
|
136
|
+
private
|
137
|
+
|
138
|
+
def process_version(version_string)
|
139
|
+
version = version_string.split('.').collect(&:to_i)
|
140
|
+
|
141
|
+
if version.length < 3
|
142
|
+
(3 - version.length).times do
|
143
|
+
version << 0
|
144
|
+
end
|
145
|
+
end
|
146
|
+
|
147
|
+
version
|
148
|
+
end
|
149
|
+
|
111
150
|
def sleep(length)
|
112
151
|
Kernel.sleep(length)
|
113
152
|
end
|
data/lib/gemlock/version.rb
CHANGED
data/spec/fixtures/gemlock.yml
CHANGED
data/spec/gemlock_spec.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe Gemlock do
|
4
|
-
describe "
|
4
|
+
describe ".locked_gemfile_specs" do
|
5
5
|
it "outputs the list of gems & version requirements" do
|
6
6
|
Gemlock.stubs(:lockfile).returns((File.join(File.dirname(__FILE__), 'fixtures', 'Gemfile.lock')))
|
7
7
|
|
@@ -16,7 +16,7 @@ describe Gemlock do
|
|
16
16
|
end
|
17
17
|
end
|
18
18
|
|
19
|
-
describe "
|
19
|
+
describe ".lockfile" do
|
20
20
|
it "loads Gemfile.lock from the Rails root if Rails is defined" do
|
21
21
|
module Rails
|
22
22
|
def self.root
|
@@ -39,7 +39,7 @@ describe Gemlock do
|
|
39
39
|
end
|
40
40
|
end
|
41
41
|
|
42
|
-
describe "
|
42
|
+
describe ".lookup_version" do
|
43
43
|
use_vcr_cassette
|
44
44
|
|
45
45
|
it "looks up and return the latest version of a given gem" do
|
@@ -48,7 +48,7 @@ describe Gemlock do
|
|
48
48
|
end
|
49
49
|
end
|
50
50
|
|
51
|
-
describe "
|
51
|
+
describe ".outdated" do
|
52
52
|
use_vcr_cassette
|
53
53
|
|
54
54
|
before do
|
@@ -82,7 +82,7 @@ describe Gemlock do
|
|
82
82
|
end
|
83
83
|
end
|
84
84
|
|
85
|
-
describe "
|
85
|
+
describe ".config" do
|
86
86
|
it "loads gemlock.yml from the config directory if Rails is defined" do
|
87
87
|
module Rails
|
88
88
|
def self.root
|
@@ -116,7 +116,7 @@ describe Gemlock do
|
|
116
116
|
end
|
117
117
|
end
|
118
118
|
|
119
|
-
describe "
|
119
|
+
describe ".parsed_config" do
|
120
120
|
it "returns nil if the config file is not present" do
|
121
121
|
Gemlock.parsed_config.should be_nil
|
122
122
|
end
|
@@ -128,11 +128,12 @@ describe Gemlock do
|
|
128
128
|
end
|
129
129
|
end
|
130
130
|
|
131
|
-
describe "
|
131
|
+
describe ".difference" do
|
132
132
|
it "returns 'major' if there is a major version difference between the two gem versions" do
|
133
133
|
Gemlock.difference("2.0.0", "3.0.0").should eql "major"
|
134
134
|
Gemlock.difference("2.5.10", "3.1.0").should eql "major"
|
135
135
|
Gemlock.difference("3.1.10", "2.5.8").should eql "major"
|
136
|
+
Gemlock.difference("3.0", "2.0" ).should eql "major"
|
136
137
|
end
|
137
138
|
|
138
139
|
it "returns 'minor' if there is a minor version difference between the two gem versions" do
|
@@ -154,7 +155,7 @@ describe Gemlock do
|
|
154
155
|
end
|
155
156
|
end
|
156
157
|
|
157
|
-
describe '
|
158
|
+
describe '.initializer' do
|
158
159
|
it "makes a thread" do
|
159
160
|
Gemlock.stubs(:outdated).returns([])
|
160
161
|
|
@@ -178,15 +179,42 @@ describe Gemlock do
|
|
178
179
|
@thread.kill
|
179
180
|
end
|
180
181
|
end
|
182
|
+
end
|
181
183
|
|
182
|
-
|
183
|
-
|
184
|
-
Gemlock.
|
184
|
+
describe ".process_version" do
|
185
|
+
it "splits a version string into an array" do
|
186
|
+
Gemlock.send(:process_version, "3.0.0").class.should eql Array
|
187
|
+
end
|
185
188
|
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
|
189
|
+
it "appends missing zeros to the end of a version if not given" do
|
190
|
+
Gemlock.send(:process_version, "3").should eql [3, 0, 0]
|
191
|
+
Gemlock.send(:process_version, "3.0").should eql [3, 0, 0]
|
192
|
+
end
|
193
|
+
end
|
194
|
+
|
195
|
+
describe ".update_interval" do
|
196
|
+
it "returns the number of seconds in a week if config_file is not present, or interval is not specified" do
|
197
|
+
Gemlock.update_interval.should eql 60*60*24*7
|
198
|
+
end
|
199
|
+
|
200
|
+
it "returns the number of seconds until the next number of hours as given" do
|
201
|
+
Gemlock.stubs(:parsed_config).returns({"interval" => ["8 hours"]})
|
202
|
+
Gemlock.update_interval.should eql 60*60*8
|
203
|
+
end
|
204
|
+
|
205
|
+
it "returns the number of seconds until the next number of days as given" do
|
206
|
+
Gemlock.stubs(:parsed_config).returns({"interval" => ["4 days"]})
|
207
|
+
Gemlock.update_interval.should eql 60*60*24*4
|
208
|
+
end
|
209
|
+
|
210
|
+
it "returns the number of seconds until the next number of weeks as given" do
|
211
|
+
Gemlock.stubs(:parsed_config).returns({"interval" => ["2 weeks"]})
|
212
|
+
Gemlock.update_interval.should eql 60*60*24*7*2
|
213
|
+
end
|
214
|
+
|
215
|
+
it "returns the number of seconds unil the next number of months as given" do
|
216
|
+
Gemlock.stubs(:parsed_config).returns({"interval" => ["3 months"]})
|
217
|
+
Gemlock.update_interval.should eql 60*60*24*30*3
|
190
218
|
end
|
191
219
|
end
|
192
220
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gemlock
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.12
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -12,11 +12,11 @@ authors:
|
|
12
12
|
autorequire:
|
13
13
|
bindir: bin
|
14
14
|
cert_chain: []
|
15
|
-
date: 2011-10-
|
15
|
+
date: 2011-10-24 00:00:00.000000000Z
|
16
16
|
dependencies:
|
17
17
|
- !ruby/object:Gem::Dependency
|
18
18
|
name: rake
|
19
|
-
requirement: &
|
19
|
+
requirement: &70118047777300 !ruby/object:Gem::Requirement
|
20
20
|
none: false
|
21
21
|
requirements:
|
22
22
|
- - ! '>='
|
@@ -24,10 +24,10 @@ dependencies:
|
|
24
24
|
version: 0.8.7
|
25
25
|
type: :runtime
|
26
26
|
prerelease: false
|
27
|
-
version_requirements: *
|
27
|
+
version_requirements: *70118047777300
|
28
28
|
- !ruby/object:Gem::Dependency
|
29
29
|
name: bundler
|
30
|
-
requirement: &
|
30
|
+
requirement: &70118047776780 !ruby/object:Gem::Requirement
|
31
31
|
none: false
|
32
32
|
requirements:
|
33
33
|
- - ~>
|
@@ -35,10 +35,10 @@ dependencies:
|
|
35
35
|
version: 1.0.0
|
36
36
|
type: :runtime
|
37
37
|
prerelease: false
|
38
|
-
version_requirements: *
|
38
|
+
version_requirements: *70118047776780
|
39
39
|
- !ruby/object:Gem::Dependency
|
40
40
|
name: rest-client
|
41
|
-
requirement: &
|
41
|
+
requirement: &70118047776400 !ruby/object:Gem::Requirement
|
42
42
|
none: false
|
43
43
|
requirements:
|
44
44
|
- - ! '>='
|
@@ -46,10 +46,10 @@ dependencies:
|
|
46
46
|
version: '0'
|
47
47
|
type: :runtime
|
48
48
|
prerelease: false
|
49
|
-
version_requirements: *
|
49
|
+
version_requirements: *70118047776400
|
50
50
|
- !ruby/object:Gem::Dependency
|
51
51
|
name: json
|
52
|
-
requirement: &
|
52
|
+
requirement: &70118047775940 !ruby/object:Gem::Requirement
|
53
53
|
none: false
|
54
54
|
requirements:
|
55
55
|
- - ! '>='
|
@@ -57,10 +57,10 @@ dependencies:
|
|
57
57
|
version: '0'
|
58
58
|
type: :runtime
|
59
59
|
prerelease: false
|
60
|
-
version_requirements: *
|
60
|
+
version_requirements: *70118047775940
|
61
61
|
- !ruby/object:Gem::Dependency
|
62
62
|
name: rspec
|
63
|
-
requirement: &
|
63
|
+
requirement: &70118047775420 !ruby/object:Gem::Requirement
|
64
64
|
none: false
|
65
65
|
requirements:
|
66
66
|
- - ~>
|
@@ -68,10 +68,10 @@ dependencies:
|
|
68
68
|
version: 2.7.0
|
69
69
|
type: :development
|
70
70
|
prerelease: false
|
71
|
-
version_requirements: *
|
71
|
+
version_requirements: *70118047775420
|
72
72
|
- !ruby/object:Gem::Dependency
|
73
73
|
name: mocha
|
74
|
-
requirement: &
|
74
|
+
requirement: &70118047774880 !ruby/object:Gem::Requirement
|
75
75
|
none: false
|
76
76
|
requirements:
|
77
77
|
- - ~>
|
@@ -79,10 +79,10 @@ dependencies:
|
|
79
79
|
version: 0.10.0
|
80
80
|
type: :development
|
81
81
|
prerelease: false
|
82
|
-
version_requirements: *
|
82
|
+
version_requirements: *70118047774880
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
84
|
name: pry
|
85
|
-
requirement: &
|
85
|
+
requirement: &70118047774260 !ruby/object:Gem::Requirement
|
86
86
|
none: false
|
87
87
|
requirements:
|
88
88
|
- - ! '>='
|
@@ -90,10 +90,10 @@ dependencies:
|
|
90
90
|
version: 0.9.5
|
91
91
|
type: :development
|
92
92
|
prerelease: false
|
93
|
-
version_requirements: *
|
93
|
+
version_requirements: *70118047774260
|
94
94
|
- !ruby/object:Gem::Dependency
|
95
95
|
name: vcr
|
96
|
-
requirement: &
|
96
|
+
requirement: &70118047771980 !ruby/object:Gem::Requirement
|
97
97
|
none: false
|
98
98
|
requirements:
|
99
99
|
- - ! '>='
|
@@ -101,10 +101,10 @@ dependencies:
|
|
101
101
|
version: 1.11.0
|
102
102
|
type: :development
|
103
103
|
prerelease: false
|
104
|
-
version_requirements: *
|
104
|
+
version_requirements: *70118047771980
|
105
105
|
- !ruby/object:Gem::Dependency
|
106
106
|
name: fakeweb
|
107
|
-
requirement: &
|
107
|
+
requirement: &70118047770800 !ruby/object:Gem::Requirement
|
108
108
|
none: false
|
109
109
|
requirements:
|
110
110
|
- - ! '>='
|
@@ -112,7 +112,7 @@ dependencies:
|
|
112
112
|
version: 1.3.0
|
113
113
|
type: :development
|
114
114
|
prerelease: false
|
115
|
-
version_requirements: *
|
115
|
+
version_requirements: *70118047770800
|
116
116
|
description: When installed, allows a user to check for updates in their Rails application
|
117
117
|
email:
|
118
118
|
- mskalnik@gatech.edu
|