bundler 2.6.9 → 2.7.0
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 +4 -4
- data/CHANGELOG.md +1093 -1033
- data/README.md +7 -7
- data/bundler.gemspec +2 -2
- data/lib/bundler/build_metadata.rb +10 -11
- data/lib/bundler/cli/common.rb +1 -1
- data/lib/bundler/cli/config.rb +2 -2
- data/lib/bundler/cli/gem.rb +62 -30
- data/lib/bundler/cli/install.rb +4 -4
- data/lib/bundler/cli/outdated.rb +1 -1
- data/lib/bundler/cli/update.rb +2 -2
- data/lib/bundler/cli.rb +10 -14
- data/lib/bundler/compact_index_client.rb +1 -5
- data/lib/bundler/current_ruby.rb +27 -3
- data/lib/bundler/definition.rb +21 -22
- data/lib/bundler/dependency.rb +1 -1
- data/lib/bundler/dsl.rb +33 -23
- data/lib/bundler/feature_flag.rb +15 -12
- data/lib/bundler/fetcher/dependency.rb +2 -1
- data/lib/bundler/fetcher/downloader.rb +33 -7
- data/lib/bundler/fetcher.rb +49 -19
- data/lib/bundler/friendly_errors.rb +2 -1
- data/lib/bundler/index.rb +7 -2
- data/lib/bundler/installer.rb +5 -4
- data/lib/bundler/lazy_specification.rb +9 -7
- data/lib/bundler/lockfile_parser.rb +21 -5
- data/lib/bundler/man/bundle-add.1 +1 -1
- data/lib/bundler/man/bundle-binstubs.1 +1 -1
- data/lib/bundler/man/bundle-cache.1 +1 -1
- data/lib/bundler/man/bundle-check.1 +1 -1
- data/lib/bundler/man/bundle-clean.1 +1 -1
- data/lib/bundler/man/bundle-config.1 +172 -126
- data/lib/bundler/man/bundle-config.1.ronn +91 -91
- data/lib/bundler/man/bundle-console.1 +1 -1
- data/lib/bundler/man/bundle-doctor.1 +43 -4
- data/lib/bundler/man/bundle-doctor.1.ronn +48 -4
- data/lib/bundler/man/bundle-env.1 +1 -1
- data/lib/bundler/man/bundle-exec.1 +1 -1
- data/lib/bundler/man/bundle-fund.1 +1 -1
- data/lib/bundler/man/bundle-gem.1 +67 -44
- data/lib/bundler/man/bundle-gem.1.ronn +8 -4
- data/lib/bundler/man/bundle-help.1 +1 -1
- data/lib/bundler/man/bundle-info.1 +1 -1
- data/lib/bundler/man/bundle-init.1 +1 -1
- data/lib/bundler/man/bundle-inject.1 +2 -2
- data/lib/bundler/man/bundle-inject.1.ronn +1 -1
- data/lib/bundler/man/bundle-install.1 +1 -1
- data/lib/bundler/man/bundle-issue.1 +1 -1
- data/lib/bundler/man/bundle-licenses.1 +1 -1
- data/lib/bundler/man/bundle-list.1 +1 -1
- data/lib/bundler/man/bundle-lock.1 +1 -1
- data/lib/bundler/man/bundle-open.1 +1 -1
- data/lib/bundler/man/bundle-outdated.1 +1 -1
- data/lib/bundler/man/bundle-platform.1 +1 -1
- data/lib/bundler/man/bundle-plugin.1 +1 -1
- data/lib/bundler/man/bundle-pristine.1 +1 -1
- data/lib/bundler/man/bundle-remove.1 +1 -1
- data/lib/bundler/man/bundle-show.1 +1 -1
- data/lib/bundler/man/bundle-update.1 +1 -1
- data/lib/bundler/man/bundle-version.1 +1 -1
- data/lib/bundler/man/bundle-viz.1 +1 -1
- data/lib/bundler/man/bundle.1 +1 -1
- data/lib/bundler/man/gemfile.5 +1 -1
- data/lib/bundler/match_platform.rb +31 -12
- data/lib/bundler/materialization.rb +2 -2
- data/lib/bundler/resolver/package.rb +1 -1
- data/lib/bundler/resolver.rb +1 -3
- data/lib/bundler/rubygems_ext.rb +116 -120
- data/lib/bundler/rubygems_integration.rb +11 -6
- data/lib/bundler/runtime.rb +1 -1
- data/lib/bundler/self_manager.rb +32 -42
- data/lib/bundler/settings/validator.rb +0 -23
- data/lib/bundler/settings.rb +4 -6
- data/lib/bundler/shared_helpers.rb +6 -4
- data/lib/bundler/source/git/git_proxy.rb +3 -3
- data/lib/bundler/source/path.rb +7 -0
- data/lib/bundler/source_list.rb +1 -5
- data/lib/bundler/source_map.rb +1 -1
- data/lib/bundler/spec_set.rb +7 -3
- data/lib/bundler/templates/Executable +0 -11
- data/lib/bundler/templates/newgem/github/workflows/main.yml.tt +2 -0
- data/lib/bundler/templates/newgem/newgem.gemspec.tt +6 -5
- data/lib/bundler/ui/shell.rb +2 -2
- data/lib/bundler/vendor/net-http-persistent/README.rdoc +1 -1
- data/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/timed_stack_multi.rb +2 -1
- data/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb +81 -42
- data/lib/bundler/version.rb +10 -2
- data/lib/bundler/worker.rb +1 -1
- data/lib/bundler.rb +14 -12
- metadata +4 -14
- data/lib/bundler/gem_helpers.rb +0 -144
- data/lib/bundler/templates/Executable.bundler +0 -109
- data/lib/bundler/vendor/connection_pool/.document +0 -1
- data/lib/bundler/vendor/fileutils/.document +0 -1
- data/lib/bundler/vendor/net-http-persistent/.document +0 -1
- data/lib/bundler/vendor/pub_grub/.document +0 -1
- data/lib/bundler/vendor/securerandom/.document +0 -1
- data/lib/bundler/vendor/thor/.document +0 -1
- data/lib/bundler/vendor/tsort/.document +0 -1
- data/lib/bundler/vendor/uri/.document +0 -1
data/lib/bundler/gem_helpers.rb
DELETED
@@ -1,144 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Bundler
|
4
|
-
module GemHelpers
|
5
|
-
GENERIC_CACHE = { Gem::Platform::RUBY => Gem::Platform::RUBY } # rubocop:disable Style/MutableConstant
|
6
|
-
GENERICS = [
|
7
|
-
Gem::Platform::JAVA,
|
8
|
-
*Gem::Platform::WINDOWS,
|
9
|
-
].freeze
|
10
|
-
|
11
|
-
def generic(p)
|
12
|
-
GENERIC_CACHE[p] ||= begin
|
13
|
-
found = GENERICS.find do |match|
|
14
|
-
p === match
|
15
|
-
end
|
16
|
-
found || Gem::Platform::RUBY
|
17
|
-
end
|
18
|
-
end
|
19
|
-
module_function :generic
|
20
|
-
|
21
|
-
def generic_local_platform
|
22
|
-
generic(local_platform)
|
23
|
-
end
|
24
|
-
module_function :generic_local_platform
|
25
|
-
|
26
|
-
def local_platform
|
27
|
-
Bundler.local_platform
|
28
|
-
end
|
29
|
-
module_function :local_platform
|
30
|
-
|
31
|
-
def generic_local_platform_is_ruby?
|
32
|
-
generic_local_platform == Gem::Platform::RUBY
|
33
|
-
end
|
34
|
-
module_function :generic_local_platform_is_ruby?
|
35
|
-
|
36
|
-
def platform_specificity_match(spec_platform, user_platform)
|
37
|
-
spec_platform = Gem::Platform.new(spec_platform)
|
38
|
-
|
39
|
-
PlatformMatch.specificity_score(spec_platform, user_platform)
|
40
|
-
end
|
41
|
-
module_function :platform_specificity_match
|
42
|
-
|
43
|
-
def select_all_platform_match(specs, platform, force_ruby: false, prefer_locked: false)
|
44
|
-
matching = if force_ruby
|
45
|
-
specs.select {|spec| spec.match_platform(Gem::Platform::RUBY) && spec.force_ruby_platform! }
|
46
|
-
else
|
47
|
-
specs.select {|spec| spec.match_platform(platform) }
|
48
|
-
end
|
49
|
-
|
50
|
-
if prefer_locked
|
51
|
-
locked_originally = matching.select {|spec| spec.is_a?(LazySpecification) }
|
52
|
-
return locked_originally if locked_originally.any?
|
53
|
-
end
|
54
|
-
|
55
|
-
matching
|
56
|
-
end
|
57
|
-
module_function :select_all_platform_match
|
58
|
-
|
59
|
-
def select_best_platform_match(specs, platform, force_ruby: false, prefer_locked: false)
|
60
|
-
matching = select_all_platform_match(specs, platform, force_ruby: force_ruby, prefer_locked: prefer_locked)
|
61
|
-
|
62
|
-
sort_and_filter_best_platform_match(matching, platform)
|
63
|
-
end
|
64
|
-
module_function :select_best_platform_match
|
65
|
-
|
66
|
-
def select_best_local_platform_match(specs, force_ruby: false)
|
67
|
-
matching = select_all_platform_match(specs, local_platform, force_ruby: force_ruby).filter_map(&:materialized_for_installation)
|
68
|
-
|
69
|
-
sort_best_platform_match(matching, local_platform)
|
70
|
-
end
|
71
|
-
module_function :select_best_local_platform_match
|
72
|
-
|
73
|
-
def sort_and_filter_best_platform_match(matching, platform)
|
74
|
-
return matching if matching.one?
|
75
|
-
|
76
|
-
exact = matching.select {|spec| spec.platform == platform }
|
77
|
-
return exact if exact.any?
|
78
|
-
|
79
|
-
sorted_matching = sort_best_platform_match(matching, platform)
|
80
|
-
exemplary_spec = sorted_matching.first
|
81
|
-
|
82
|
-
sorted_matching.take_while {|spec| same_specificity(platform, spec, exemplary_spec) && same_deps(spec, exemplary_spec) }
|
83
|
-
end
|
84
|
-
module_function :sort_and_filter_best_platform_match
|
85
|
-
|
86
|
-
def sort_best_platform_match(matching, platform)
|
87
|
-
matching.sort_by {|spec| platform_specificity_match(spec.platform, platform) }
|
88
|
-
end
|
89
|
-
module_function :sort_best_platform_match
|
90
|
-
|
91
|
-
class PlatformMatch
|
92
|
-
def self.specificity_score(spec_platform, user_platform)
|
93
|
-
return -1 if spec_platform == user_platform
|
94
|
-
return 1_000_000 if spec_platform.nil? || spec_platform == Gem::Platform::RUBY || user_platform == Gem::Platform::RUBY
|
95
|
-
|
96
|
-
os_match(spec_platform, user_platform) +
|
97
|
-
cpu_match(spec_platform, user_platform) * 10 +
|
98
|
-
platform_version_match(spec_platform, user_platform) * 100
|
99
|
-
end
|
100
|
-
|
101
|
-
def self.os_match(spec_platform, user_platform)
|
102
|
-
if spec_platform.os == user_platform.os
|
103
|
-
0
|
104
|
-
else
|
105
|
-
1
|
106
|
-
end
|
107
|
-
end
|
108
|
-
|
109
|
-
def self.cpu_match(spec_platform, user_platform)
|
110
|
-
if spec_platform.cpu == user_platform.cpu
|
111
|
-
0
|
112
|
-
elsif spec_platform.cpu == "arm" && user_platform.cpu.to_s.start_with?("arm")
|
113
|
-
0
|
114
|
-
elsif spec_platform.cpu.nil? || spec_platform.cpu == "universal"
|
115
|
-
1
|
116
|
-
else
|
117
|
-
2
|
118
|
-
end
|
119
|
-
end
|
120
|
-
|
121
|
-
def self.platform_version_match(spec_platform, user_platform)
|
122
|
-
if spec_platform.version == user_platform.version
|
123
|
-
0
|
124
|
-
elsif spec_platform.version.nil?
|
125
|
-
1
|
126
|
-
else
|
127
|
-
2
|
128
|
-
end
|
129
|
-
end
|
130
|
-
end
|
131
|
-
|
132
|
-
def same_specificity(platform, spec, exemplary_spec)
|
133
|
-
platform_specificity_match(spec.platform, platform) == platform_specificity_match(exemplary_spec.platform, platform)
|
134
|
-
end
|
135
|
-
module_function :same_specificity
|
136
|
-
|
137
|
-
def same_deps(spec, exemplary_spec)
|
138
|
-
same_runtime_deps = spec.dependencies.sort == exemplary_spec.dependencies.sort
|
139
|
-
same_metadata_deps = spec.required_ruby_version == exemplary_spec.required_ruby_version && spec.required_rubygems_version == exemplary_spec.required_rubygems_version
|
140
|
-
same_runtime_deps && same_metadata_deps
|
141
|
-
end
|
142
|
-
module_function :same_deps
|
143
|
-
end
|
144
|
-
end
|
@@ -1,109 +0,0 @@
|
|
1
|
-
#!/usr/bin/env <%= Bundler.settings[:shebang] || RbConfig::CONFIG["ruby_install_name"] %>
|
2
|
-
# frozen_string_literal: true
|
3
|
-
|
4
|
-
#
|
5
|
-
# This file was generated by Bundler.
|
6
|
-
#
|
7
|
-
# The application '<%= executable %>' is installed as part of a gem, and
|
8
|
-
# this file is here to facilitate running it.
|
9
|
-
#
|
10
|
-
|
11
|
-
require "rubygems"
|
12
|
-
|
13
|
-
m = Module.new do
|
14
|
-
module_function
|
15
|
-
|
16
|
-
def invoked_as_script?
|
17
|
-
File.expand_path($0) == File.expand_path(__FILE__)
|
18
|
-
end
|
19
|
-
|
20
|
-
def env_var_version
|
21
|
-
ENV["BUNDLER_VERSION"]
|
22
|
-
end
|
23
|
-
|
24
|
-
def cli_arg_version
|
25
|
-
return unless invoked_as_script? # don't want to hijack other binstubs
|
26
|
-
return unless "update".start_with?(ARGV.first || " ") # must be running `bundle update`
|
27
|
-
bundler_version = nil
|
28
|
-
update_index = nil
|
29
|
-
ARGV.each_with_index do |a, i|
|
30
|
-
if update_index && update_index.succ == i && a.match?(Gem::Version::ANCHORED_VERSION_PATTERN)
|
31
|
-
bundler_version = a
|
32
|
-
end
|
33
|
-
next unless a =~ /\A--bundler(?:[= ](#{Gem::Version::VERSION_PATTERN}))?\z/
|
34
|
-
bundler_version = $1
|
35
|
-
update_index = i
|
36
|
-
end
|
37
|
-
bundler_version
|
38
|
-
end
|
39
|
-
|
40
|
-
def gemfile
|
41
|
-
gemfile = ENV["BUNDLE_GEMFILE"]
|
42
|
-
return gemfile if gemfile && !gemfile.empty?
|
43
|
-
|
44
|
-
File.expand_path("<%= relative_gemfile_path %>", __dir__)
|
45
|
-
end
|
46
|
-
|
47
|
-
def lockfile
|
48
|
-
lockfile =
|
49
|
-
case File.basename(gemfile)
|
50
|
-
when "gems.rb" then gemfile.sub(/\.rb$/, ".locked")
|
51
|
-
else "#{gemfile}.lock"
|
52
|
-
end
|
53
|
-
File.expand_path(lockfile)
|
54
|
-
end
|
55
|
-
|
56
|
-
def lockfile_version
|
57
|
-
return unless File.file?(lockfile)
|
58
|
-
lockfile_contents = File.read(lockfile)
|
59
|
-
return unless lockfile_contents =~ /\n\nBUNDLED WITH\n\s{2,}(#{Gem::Version::VERSION_PATTERN})\n/
|
60
|
-
Regexp.last_match(1)
|
61
|
-
end
|
62
|
-
|
63
|
-
def bundler_requirement
|
64
|
-
@bundler_requirement ||=
|
65
|
-
env_var_version ||
|
66
|
-
cli_arg_version ||
|
67
|
-
bundler_requirement_for(lockfile_version)
|
68
|
-
end
|
69
|
-
|
70
|
-
def bundler_requirement_for(version)
|
71
|
-
return "#{Gem::Requirement.default}.a" unless version
|
72
|
-
|
73
|
-
bundler_gem_version = Gem::Version.new(version)
|
74
|
-
|
75
|
-
bundler_gem_version.approximate_recommendation
|
76
|
-
end
|
77
|
-
|
78
|
-
def load_bundler!
|
79
|
-
ENV["BUNDLE_GEMFILE"] ||= gemfile
|
80
|
-
|
81
|
-
activate_bundler
|
82
|
-
end
|
83
|
-
|
84
|
-
def activate_bundler
|
85
|
-
gem_error = activation_error_handling do
|
86
|
-
gem "bundler", bundler_requirement
|
87
|
-
end
|
88
|
-
return if gem_error.nil?
|
89
|
-
require_error = activation_error_handling do
|
90
|
-
require "bundler/version"
|
91
|
-
end
|
92
|
-
return if require_error.nil? && Gem::Requirement.new(bundler_requirement).satisfied_by?(Gem::Version.new(Bundler::VERSION))
|
93
|
-
warn "Activating bundler (#{bundler_requirement}) failed:\n#{gem_error.message}\n\nTo install the version of bundler this project requires, run `gem install bundler -v '#{bundler_requirement}'`"
|
94
|
-
exit 42
|
95
|
-
end
|
96
|
-
|
97
|
-
def activation_error_handling
|
98
|
-
yield
|
99
|
-
nil
|
100
|
-
rescue StandardError, LoadError => e
|
101
|
-
e
|
102
|
-
end
|
103
|
-
end
|
104
|
-
|
105
|
-
m.load_bundler!
|
106
|
-
|
107
|
-
if m.invoked_as_script?
|
108
|
-
load Gem.bin_path("<%= spec.name %>", "<%= executable %>")
|
109
|
-
end
|
@@ -1 +0,0 @@
|
|
1
|
-
# Vendored files do not need to be documented
|
@@ -1 +0,0 @@
|
|
1
|
-
# Vendored files do not need to be documented
|
@@ -1 +0,0 @@
|
|
1
|
-
# Vendored files do not need to be documented
|
@@ -1 +0,0 @@
|
|
1
|
-
# Vendored files do not need to be documented
|
@@ -1 +0,0 @@
|
|
1
|
-
# Vendored files do not need to be documented
|
@@ -1 +0,0 @@
|
|
1
|
-
# Vendored files do not need to be documented
|
@@ -1 +0,0 @@
|
|
1
|
-
# Vendored files do not need to be documented
|
@@ -1 +0,0 @@
|
|
1
|
-
# Vendored files do not need to be documented
|