bundler 2.2.2 → 2.2.7

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.
Files changed (68) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +67 -2
  3. data/bundler.gemspec +1 -1
  4. data/lib/bundler.rb +3 -7
  5. data/lib/bundler/build_metadata.rb +2 -2
  6. data/lib/bundler/cli.rb +2 -5
  7. data/lib/bundler/cli/cache.rb +1 -0
  8. data/lib/bundler/cli/gem.rb +2 -0
  9. data/lib/bundler/cli/update.rb +1 -1
  10. data/lib/bundler/compact_index_client/cache.rb +5 -13
  11. data/lib/bundler/compact_index_client/gem_parser.rb +28 -0
  12. data/lib/bundler/compact_index_client/updater.rb +0 -8
  13. data/lib/bundler/definition.rb +29 -21
  14. data/lib/bundler/dep_proxy.rb +15 -8
  15. data/lib/bundler/feature_flag.rb +0 -1
  16. data/lib/bundler/fetcher.rb +0 -1
  17. data/lib/bundler/gem_helper.rb +9 -7
  18. data/lib/bundler/gem_helpers.rb +30 -24
  19. data/lib/bundler/gem_version_promoter.rb +2 -2
  20. data/lib/bundler/installer.rb +0 -17
  21. data/lib/bundler/installer/standalone.rb +14 -0
  22. data/lib/bundler/lazy_specification.rb +10 -11
  23. data/{man → lib/bundler/man}/bundle-add.1 +1 -1
  24. data/{man → lib/bundler/man}/bundle-binstubs.1 +1 -1
  25. data/{man → lib/bundler/man}/bundle-cache.1 +1 -1
  26. data/{man → lib/bundler/man}/bundle-check.1 +1 -1
  27. data/{man → lib/bundler/man}/bundle-clean.1 +1 -1
  28. data/{man → lib/bundler/man}/bundle-config.1 +4 -4
  29. data/lib/bundler/man/bundle-config.1.ronn +3 -3
  30. data/{man → lib/bundler/man}/bundle-doctor.1 +1 -1
  31. data/{man → lib/bundler/man}/bundle-exec.1 +1 -1
  32. data/{man → lib/bundler/man}/bundle-gem.1 +1 -1
  33. data/{man → lib/bundler/man}/bundle-info.1 +1 -1
  34. data/{man → lib/bundler/man}/bundle-init.1 +1 -1
  35. data/{man → lib/bundler/man}/bundle-inject.1 +1 -1
  36. data/{man → lib/bundler/man}/bundle-install.1 +1 -1
  37. data/{man → lib/bundler/man}/bundle-list.1 +1 -1
  38. data/{man → lib/bundler/man}/bundle-lock.1 +1 -1
  39. data/{man → lib/bundler/man}/bundle-open.1 +1 -1
  40. data/{man → lib/bundler/man}/bundle-outdated.1 +1 -1
  41. data/{man → lib/bundler/man}/bundle-platform.1 +1 -1
  42. data/{man → lib/bundler/man}/bundle-pristine.1 +1 -1
  43. data/{man → lib/bundler/man}/bundle-remove.1 +1 -1
  44. data/{man → lib/bundler/man}/bundle-show.1 +1 -1
  45. data/{man → lib/bundler/man}/bundle-update.1 +1 -1
  46. data/{man → lib/bundler/man}/bundle-viz.1 +1 -1
  47. data/{man → lib/bundler/man}/bundle.1 +1 -1
  48. data/{man → lib/bundler/man}/gemfile.5 +1 -1
  49. data/{man → lib/bundler/man}/index.txt +0 -0
  50. data/lib/bundler/resolver.rb +36 -16
  51. data/lib/bundler/resolver/spec_group.rb +18 -23
  52. data/lib/bundler/rubygems_ext.rb +16 -0
  53. data/lib/bundler/rubygems_integration.rb +0 -5
  54. data/lib/bundler/settings.rb +1 -1
  55. data/lib/bundler/source/git.rb +19 -17
  56. data/lib/bundler/source/git/git_proxy.rb +54 -49
  57. data/lib/bundler/source/path/installer.rb +2 -0
  58. data/lib/bundler/source/rubygems.rb +10 -2
  59. data/lib/bundler/spec_set.rb +6 -9
  60. data/lib/bundler/templates/newgem/Gemfile.tt +1 -1
  61. data/lib/bundler/templates/newgem/newgem.gemspec.tt +1 -1
  62. data/lib/bundler/templates/newgem/rubocop.yml.tt +3 -0
  63. data/lib/bundler/vendor/molinillo/lib/molinillo/delegates/specification_provider.rb +7 -0
  64. data/lib/bundler/vendor/molinillo/lib/molinillo/errors.rb +1 -1
  65. data/lib/bundler/vendor/molinillo/lib/molinillo/modules/specification_provider.rb +11 -0
  66. data/lib/bundler/vendor/molinillo/lib/molinillo/resolution.rb +11 -7
  67. data/lib/bundler/version.rb +1 -1
  68. metadata +30 -29
