gem-mirror 0.0.3 → 0.0.4
Sign up to get free protection for your applications and to get access to all the features.
- data/gem-mirror.gemspec +1 -1
- data/lib/gem-mirror/gem.rb +8 -2
- data/lib/gem-mirror/gems_fetcher.rb +59 -8
- data/lib/gem-mirror/source.rb +1 -1
- data/lib/gem-mirror/version.rb +1 -1
- metadata +2 -2
data/gem-mirror.gemspec
CHANGED
@@ -3,7 +3,7 @@ require File.expand_path('../lib/gem-mirror/version', __FILE__)
|
|
3
3
|
Gem::Specification.new do |s|
|
4
4
|
s.name = 'gem-mirror'
|
5
5
|
s.version = GemMirror::VERSION
|
6
|
-
s.date = '2012-02-
|
6
|
+
s.date = '2012-02-04'
|
7
7
|
s.authors = ['Yorick Peterse']
|
8
8
|
s.email = 'yorickpeterse@gmail.com'
|
9
9
|
s.summary = 'Gem for easily creating your own RubyGems mirror.'
|
data/lib/gem-mirror/gem.rb
CHANGED
@@ -27,8 +27,14 @@ module GemMirror
|
|
27
27
|
# @param [Gem::Requirement] requirement
|
28
28
|
#
|
29
29
|
def initialize(name, requirement = nil)
|
30
|
+
requirement ||= ::Gem::Requirement.default
|
31
|
+
|
32
|
+
if requirement.is_a?(String)
|
33
|
+
requirement = ::Gem::Requirement.new(requirement)
|
34
|
+
end
|
35
|
+
|
30
36
|
@name = name
|
31
|
-
@requirement = requirement
|
37
|
+
@requirement = requirement
|
32
38
|
end
|
33
39
|
|
34
40
|
##
|
@@ -42,7 +48,7 @@ module GemMirror
|
|
42
48
|
# @return [TrueClass|FalseClass]
|
43
49
|
#
|
44
50
|
def has_version?
|
45
|
-
return version && version
|
51
|
+
return version && !version.segments.reject { |s| s == 0 }.empty?
|
46
52
|
end
|
47
53
|
|
48
54
|
##
|
@@ -25,13 +25,7 @@ module GemMirror
|
|
25
25
|
#
|
26
26
|
def fetch
|
27
27
|
source.gems.each do |gem|
|
28
|
-
|
29
|
-
versions = [gem.version]
|
30
|
-
else
|
31
|
-
versions = versions_file.versions_for(gem.name)
|
32
|
-
end
|
33
|
-
|
34
|
-
versions.each do |version|
|
28
|
+
versions_for(gem).each do |version|
|
35
29
|
filename = gem.filename(version)
|
36
30
|
satisfied = gem.requirement.satisfied_by?(version)
|
37
31
|
name = gem.name
|
@@ -68,6 +62,30 @@ module GemMirror
|
|
68
62
|
end
|
69
63
|
end
|
70
64
|
|
65
|
+
##
|
66
|
+
# Returns an Array containing the versions that should be fetched for a
|
67
|
+
# Gem.
|
68
|
+
#
|
69
|
+
# @param [GemMirror::Gem] gem
|
70
|
+
# @return [Array]
|
71
|
+
#
|
72
|
+
def versions_for(gem)
|
73
|
+
available = versions_file.versions_for(gem.name)
|
74
|
+
versions = gem.has_version? ? [gem.version] : available
|
75
|
+
available_names = available.map(&:to_s)
|
76
|
+
|
77
|
+
# Get rid of invalid versions. Due to Gem::Version having a custom ==
|
78
|
+
# method, which treats "3.4" the same as "3.4.0" we'll have to compare
|
79
|
+
# the versions as String instances.
|
80
|
+
versions = versions.select do |version|
|
81
|
+
available_names.include?(version.to_s)
|
82
|
+
end
|
83
|
+
|
84
|
+
versions = [available.last] if versions.empty?
|
85
|
+
|
86
|
+
return versions
|
87
|
+
end
|
88
|
+
|
71
89
|
##
|
72
90
|
# Tries to download the specification for a Gem and version. This method
|
73
91
|
# returns the raw inflated data instead of an instance of
|
@@ -150,10 +168,23 @@ module GemMirror
|
|
150
168
|
# @return [Array]
|
151
169
|
#
|
152
170
|
def dependencies_for(spec)
|
153
|
-
dependencies = []
|
154
171
|
possible_dependencies = configuration.development ? spec.dependencies \
|
155
172
|
: spec.runtime_dependencies
|
156
173
|
|
174
|
+
dependencies = filter_dependencies(possible_dependencies)
|
175
|
+
|
176
|
+
return assign_gem_versions(dependencies)
|
177
|
+
end
|
178
|
+
|
179
|
+
##
|
180
|
+
# Filters a list of dependencies based on whether or not they are ignored.
|
181
|
+
#
|
182
|
+
# @param [Array] possible_dependencies
|
183
|
+
# @return [Array]
|
184
|
+
#
|
185
|
+
def filter_dependencies(possible_dependencies)
|
186
|
+
dependencies = []
|
187
|
+
|
157
188
|
possible_dependencies.each do |dependency|
|
158
189
|
gem = Gem.new(dependency.name, dependency.requirement)
|
159
190
|
|
@@ -165,6 +196,26 @@ module GemMirror
|
|
165
196
|
return dependencies
|
166
197
|
end
|
167
198
|
|
199
|
+
##
|
200
|
+
# Processes a list of Gems and sets their versions to the latest one
|
201
|
+
# available in case no specific version is given.
|
202
|
+
#
|
203
|
+
# @param [Array] gems
|
204
|
+
# @return [Array]
|
205
|
+
#
|
206
|
+
def assign_gem_versions(gems)
|
207
|
+
gems = gems.map do |gem|
|
208
|
+
unless gem.has_version?
|
209
|
+
latest = versions_file.versions_for(gem.name).last
|
210
|
+
gem = Gem.new(gem.name, latest.to_s) if latest
|
211
|
+
end
|
212
|
+
|
213
|
+
gem
|
214
|
+
end
|
215
|
+
|
216
|
+
return gems
|
217
|
+
end
|
218
|
+
|
168
219
|
##
|
169
220
|
# @see GemMirror::Configuration#logger
|
170
221
|
# @return [Logger]
|
data/lib/gem-mirror/source.rb
CHANGED
data/lib/gem-mirror/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gem-mirror
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.4
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-02-
|
12
|
+
date: 2012-02-04 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: slop
|