gemlock 0.0.11 → 0.0.12

Sign up to get free protection for your applications and to get access to all the features.
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.split('.').collect(&:to_i)
74
- major_b, minor_b, patch_b = version_b.split('.').collect(&:to_i)
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(update_interval = 60*60*24*7*2)
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
@@ -1,3 +1,3 @@
1
1
  module Gemlock
2
- VERSION = "0.0.11"
2
+ VERSION = "0.0.12"
3
3
  end
@@ -2,3 +2,5 @@ email: tester@example.com
2
2
  releases:
3
3
  - major
4
4
  - patch
5
+ interval:
6
+ - 2 weeks
data/spec/gemlock_spec.rb CHANGED
@@ -1,7 +1,7 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe Gemlock do
4
- describe "#locked_gemfile_specs" do
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 "#lockfile" do
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 "#lookup_version" do
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 "#outdated" do
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 "#config" do
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 "#parsed_config" do
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 "#difference" do
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 '#initializer' do
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
- it "sleeps for the given amount of time" do
183
- Gemlock.stubs(:outdated).returns([])
184
- Gemlock.expects(:sleep).with(1).at_least(1)
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
- capture_stdout do
187
- @thread = Gemlock.initializer(1)
188
- sleep 1
189
- end
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.11
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-21 00:00:00.000000000Z
15
+ date: 2011-10-24 00:00:00.000000000Z
16
16
  dependencies:
17
17
  - !ruby/object:Gem::Dependency
18
18
  name: rake
19
- requirement: &70207373857980 !ruby/object:Gem::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: *70207373857980
27
+ version_requirements: *70118047777300
28
28
  - !ruby/object:Gem::Dependency
29
29
  name: bundler
30
- requirement: &70207373857480 !ruby/object:Gem::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: *70207373857480
38
+ version_requirements: *70118047776780
39
39
  - !ruby/object:Gem::Dependency
40
40
  name: rest-client
41
- requirement: &70207373857080 !ruby/object:Gem::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: *70207373857080
49
+ version_requirements: *70118047776400
50
50
  - !ruby/object:Gem::Dependency
51
51
  name: json
52
- requirement: &70207373856540 !ruby/object:Gem::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: *70207373856540
60
+ version_requirements: *70118047775940
61
61
  - !ruby/object:Gem::Dependency
62
62
  name: rspec
63
- requirement: &70207373856020 !ruby/object:Gem::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: *70207373856020
71
+ version_requirements: *70118047775420
72
72
  - !ruby/object:Gem::Dependency
73
73
  name: mocha
74
- requirement: &70207373855460 !ruby/object:Gem::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: *70207373855460
82
+ version_requirements: *70118047774880
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: pry
85
- requirement: &70207373854900 !ruby/object:Gem::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: *70207373854900
93
+ version_requirements: *70118047774260
94
94
  - !ruby/object:Gem::Dependency
95
95
  name: vcr
96
- requirement: &70207373854340 !ruby/object:Gem::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: *70207373854340
104
+ version_requirements: *70118047771980
105
105
  - !ruby/object:Gem::Dependency
106
106
  name: fakeweb
107
- requirement: &70207373853820 !ruby/object:Gem::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: *70207373853820
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