matching_bundle 0.3.0 → 0.3.1

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.
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