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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 30269020c86fa6f75cb9f79d2dc1bc1aedffc0825f1e847e31910226d173b0ba
4
- data.tar.gz: 2ccdaa16e32999bd55be285cb831f6430848970e1c6ceef7a1049101fa8364f4
3
+ metadata.gz: 75b42c65b3ed9d76d2d79994f218157b871f23011063c4b438f485770427077d
4
+ data.tar.gz: bdecd14f3a4058096179c85512b81b500619b6daaf4efa18701271f237562265
5
5
  SHA512:
6
- metadata.gz: 40a048bb2e8e6b7d8b05346a03d7d6eed6f7c2ad636e845e2b919f99286793661e7fd83626b9048eeeab7cadb2810c78cf40e26c9a47816abdd86357a8f494ad
7
- data.tar.gz: 7f9afbb816f26e7a10be12bd953453b15f93c36999e95e7b536a4c5d43937593c0811a90d70f35e82e08e81e46a915bfcdcea1261f8ad5dbb2da89293aa5853e
6
+ metadata.gz: 8653da4c7b788a4377371f88c57791016b937675088efbcf1f637d8de5d3b06c221a8668e7e29d7f0496be79fd5fbcfeae42fcc64637a904258a7cf844f76a47
7
+ data.tar.gz: 5bb8216afc6bc1a67dd718053933aac8bdc242baf97f8376ffbf075b32da6bfca1ad68c0df4c0da5ce1c602cfd8150c34ea81b1d8bb5950520326d94d7fb358d
@@ -1,4 +1,4 @@
1
1
  # frozen_string_literal: true
2
2
  module MatchingBundle
3
- VERSION = "0.3.0"
3
+ VERSION = "0.3.1"
4
4
  end
@@ -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
- return unless requirement = bundler_requirement(gemfile_content)
8
+ requirements = bundler_requirements(gemfile_content)
9
+ return if requirements.empty?
9
10
 
10
- if version = find_matching_local_bundler_version(requirement)
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(requirement)
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(requirement)
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(requirement, versions)
28
+ find_satisfied(requirements, versions)
28
29
  end
29
30
 
30
- def find_matching_local_bundler_version(requirement)
31
- find_satisfied(requirement, installed_bundler_versions)
31
+ def find_matching_local_bundler_version(requirements)
32
+ find_satisfied(requirements, installed_bundler_versions)
32
33
  end
33
34
 
34
- def find_satisfied(requirement, versions)
35
- requirement = Gem::Requirement.new(requirement)
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 bundler_requirement(gemfile_content)
48
- found = gemfile_content.scan(/^\s*bundler \((.*)\)/)
49
- versions = found.map(&:last)
50
- versions.grep(/^=\s*\d/).first || versions.first
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
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: matching_bundle
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.3.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Michael Grosser