matching_bundle 0.3.0 → 0.3.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/matching_bundle/version.rb +1 -1
- data/lib/matching_bundle.rb +17 -14
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 75b42c65b3ed9d76d2d79994f218157b871f23011063c4b438f485770427077d
|
4
|
+
data.tar.gz: bdecd14f3a4058096179c85512b81b500619b6daaf4efa18701271f237562265
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8653da4c7b788a4377371f88c57791016b937675088efbcf1f637d8de5d3b06c221a8668e7e29d7f0496be79fd5fbcfeae42fcc64637a904258a7cf844f76a47
|
7
|
+
data.tar.gz: 5bb8216afc6bc1a67dd718053933aac8bdc242baf97f8376ffbf075b32da6bfca1ad68c0df4c0da5ce1c602cfd8150c34ea81b1d8bb5950520326d94d7fb358d
|
data/lib/matching_bundle.rb
CHANGED
@@ -5,14 +5,15 @@ require 'json'
|
|
5
5
|
module MatchingBundle
|
6
6
|
class << self
|
7
7
|
def find_or_install_matching_version(gemfile_content)
|
8
|
-
|
8
|
+
requirements = bundler_requirements(gemfile_content)
|
9
|
+
return if requirements.empty?
|
9
10
|
|
10
|
-
if version = find_matching_local_bundler_version(
|
11
|
+
if version = find_matching_local_bundler_version(requirements)
|
11
12
|
warn "Found bundler #{version}"
|
12
13
|
return version
|
13
14
|
end
|
14
15
|
|
15
|
-
return unless version = find_matching_remote_bundler_version(
|
16
|
+
return unless version = find_matching_remote_bundler_version(requirements)
|
16
17
|
|
17
18
|
warn "Installing bundler #{version}"
|
18
19
|
abort unless system "gem", "install", "bundler", "-v", version
|
@@ -21,19 +22,19 @@ module MatchingBundle
|
|
21
22
|
|
22
23
|
private
|
23
24
|
|
24
|
-
def find_matching_remote_bundler_version(
|
25
|
+
def find_matching_remote_bundler_version(requirements)
|
25
26
|
json = open('https://rubygems.org/api/v1/versions/bundler.json').read
|
26
27
|
versions = JSON.load(json).map { |v| v["number"] }
|
27
|
-
find_satisfied(
|
28
|
+
find_satisfied(requirements, versions)
|
28
29
|
end
|
29
30
|
|
30
|
-
def find_matching_local_bundler_version(
|
31
|
-
find_satisfied(
|
31
|
+
def find_matching_local_bundler_version(requirements)
|
32
|
+
find_satisfied(requirements, installed_bundler_versions)
|
32
33
|
end
|
33
34
|
|
34
|
-
def find_satisfied(
|
35
|
-
requirement = Gem::Requirement.new(
|
36
|
-
versions.find do |version|
|
35
|
+
def find_satisfied(requirements, versions)
|
36
|
+
requirement = Gem::Requirement.new(*requirements)
|
37
|
+
versions.reverse.find do |version|
|
37
38
|
requirement.satisfied_by? Gem::Version.new(version)
|
38
39
|
end
|
39
40
|
end
|
@@ -44,10 +45,12 @@ module MatchingBundle
|
|
44
45
|
map { |spec| spec.version.to_s }
|
45
46
|
end
|
46
47
|
|
47
|
-
def
|
48
|
-
|
49
|
-
|
50
|
-
|
48
|
+
def bundler_requirements(gemfile_content)
|
49
|
+
gemfile_content.
|
50
|
+
split("DEPENDENCIES").last.to_s.
|
51
|
+
split("Current Bundler version").first.to_s.
|
52
|
+
scan(/^\s*bundler \((.*)\)/).flatten.
|
53
|
+
flat_map { |r| r.split(", ") }
|
51
54
|
end
|
52
55
|
end
|
53
56
|
end
|