@@ -1,5 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require_relative "../../rubygems_gem_installer"
4
+
3
5
  module Bundler
4
6
  class Source
5
7
  class Path
@@ -145,6 +145,8 @@ module Bundler
145
145
 
146
146
  Bundler.mkdir_p bin_path, :no_sudo => true unless spec.executables.empty? || Bundler.rubygems.provides?(">= 2.7.5")
147
147
 
148
+ require_relative "../rubygems_gem_installer"
149
+
148
150
  installed_spec = Bundler::RubyGemsGemInstaller.at(
149
151
  path,
150
152
  :install_dir => install_path.to_s,
@@ -351,7 +353,6 @@ module Bundler
351
353
  def installed_specs
352
354
  @installed_specs ||= Index.build do |idx|
353
355
  Bundler.rubygems.all_specs.reverse_each do |spec|
354
- next if spec.name == "bundler"
355
356
  spec.source = self
356
357
  if Bundler.rubygems.spec_missing_extensions?(spec, false)
357
358
  Bundler.ui.debug "Source #{self} is ignoring #{spec} because it is missing extensions"
@@ -487,8 +488,15 @@ module Bundler
487
488
  uri = spec.remote.uri
488
489
  Bundler.ui.confirm("Fetching #{version_message(spec)}")
489
490
  rubygems_local_path = Bundler.rubygems.download_gem(spec, uri, download_path)
491
+
492
+ # older rubygems return varying file:// variants depending on version
493
+ rubygems_local_path = rubygems_local_path.gsub(/\Afile:/, "") unless Bundler.rubygems.provides?(">= 3.2.0.rc.2")
494
+ rubygems_local_path = rubygems_local_path.gsub(%r{\A//}, "") if Bundler.rubygems.provides?("< 3.1.0")
495
+
490
496
  if rubygems_local_path != local_path
491
- FileUtils.mv(rubygems_local_path, local_path)
497
+ SharedHelpers.filesystem_access(local_path) do
498
+ FileUtils.mv(rubygems_local_path, local_path)
499
+ end
492
500
  end
493
501
  cache_globally(spec, local_path)
494
502
  end
@@ -22,12 +22,13 @@ module Bundler
22
22
  break unless dep = deps.shift
23
23
  next if !handled.add?(dep) || skip.include?(dep.name)
24
24
 
25
- if spec = spec_for_dependency(dep, match_current_platform)
26
- specs << spec
25
+ specs_for_dep = spec_for_dependency(dep, match_current_platform)
26
+ if specs_for_dep.any?
27
+ specs += specs_for_dep
27
28
 
28
- spec.dependencies.each do |d|
29
+ specs_for_dep.first.dependencies.each do |d|
29
30
  next if d.type == :development
30
- d = DepProxy.new(d, dep.__platform) unless match_current_platform
31
+ d = DepProxy.get_proxy(d, dep.__platform) unless match_current_platform
31
32
  deps << d
32
33
  end
33
34
  elsif check
@@ -184,11 +185,7 @@ module Bundler
184
185
  def spec_for_dependency(dep, match_current_platform)
185
186
  specs_for_platforms = lookup[dep.name]
186
187
  if match_current_platform
187
- Bundler.rubygems.platforms.reverse_each do |pl|
188
- match = GemHelpers.select_best_platform_match(specs_for_platforms, pl)
189
- return match if match
190
- end
191
- nil
188
+ GemHelpers.select_best_platform_match(specs_for_platforms, Bundler.local_platform)
192
189
  else
193
190
  GemHelpers.select_best_platform_match(specs_for_platforms, dep.__platform)
194
191
  end
@@ -16,5 +16,5 @@ gem "<%= config[:test] %>", "~> <%= config[:test_framework_version] %>"
16
16
  <%- end -%>
17
17
  <%- if config[:rubocop] -%>
18
18
 
19
- gem "rubocop", "~> 0.80"
19
+ gem "rubocop", "~> <%= config[:rubocop_version] %>"
20
20
  <%- end -%>
@@ -14,7 +14,7 @@ Gem::Specification.new do |spec|
14
14
  <%- if config[:mit] -%>
15
15
  spec.license = "MIT"
16
16
  <%- end -%>
17
- spec.required_ruby_version = Gem::Requirement.new(">= 2.3.0")
17
+ spec.required_ruby_version = Gem::Requirement.new(">= <%= config[:required_ruby_version] %>")
18
18
 
19
19
  spec.metadata["allowed_push_host"] = "TODO: Set to 'http://mygemserver.com'"
20
20
 
@@ -1,3 +1,6 @@
1
+ AllCops:
2
+ TargetRubyVersion: <%= ::Gem::Version.new(config[:required_ruby_version]).segments[0..1].join(".") %>
3
+
1
4
  Style/StringLiterals:
2
5
  Enabled: true
3
6
  EnforcedStyle: double_quotes
@@ -26,6 +26,13 @@ module Bundler::Molinillo
26
26
  end
27
27
  end
28
28
 
29
+ # (see Bundler::Molinillo::SpecificationProvider#dependencies_equal?)
30
+ def dependencies_equal?(dependencies, other_dependencies)
31
+ with_no_such_dependency_error_handling do
32
+ specification_provider.dependencies_equal?(dependencies, other_dependencies)
33
+ end
34
+ end
35
+
29
36
  # (see Bundler::Molinillo::SpecificationProvider#name_for)
30
37
  def name_for(dependency)
31
38
  with_no_such_dependency_error_handling do
@@ -121,7 +121,7 @@ module Bundler::Molinillo
121
121
  t = ''.dup
122
122
  depth = 2
123
123
  tree.each do |req|
124
- t << ' ' * depth << req.to_s
124
+ t << ' ' * depth << printable_requirement.call(req)
125
125
  unless tree.last == req
126
126
  if spec = conflict.activated_by_name[name_for(req)]
127
127
  t << %( was resolved to #{version_for_spec.call(spec)}, which)
@@ -45,6 +45,17 @@ module Bundler::Molinillo
45
45
  true
46
46
  end
47
47
 
48
+ # Determines whether two arrays of dependencies are equal, and thus can be
49
+ # grouped.
50
+ #
51
+ # @param [Array<Object>] dependencies
52
+ # @param [Array<Object>] other_dependencies
53
+ # @return [Boolean] whether `dependencies` and `other_dependencies` should
54
+ # be considered equal.
55
+ def dependencies_equal?(dependencies, other_dependencies)
56
+ dependencies == other_dependencies
57
+ end
58
+
48
59
  # Returns the name for the given `dependency`.
49
60
  # @note This method should be 'pure', i.e. the return value should depend
50
61
  # only on the `dependency` parameter.
@@ -329,11 +329,11 @@ module Bundler::Molinillo
329
329
 
330
330
  # Look for past conflicts that could be unwound to affect the
331
331
  # requirement tree for the current conflict
332
+ all_reqs = last_detail_for_current_unwind.all_requirements
333
+ all_reqs_size = all_reqs.size
332
334
  relevant_unused_unwinds = unused_unwind_options.select do |alternative|
333
- intersecting_requirements =
334
- last_detail_for_current_unwind.all_requirements &
335
- alternative.requirements_unwound_to_instead
336
- next if intersecting_requirements.empty?
335
+ diff_reqs = all_reqs - alternative.requirements_unwound_to_instead
336
+ next if diff_reqs.size == all_reqs_size
337
337
  # Find the highest index unwind whilst looping through
338
338
  current_detail = alternative if alternative > current_detail
339
339
  alternative
@@ -344,8 +344,12 @@ module Bundler::Molinillo
344
344
  state.unused_unwind_options += unwind_details.reject { |detail| detail.state_index == -1 }
345
345
 
346
346
  # Update the requirements_unwound_to_instead on any relevant unused unwinds
347
- relevant_unused_unwinds.each { |d| d.requirements_unwound_to_instead << current_detail.state_requirement }
348
- unwind_details.each { |d| d.requirements_unwound_to_instead << current_detail.state_requirement }
347
+ relevant_unused_unwinds.each do |d|
348
+ (d.requirements_unwound_to_instead << current_detail.state_requirement).uniq!
349
+ end
350
+ unwind_details.each do |d|
351
+ (d.requirements_unwound_to_instead << current_detail.state_requirement).uniq!
352
+ end
349
353
 
350
354
  current_detail
351
355
  end
@@ -803,7 +807,7 @@ module Bundler::Molinillo
803
807
 
804
808
  possibilities.reverse_each do |possibility|
805
809
  dependencies = dependencies_for(possibility)
806
- if current_possibility_set && current_possibility_set.dependencies == dependencies
810
+ if current_possibility_set && dependencies_equal?(current_possibility_set.dependencies, dependencies)
807
811
  current_possibility_set.possibilities.unshift(possibility)
808
812
  else
809
813
  possibility_sets.unshift(PossibilitySet.new(dependencies, [possibility]))
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: false
2
2
 
3
3
  module Bundler
4
- VERSION = "2.2.2".freeze
4
+ VERSION = "2.2.7".freeze
5
5
 
6
6
  def self.bundler_major_version
7
7
  @bundler_major_version ||= VERSION.split(".").first.to_i
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bundler
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.2.2
4
+ version: 2.2.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - André Arko
@@ -22,7 +22,7 @@ authors:
22
22
  autorequire:
23
23
  bindir: exe
24
24
  cert_chain: []
25
- date: 2020-12-17 00:00:00.000000000 Z
25
+ date: 2021-01-27 00:00:00.000000000 Z
26
26
  dependencies: []
27
27
  description: Bundler manages an application's dependencies through its entire life,
28
28
  across many machines, systematically and repeatably
@@ -74,6 +74,7 @@ files:
74
74
  - lib/bundler/cli/viz.rb
75
75
  - lib/bundler/compact_index_client.rb
76
76
  - lib/bundler/compact_index_client/cache.rb
77
+ - lib/bundler/compact_index_client/gem_parser.rb
77
78
  - lib/bundler/compact_index_client/updater.rb
78
79
  - lib/bundler/constants.rb
79
80
  - lib/bundler/current_ruby.rb
@@ -112,31 +113,57 @@ files:
112
113
  - lib/bundler/lockfile_generator.rb
113
114
  - lib/bundler/lockfile_parser.rb
114
115
  - lib/bundler/man/.document
116
+ - lib/bundler/man/bundle-add.1
115
117
  - lib/bundler/man/bundle-add.1.ronn
118
+ - lib/bundler/man/bundle-binstubs.1
116
119
  - lib/bundler/man/bundle-binstubs.1.ronn
120
+ - lib/bundler/man/bundle-cache.1
117
121
  - lib/bundler/man/bundle-cache.1.ronn
122
+ - lib/bundler/man/bundle-check.1
118
123
  - lib/bundler/man/bundle-check.1.ronn
124
+ - lib/bundler/man/bundle-clean.1
119
125
  - lib/bundler/man/bundle-clean.1.ronn
126
+ - lib/bundler/man/bundle-config.1
120
127
  - lib/bundler/man/bundle-config.1.ronn
128
+ - lib/bundler/man/bundle-doctor.1
121
129
  - lib/bundler/man/bundle-doctor.1.ronn
130
+ - lib/bundler/man/bundle-exec.1
122
131
  - lib/bundler/man/bundle-exec.1.ronn
132
+ - lib/bundler/man/bundle-gem.1
123
133
  - lib/bundler/man/bundle-gem.1.ronn
134
+ - lib/bundler/man/bundle-info.1
124
135
  - lib/bundler/man/bundle-info.1.ronn
136
+ - lib/bundler/man/bundle-init.1
125
137
  - lib/bundler/man/bundle-init.1.ronn
138
+ - lib/bundler/man/bundle-inject.1
126
139
  - lib/bundler/man/bundle-inject.1.ronn
140
+ - lib/bundler/man/bundle-install.1
127
141
  - lib/bundler/man/bundle-install.1.ronn
142
+ - lib/bundler/man/bundle-list.1
128
143
  - lib/bundler/man/bundle-list.1.ronn
144
+ - lib/bundler/man/bundle-lock.1
129
145
  - lib/bundler/man/bundle-lock.1.ronn
146
+ - lib/bundler/man/bundle-open.1
130
147
  - lib/bundler/man/bundle-open.1.ronn
148
+ - lib/bundler/man/bundle-outdated.1
131
149
  - lib/bundler/man/bundle-outdated.1.ronn
150
+ - lib/bundler/man/bundle-platform.1
132
151
  - lib/bundler/man/bundle-platform.1.ronn
152
+ - lib/bundler/man/bundle-pristine.1
133
153
  - lib/bundler/man/bundle-pristine.1.ronn
154
+ - lib/bundler/man/bundle-remove.1
134
155
  - lib/bundler/man/bundle-remove.1.ronn
156
+ - lib/bundler/man/bundle-show.1
135
157
  - lib/bundler/man/bundle-show.1.ronn
158
+ - lib/bundler/man/bundle-update.1
136
159
  - lib/bundler/man/bundle-update.1.ronn
160
+ - lib/bundler/man/bundle-viz.1
137
161
  - lib/bundler/man/bundle-viz.1.ronn
162
+ - lib/bundler/man/bundle.1
138
163
  - lib/bundler/man/bundle.1.ronn
164
+ - lib/bundler/man/gemfile.5
139
165
  - lib/bundler/man/gemfile.5.ronn
166
+ - lib/bundler/man/index.txt
140
167
  - lib/bundler/match_platform.rb
141
168
  - lib/bundler/mirror.rb
142
169
  - lib/bundler/plugin.rb
@@ -301,32 +328,6 @@ files:
301
328
  - lib/bundler/vlad.rb
302
329
  - lib/bundler/worker.rb
303
330
  - lib/bundler/yaml_serializer.rb
304
- - man/bundle-add.1
305
- - man/bundle-binstubs.1
306
- - man/bundle-cache.1
307
- - man/bundle-check.1
308
- - man/bundle-clean.1
309
- - man/bundle-config.1
310
- - man/bundle-doctor.1
311
- - man/bundle-exec.1
312
- - man/bundle-gem.1
313
- - man/bundle-info.1
314
- - man/bundle-init.1
315
- - man/bundle-inject.1
316
- - man/bundle-install.1
317
- - man/bundle-list.1
318
- - man/bundle-lock.1
319
- - man/bundle-open.1
320
- - man/bundle-outdated.1
321
- - man/bundle-platform.1
322
- - man/bundle-pristine.1
323
- - man/bundle-remove.1
324
- - man/bundle-show.1
325
- - man/bundle-update.1
326
- - man/bundle-viz.1
327
- - man/bundle.1
328
- - man/gemfile.5
329
- - man/index.txt
330
331
  homepage: https://bundler.io
331
332
  licenses:
332
333
  - MIT
@@ -350,7 +351,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
350
351
  - !ruby/object:Gem::Version
351
352
  version: 2.5.2
352
353
  requirements: []
353
- rubygems_version: 3.2.1
354
+ rubygems_version: 3.2.7
354
355
  signing_key:
355
356
  specification_version: 4
356
357
  summary: The best way to manage your application's dependencies