gem-mirror 0.0.3 → 0.0.4
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/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
|