bundler 2.5.5 → 2.5.6
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 +15 -0
- data/lib/bundler/build_metadata.rb +2 -2
- data/lib/bundler/cli/gem.rb +1 -1
- data/lib/bundler/cli/lock.rb +5 -4
- data/lib/bundler/cli.rb +1 -1
- data/lib/bundler/definition.rb +54 -28
- data/lib/bundler/environment_preserver.rb +3 -3
- data/lib/bundler/fetcher/downloader.rb +1 -1
- data/lib/bundler/fetcher.rb +2 -2
- data/lib/bundler/injector.rb +1 -1
- data/lib/bundler/installer.rb +2 -2
- data/lib/bundler/mirror.rb +3 -3
- data/lib/bundler/plugin/api/source.rb +2 -2
- data/lib/bundler/runtime.rb +1 -1
- data/lib/bundler/settings.rb +4 -4
- data/lib/bundler/source/git/git_proxy.rb +1 -1
- data/lib/bundler/source/git.rb +1 -1
- data/lib/bundler/source/rubygems/remote.rb +1 -1
- data/lib/bundler/source/rubygems.rb +2 -2
- data/lib/bundler/spec_set.rb +1 -1
- data/lib/bundler/uri_credentials_filter.rb +2 -2
- data/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb +22 -22
- data/lib/bundler/vendored_uri.rb +18 -1
- data/lib/bundler/version.rb +1 -1
- data/lib/bundler/yaml_serializer.rb +12 -0
- data/lib/bundler.rb +3 -2
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 39c97ec41b023928932bc15dd7a27d7d6c44a1081d8d8a8d929323acc7923516
|
4
|
+
data.tar.gz: fcee9b11554764b4b762fbeff5be2afa1747bb00522f76a8f2ed8910af6140ba
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3f0e03b892ab04ffbbe98dc64a8edf39976e9f06f7e3c3f0d023760de2c10335975dd6658081fe9f6daf259f19e84bb829196f9387c3037ddd3fea9fdb865c80
|
7
|
+
data.tar.gz: c483f1305486133a2a0845c4ad13de99baf81b456d88d0e899726db2d1257c445625aeb3f4b32a4b6717f42da23858336284ffecc5fd9ce9a15a6ca797349c75
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,18 @@
|
|
1
|
+
# 2.5.6 (February 6, 2024)
|
2
|
+
|
3
|
+
## Deprecations:
|
4
|
+
|
5
|
+
- Refactor lockfile generation and deprecate `Definition#lock` with explicit lockfile [#7047](https://github.com/rubygems/rubygems/pull/7047)
|
6
|
+
|
7
|
+
## Enhancements:
|
8
|
+
|
9
|
+
- Bump `required_ruby_version` to be used in `bundle gem` template [#7430](https://github.com/rubygems/rubygems/pull/7430)
|
10
|
+
|
11
|
+
## Bug fixes:
|
12
|
+
|
13
|
+
- Fix musl platform not being added to the lockfile [#7441](https://github.com/rubygems/rubygems/pull/7441)
|
14
|
+
- Let `Bundler.with_original_env` properly restore env variables originally empty [#7383](https://github.com/rubygems/rubygems/pull/7383)
|
15
|
+
|
1
16
|
# 2.5.5 (January 18, 2024)
|
2
17
|
|
3
18
|
## Bug fixes:
|
@@ -4,8 +4,8 @@ module Bundler
|
|
4
4
|
# Represents metadata from when the Bundler gem was built.
|
5
5
|
module BuildMetadata
|
6
6
|
# begin ivars
|
7
|
-
@built_at = "2024-
|
8
|
-
@git_commit_sha = "
|
7
|
+
@built_at = "2024-02-06".freeze
|
8
|
+
@git_commit_sha = "7ac045dcaa".freeze
|
9
9
|
@release = true
|
10
10
|
# end ivars
|
11
11
|
|
data/lib/bundler/cli/gem.rb
CHANGED
data/lib/bundler/cli/lock.rb
CHANGED
@@ -33,8 +33,11 @@ module Bundler
|
|
33
33
|
update = { bundler: bundler }
|
34
34
|
end
|
35
35
|
|
36
|
+
file = options[:lockfile]
|
37
|
+
file = file ? Pathname.new(file).expand_path : Bundler.default_lockfile
|
38
|
+
|
36
39
|
Bundler.settings.temporary(frozen: false) do
|
37
|
-
definition = Bundler.definition(update)
|
40
|
+
definition = Bundler.definition(update, file)
|
38
41
|
|
39
42
|
Bundler::CLI::Common.configure_gem_version_promoter(definition, options) if options[:update]
|
40
43
|
|
@@ -60,10 +63,8 @@ module Bundler
|
|
60
63
|
if print
|
61
64
|
puts definition.to_lock
|
62
65
|
else
|
63
|
-
file = options[:lockfile]
|
64
|
-
file = file ? File.expand_path(file) : Bundler.default_lockfile
|
65
66
|
puts "Writing lockfile to #{file}"
|
66
|
-
definition.lock
|
67
|
+
definition.lock
|
67
68
|
end
|
68
69
|
end
|
69
70
|
|
data/lib/bundler/cli.rb
CHANGED
@@ -785,7 +785,7 @@ module Bundler
|
|
785
785
|
return unless SharedHelpers.md5_available?
|
786
786
|
|
787
787
|
latest = Fetcher::CompactIndex.
|
788
|
-
new(nil, Source::Rubygems::Remote.new(
|
788
|
+
new(nil, Source::Rubygems::Remote.new(Gem::URI("https://rubygems.org")), nil, nil).
|
789
789
|
send(:compact_index_client).
|
790
790
|
instance_variable_get(:@cache).
|
791
791
|
dependencies("bundler").
|
data/lib/bundler/definition.rb
CHANGED
@@ -320,38 +320,26 @@ module Bundler
|
|
320
320
|
dependencies.map(&:groups).flatten.uniq
|
321
321
|
end
|
322
322
|
|
323
|
-
def lock(
|
324
|
-
|
325
|
-
|
326
|
-
|
327
|
-
|
328
|
-
|
329
|
-
|
330
|
-
contents.gsub!(/\n/, "\r\n") if @lockfile_contents.match?("\r\n")
|
331
|
-
|
332
|
-
if @locked_bundler_version
|
333
|
-
locked_major = @locked_bundler_version.segments.first
|
334
|
-
current_major = bundler_version_to_lock.segments.first
|
335
|
-
|
336
|
-
updating_major = locked_major < current_major
|
337
|
-
end
|
323
|
+
def lock(file_or_preserve_unknown_sections = false, preserve_unknown_sections_or_unused = false)
|
324
|
+
if [true, false, nil].include?(file_or_preserve_unknown_sections)
|
325
|
+
target_lockfile = lockfile || Bundler.default_lockfile
|
326
|
+
preserve_unknown_sections = file_or_preserve_unknown_sections
|
327
|
+
else
|
328
|
+
target_lockfile = file_or_preserve_unknown_sections
|
329
|
+
preserve_unknown_sections = preserve_unknown_sections_or_unused
|
338
330
|
|
339
|
-
|
331
|
+
suggestion = if target_lockfile == lockfile
|
332
|
+
"To fix this warning, remove it from the `Definition#lock` call."
|
333
|
+
else
|
334
|
+
"Instead, instantiate a new definition passing `#{target_lockfile}`, and call `lock` without a file argument on that definition"
|
335
|
+
end
|
340
336
|
|
341
|
-
|
342
|
-
return if Bundler.frozen_bundle?
|
343
|
-
SharedHelpers.filesystem_access(file) { FileUtils.touch(file) }
|
344
|
-
return
|
345
|
-
end
|
337
|
+
msg = "`Definition#lock` was passed a target file argument. #{suggestion}"
|
346
338
|
|
347
|
-
|
348
|
-
Bundler.ui.error "Cannot write a changed lockfile while frozen."
|
349
|
-
return
|
339
|
+
Bundler::SharedHelpers.major_deprecation 2, msg
|
350
340
|
end
|
351
341
|
|
352
|
-
|
353
|
-
File.open(p, "wb") {|f| f.puts(contents) }
|
354
|
-
end
|
342
|
+
write_lock(target_lockfile, preserve_unknown_sections)
|
355
343
|
end
|
356
344
|
|
357
345
|
def locked_ruby_version
|
@@ -518,7 +506,45 @@ module Bundler
|
|
518
506
|
end
|
519
507
|
|
520
508
|
def lockfile_exists?
|
521
|
-
|
509
|
+
file_exists?(lockfile)
|
510
|
+
end
|
511
|
+
|
512
|
+
def file_exists?(file)
|
513
|
+
file && File.exist?(file)
|
514
|
+
end
|
515
|
+
|
516
|
+
def write_lock(file, preserve_unknown_sections)
|
517
|
+
return if Definition.no_lock
|
518
|
+
|
519
|
+
contents = to_lock
|
520
|
+
|
521
|
+
# Convert to \r\n if the existing lock has them
|
522
|
+
# i.e., Windows with `git config core.autocrlf=true`
|
523
|
+
contents.gsub!(/\n/, "\r\n") if @lockfile_contents.match?("\r\n")
|
524
|
+
|
525
|
+
if @locked_bundler_version
|
526
|
+
locked_major = @locked_bundler_version.segments.first
|
527
|
+
current_major = bundler_version_to_lock.segments.first
|
528
|
+
|
529
|
+
updating_major = locked_major < current_major
|
530
|
+
end
|
531
|
+
|
532
|
+
preserve_unknown_sections ||= !updating_major && (Bundler.frozen_bundle? || !(unlocking? || @unlocking_bundler))
|
533
|
+
|
534
|
+
if file_exists?(file) && lockfiles_equal?(@lockfile_contents, contents, preserve_unknown_sections)
|
535
|
+
return if Bundler.frozen_bundle?
|
536
|
+
SharedHelpers.filesystem_access(file) { FileUtils.touch(file) }
|
537
|
+
return
|
538
|
+
end
|
539
|
+
|
540
|
+
if Bundler.frozen_bundle?
|
541
|
+
Bundler.ui.error "Cannot write a changed lockfile while frozen."
|
542
|
+
return
|
543
|
+
end
|
544
|
+
|
545
|
+
SharedHelpers.filesystem_access(file) do |p|
|
546
|
+
File.open(p, "wb") {|f| f.puts(contents) }
|
547
|
+
end
|
522
548
|
end
|
523
549
|
|
524
550
|
def resolver
|
@@ -58,9 +58,9 @@ module Bundler
|
|
58
58
|
env = @original.clone
|
59
59
|
@keys.each do |key|
|
60
60
|
value = env[key]
|
61
|
-
if !value.nil?
|
61
|
+
if !value.nil?
|
62
62
|
env[@prefix + key] ||= value
|
63
|
-
|
63
|
+
else
|
64
64
|
env[@prefix + key] ||= INTENTIONALLY_NIL
|
65
65
|
end
|
66
66
|
end
|
@@ -72,7 +72,7 @@ module Bundler
|
|
72
72
|
env = @original.clone
|
73
73
|
@keys.each do |key|
|
74
74
|
value_original = env[@prefix + key]
|
75
|
-
next if value_original.nil?
|
75
|
+
next if value_original.nil?
|
76
76
|
if value_original == INTENTIONALLY_NIL
|
77
77
|
env.delete(key)
|
78
78
|
else
|
@@ -23,7 +23,7 @@ module Bundler
|
|
23
23
|
when Gem::Net::HTTPSuccess, Gem::Net::HTTPNotModified
|
24
24
|
response
|
25
25
|
when Gem::Net::HTTPRedirection
|
26
|
-
new_uri =
|
26
|
+
new_uri = Gem::URI.parse(response["location"])
|
27
27
|
if new_uri.host == uri.host
|
28
28
|
new_uri.user = uri.user
|
29
29
|
new_uri.password = uri.password
|
data/lib/bundler/fetcher.rb
CHANGED
@@ -111,7 +111,7 @@ module Bundler
|
|
111
111
|
spec -= [nil, "ruby", ""]
|
112
112
|
spec_file_name = "#{spec.join "-"}.gemspec"
|
113
113
|
|
114
|
-
uri =
|
114
|
+
uri = Gem::URI.parse("#{remote_uri}#{Gem::MARSHAL_SPEC_DIR}#{spec_file_name}.rz")
|
115
115
|
spec = if uri.scheme == "file"
|
116
116
|
path = Gem::Util.correct_for_windows_path(uri.path)
|
117
117
|
Bundler.safe_load_marshal Bundler.rubygems.inflate(Gem.read_binary(path))
|
@@ -255,7 +255,7 @@ module Bundler
|
|
255
255
|
|
256
256
|
con = Gem::Net::HTTP::Persistent.new name: "bundler", proxy: :ENV
|
257
257
|
if gem_proxy = Gem.configuration[:http_proxy]
|
258
|
-
con.proxy =
|
258
|
+
con.proxy = Gem::URI.parse(gem_proxy) if gem_proxy != :no_proxy
|
259
259
|
end
|
260
260
|
|
261
261
|
if remote_uri.scheme == "https"
|
data/lib/bundler/injector.rb
CHANGED
@@ -50,7 +50,7 @@ module Bundler
|
|
50
50
|
append_to(gemfile_path, build_gem_lines(@options[:conservative_versioning])) if @deps.any?
|
51
51
|
|
52
52
|
# since we resolved successfully, write out the lockfile
|
53
|
-
@definition.lock
|
53
|
+
@definition.lock
|
54
54
|
|
55
55
|
# invalidate the cached Bundler.definition
|
56
56
|
Bundler.reset_paths!
|
data/lib/bundler/installer.rb
CHANGED
data/lib/bundler/mirror.rb
CHANGED
@@ -47,7 +47,7 @@ module Bundler
|
|
47
47
|
|
48
48
|
def fetch_valid_mirror_for(uri)
|
49
49
|
downcased = uri.to_s.downcase
|
50
|
-
mirror = @mirrors[downcased] || @mirrors[
|
50
|
+
mirror = @mirrors[downcased] || @mirrors[Gem::URI(downcased).host] || Mirror.new(uri)
|
51
51
|
mirror.validate!(@prober)
|
52
52
|
mirror = Mirror.new(uri) unless mirror.valid?
|
53
53
|
mirror
|
@@ -74,7 +74,7 @@ module Bundler
|
|
74
74
|
@uri = if uri.nil?
|
75
75
|
nil
|
76
76
|
else
|
77
|
-
|
77
|
+
Gem::URI(uri.to_s)
|
78
78
|
end
|
79
79
|
@valid = nil
|
80
80
|
end
|
@@ -126,7 +126,7 @@ module Bundler
|
|
126
126
|
if uri == "all"
|
127
127
|
@all = true
|
128
128
|
else
|
129
|
-
@uri =
|
129
|
+
@uri = Gem::URI(uri).absolute? ? Settings.normalize_uri(uri) : uri
|
130
130
|
end
|
131
131
|
@value = value
|
132
132
|
end
|
@@ -107,7 +107,7 @@ module Bundler
|
|
107
107
|
def install_path
|
108
108
|
@install_path ||=
|
109
109
|
begin
|
110
|
-
base_name = File.basename(
|
110
|
+
base_name = File.basename(Gem::URI.parse(uri).normalize.path)
|
111
111
|
|
112
112
|
gem_install_dir.join("#{base_name}-#{uri_hash[0..11]}")
|
113
113
|
end
|
@@ -176,7 +176,7 @@ module Bundler
|
|
176
176
|
#
|
177
177
|
# This is used by `app_cache_path`
|
178
178
|
def app_cache_dirname
|
179
|
-
base_name = File.basename(
|
179
|
+
base_name = File.basename(Gem::URI.parse(uri).normalize.path)
|
180
180
|
"#{base_name}-#{uri_hash}"
|
181
181
|
end
|
182
182
|
|
data/lib/bundler/runtime.rb
CHANGED
@@ -95,7 +95,7 @@ module Bundler
|
|
95
95
|
|
96
96
|
def lock(opts = {})
|
97
97
|
return if @definition.no_resolve_needed?
|
98
|
-
@definition.lock(
|
98
|
+
@definition.lock(opts[:preserve_unknown_sections])
|
99
99
|
end
|
100
100
|
|
101
101
|
alias_method :gems, :specs
|
data/lib/bundler/settings.rb
CHANGED
@@ -189,7 +189,7 @@ module Bundler
|
|
189
189
|
def mirror_for(uri)
|
190
190
|
if uri.is_a?(String)
|
191
191
|
require_relative "vendored_uri"
|
192
|
-
uri =
|
192
|
+
uri = Gem::URI(uri)
|
193
193
|
end
|
194
194
|
|
195
195
|
gem_mirrors.for(uri.to_s).uri
|
@@ -549,7 +549,7 @@ module Bundler
|
|
549
549
|
end
|
550
550
|
uri = URINormalizer.normalize_suffix(uri)
|
551
551
|
require_relative "vendored_uri"
|
552
|
-
uri =
|
552
|
+
uri = Gem::URI(uri)
|
553
553
|
unless uri.absolute?
|
554
554
|
raise ArgumentError, format("Gem sources must be absolute. You provided '%s'.", uri)
|
555
555
|
end
|
@@ -564,7 +564,7 @@ module Bundler
|
|
564
564
|
key
|
565
565
|
when Symbol
|
566
566
|
key.name
|
567
|
-
when
|
567
|
+
when Gem::URI::HTTP
|
568
568
|
key.to_s
|
569
569
|
else
|
570
570
|
raise ArgumentError, "Invalid key: #{key.inspect}"
|
@@ -577,7 +577,7 @@ module Bundler
|
|
577
577
|
key
|
578
578
|
when Symbol
|
579
579
|
key.to_s
|
580
|
-
when
|
580
|
+
when Gem::URI::HTTP
|
581
581
|
key.to_s
|
582
582
|
else
|
583
583
|
raise ArgumentError, "Invalid key: #{key.inspect}"
|
@@ -320,7 +320,7 @@ module Bundler
|
|
320
320
|
# Adds credentials to the URI
|
321
321
|
def configured_uri
|
322
322
|
if /https?:/.match?(uri)
|
323
|
-
remote =
|
323
|
+
remote = Gem::URI(uri)
|
324
324
|
config_auth = Bundler.settings[remote.to_s] || Bundler.settings[remote.host]
|
325
325
|
remote.userinfo ||= config_auth
|
326
326
|
remote.to_s
|
data/lib/bundler/source/git.rb
CHANGED
@@ -326,7 +326,7 @@ module Bundler
|
|
326
326
|
if %r{^\w+://(\w+@)?}.match?(uri)
|
327
327
|
# Downcase the domain component of the URI
|
328
328
|
# and strip off a trailing slash, if one is present
|
329
|
-
input =
|
329
|
+
input = Gem::URI.parse(uri).normalize.to_s.sub(%r{/$}, "")
|
330
330
|
else
|
331
331
|
# If there is no URI scheme, assume it is an ssh/git URI
|
332
332
|
input = uri
|
@@ -48,7 +48,7 @@ module Bundler
|
|
48
48
|
end
|
49
49
|
|
50
50
|
uri
|
51
|
-
rescue
|
51
|
+
rescue Gem::URI::InvalidComponentError
|
52
52
|
error_message = "Please CGI escape your usernames and passwords before " \
|
53
53
|
"setting them for authentication."
|
54
54
|
raise HTTPError.new(error_message)
|
@@ -349,9 +349,9 @@ module Bundler
|
|
349
349
|
def normalize_uri(uri)
|
350
350
|
uri = URINormalizer.normalize_suffix(uri.to_s)
|
351
351
|
require_relative "../vendored_uri"
|
352
|
-
uri =
|
352
|
+
uri = Gem::URI(uri)
|
353
353
|
raise ArgumentError, "The source must be an absolute URI. For example:\n" \
|
354
|
-
"source 'https://rubygems.org'" if !uri.absolute? || (uri.is_a?(
|
354
|
+
"source 'https://rubygems.org'" if !uri.absolute? || (uri.is_a?(Gem::URI::HTTP) && uri.host.nil?)
|
355
355
|
uri
|
356
356
|
end
|
357
357
|
|
data/lib/bundler/spec_set.rb
CHANGED
@@ -65,7 +65,7 @@ module Bundler
|
|
65
65
|
|
66
66
|
platforms.concat(new_platforms)
|
67
67
|
|
68
|
-
less_specific_platform = new_platforms.find {|platform| platform != Gem::Platform::RUBY &&
|
68
|
+
less_specific_platform = new_platforms.find {|platform| platform != Gem::Platform::RUBY && Bundler.local_platform === platform }
|
69
69
|
platforms.delete(Bundler.local_platform) if less_specific_platform
|
70
70
|
|
71
71
|
platforms
|
@@ -11,7 +11,7 @@ module Bundler
|
|
11
11
|
return uri if File.exist?(uri)
|
12
12
|
|
13
13
|
require_relative "vendored_uri"
|
14
|
-
uri =
|
14
|
+
uri = Gem::URI(uri)
|
15
15
|
end
|
16
16
|
|
17
17
|
if uri.userinfo
|
@@ -25,7 +25,7 @@ module Bundler
|
|
25
25
|
end
|
26
26
|
return uri.to_s if uri_to_anonymize.is_a?(String)
|
27
27
|
uri
|
28
|
-
rescue
|
28
|
+
rescue Gem::URI::InvalidURIError # uri is not canonical uri scheme
|
29
29
|
uri
|
30
30
|
end
|
31
31
|
|
@@ -1,5 +1,5 @@
|
|
1
1
|
require_relative '../../../../../vendored_net_http'
|
2
|
-
require_relative '
|
2
|
+
require_relative '../../../../../vendored_uri'
|
3
3
|
require 'cgi' # for escaping
|
4
4
|
require_relative '../../../../connection_pool/lib/connection_pool'
|
5
5
|
|
@@ -22,7 +22,7 @@ autoload :OpenSSL, 'openssl'
|
|
22
22
|
#
|
23
23
|
# require 'bundler/vendor/net-http-persistent/lib/net/http/persistent'
|
24
24
|
#
|
25
|
-
# uri =
|
25
|
+
# uri = Gem::URI 'http://example.com/awesome/web/service'
|
26
26
|
#
|
27
27
|
# http = Gem::Net::HTTP::Persistent.new
|
28
28
|
#
|
@@ -39,17 +39,17 @@ autoload :OpenSSL, 'openssl'
|
|
39
39
|
# post = Gem::Net::HTTP::Post.new post_uri.path
|
40
40
|
# post.set_form_data 'some' => 'cool data'
|
41
41
|
#
|
42
|
-
# # perform the POST, the
|
42
|
+
# # perform the POST, the Gem::URI is always required
|
43
43
|
# response http.request post_uri, post
|
44
44
|
#
|
45
45
|
# Note that for GET, HEAD and other requests that do not have a body you want
|
46
|
-
# to use
|
46
|
+
# to use Gem::URI#request_uri not Gem::URI#path. The request_uri contains the query
|
47
47
|
# params which are sent in the body for other requests.
|
48
48
|
#
|
49
49
|
# == TLS/SSL
|
50
50
|
#
|
51
51
|
# TLS connections are automatically created depending upon the scheme of the
|
52
|
-
#
|
52
|
+
# Gem::URI. TLS connections are automatically verified against the default
|
53
53
|
# certificate store for your computer. You can override this by changing
|
54
54
|
# verify_mode or by specifying an alternate cert_store.
|
55
55
|
#
|
@@ -72,7 +72,7 @@ autoload :OpenSSL, 'openssl'
|
|
72
72
|
# == Proxies
|
73
73
|
#
|
74
74
|
# A proxy can be set through #proxy= or at initialization time by providing a
|
75
|
-
# second argument to ::new. The proxy may be the
|
75
|
+
# second argument to ::new. The proxy may be the Gem::URI of the proxy server or
|
76
76
|
# <code>:ENV</code> which will consult environment variables.
|
77
77
|
#
|
78
78
|
# See #proxy= and #proxy_from_env for details.
|
@@ -197,7 +197,7 @@ class Gem::Net::HTTP::Persistent
|
|
197
197
|
# NOTE: This may not work on ruby > 1.9.
|
198
198
|
|
199
199
|
def self.detect_idle_timeout uri, max = 10
|
200
|
-
uri =
|
200
|
+
uri = Gem::URI uri unless Gem::URI::Generic === uri
|
201
201
|
uri += '/'
|
202
202
|
|
203
203
|
req = Gem::Net::HTTP::Head.new uri.request_uri
|
@@ -455,13 +455,13 @@ class Gem::Net::HTTP::Persistent
|
|
455
455
|
# Set a +name+ for fun. Your library name should be good enough, but this
|
456
456
|
# otherwise has no purpose.
|
457
457
|
#
|
458
|
-
# +proxy+ may be set to a
|
458
|
+
# +proxy+ may be set to a Gem::URI::HTTP or :ENV to pick up proxy options from
|
459
459
|
# the environment. See proxy_from_env for details.
|
460
460
|
#
|
461
|
-
# In order to use a
|
462
|
-
# beyond
|
461
|
+
# In order to use a Gem::URI for the proxy you may need to do some extra work
|
462
|
+
# beyond Gem::URI parsing if the proxy requires a password:
|
463
463
|
#
|
464
|
-
# proxy =
|
464
|
+
# proxy = Gem::URI 'http://proxy.example'
|
465
465
|
# proxy.user = 'AzureDiamond'
|
466
466
|
# proxy.password = 'hunter2'
|
467
467
|
#
|
@@ -510,7 +510,7 @@ class Gem::Net::HTTP::Persistent
|
|
510
510
|
@verify_mode = nil
|
511
511
|
@cert_store = nil
|
512
512
|
|
513
|
-
@generation = 0 # incremented when proxy
|
513
|
+
@generation = 0 # incremented when proxy Gem::URI changes
|
514
514
|
|
515
515
|
if HAVE_OPENSSL then
|
516
516
|
@verify_mode = OpenSSL::SSL::VERIFY_PEER
|
@@ -720,12 +720,12 @@ class Gem::Net::HTTP::Persistent
|
|
720
720
|
alias key= private_key=
|
721
721
|
|
722
722
|
##
|
723
|
-
# Sets the proxy server. The +proxy+ may be the
|
723
|
+
# Sets the proxy server. The +proxy+ may be the Gem::URI of the proxy server,
|
724
724
|
# the symbol +:ENV+ which will read the proxy from the environment or nil to
|
725
725
|
# disable use of a proxy. See #proxy_from_env for details on setting the
|
726
726
|
# proxy from the environment.
|
727
727
|
#
|
728
|
-
# If the proxy
|
728
|
+
# If the proxy Gem::URI is set after requests have been made, the next request
|
729
729
|
# will shut-down and re-open all connections.
|
730
730
|
#
|
731
731
|
# The +no_proxy+ query parameter can be used to specify hosts which shouldn't
|
@@ -736,9 +736,9 @@ class Gem::Net::HTTP::Persistent
|
|
736
736
|
def proxy= proxy
|
737
737
|
@proxy_uri = case proxy
|
738
738
|
when :ENV then proxy_from_env
|
739
|
-
when
|
739
|
+
when Gem::URI::HTTP then proxy
|
740
740
|
when nil then # ignore
|
741
|
-
else raise ArgumentError, 'proxy must be :ENV or a
|
741
|
+
else raise ArgumentError, 'proxy must be :ENV or a Gem::URI::HTTP'
|
742
742
|
end
|
743
743
|
|
744
744
|
@no_proxy.clear
|
@@ -763,13 +763,13 @@ class Gem::Net::HTTP::Persistent
|
|
763
763
|
end
|
764
764
|
|
765
765
|
##
|
766
|
-
# Creates a
|
766
|
+
# Creates a Gem::URI for an HTTP proxy server from ENV variables.
|
767
767
|
#
|
768
768
|
# If +HTTP_PROXY+ is set a proxy will be returned.
|
769
769
|
#
|
770
|
-
# If +HTTP_PROXY_USER+ or +HTTP_PROXY_PASS+ are set the
|
770
|
+
# If +HTTP_PROXY_USER+ or +HTTP_PROXY_PASS+ are set the Gem::URI is given the
|
771
771
|
# indicated user and password unless HTTP_PROXY contains either of these in
|
772
|
-
# the
|
772
|
+
# the Gem::URI.
|
773
773
|
#
|
774
774
|
# The +NO_PROXY+ ENV variable can be used to specify hosts which shouldn't
|
775
775
|
# be reached via proxy; if set it should be a comma separated list of
|
@@ -785,7 +785,7 @@ class Gem::Net::HTTP::Persistent
|
|
785
785
|
|
786
786
|
return nil if env_proxy.nil? or env_proxy.empty?
|
787
787
|
|
788
|
-
uri =
|
788
|
+
uri = Gem::URI normalize_uri env_proxy
|
789
789
|
|
790
790
|
env_no_proxy = ENV['no_proxy'] || ENV['NO_PROXY']
|
791
791
|
|
@@ -863,7 +863,7 @@ class Gem::Net::HTTP::Persistent
|
|
863
863
|
# +req+ must be a Gem::Net::HTTPGenericRequest subclass (see Gem::Net::HTTP for a list).
|
864
864
|
|
865
865
|
def request uri, req = nil, &block
|
866
|
-
uri =
|
866
|
+
uri = Gem::URI uri
|
867
867
|
req = request_setup req || uri
|
868
868
|
response = nil
|
869
869
|
|
@@ -896,7 +896,7 @@ class Gem::Net::HTTP::Persistent
|
|
896
896
|
end
|
897
897
|
|
898
898
|
##
|
899
|
-
# Creates a GET request if +req_or_uri+ is a
|
899
|
+
# Creates a GET request if +req_or_uri+ is a Gem::URI and adds headers to the
|
900
900
|
# request.
|
901
901
|
#
|
902
902
|
# Returns the request.
|
data/lib/bundler/vendored_uri.rb
CHANGED
@@ -1,4 +1,21 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
module Bundler; end
|
4
|
-
|
4
|
+
|
5
|
+
# Use RubyGems vendored copy when available. Otherwise fallback to Bundler
|
6
|
+
# vendored copy. The vendored copy in Bundler can be removed once support for
|
7
|
+
# RubyGems 3.5 is dropped.
|
8
|
+
|
9
|
+
begin
|
10
|
+
require "rubygems/vendor/uri/lib/uri"
|
11
|
+
rescue LoadError
|
12
|
+
require_relative "vendor/uri/lib/uri"
|
13
|
+
Gem::URI = Bundler::URI
|
14
|
+
|
15
|
+
module Gem
|
16
|
+
def URI(uri) # rubocop:disable Naming/MethodName
|
17
|
+
Bundler::URI(uri)
|
18
|
+
end
|
19
|
+
module_function :URI
|
20
|
+
end
|
21
|
+
end
|
data/lib/bundler/version.rb
CHANGED
@@ -58,6 +58,8 @@ module Bundler
|
|
58
58
|
str.split(/\r?\n/) do |line|
|
59
59
|
if match = HASH_REGEX.match(line)
|
60
60
|
indent, key, quote, val = match.captures
|
61
|
+
val = strip_comment(val)
|
62
|
+
|
61
63
|
convert_to_backward_compatible_key!(key)
|
62
64
|
depth = indent.size / 2
|
63
65
|
if quote.empty? && val.empty?
|
@@ -72,6 +74,8 @@ module Bundler
|
|
72
74
|
end
|
73
75
|
elsif match = ARRAY_REGEX.match(line)
|
74
76
|
_, val = match.captures
|
77
|
+
val = strip_comment(val)
|
78
|
+
|
75
79
|
last_hash[last_empty_key] = [] unless last_hash[last_empty_key].is_a?(Array)
|
76
80
|
|
77
81
|
last_hash[last_empty_key].push(val)
|
@@ -80,6 +84,14 @@ module Bundler
|
|
80
84
|
res
|
81
85
|
end
|
82
86
|
|
87
|
+
def strip_comment(val)
|
88
|
+
if val.include?("#") && !val.start_with?("#")
|
89
|
+
val.split("#", 2).first.strip
|
90
|
+
else
|
91
|
+
val
|
92
|
+
end
|
93
|
+
end
|
94
|
+
|
83
95
|
# for settings' keys
|
84
96
|
def convert_to_backward_compatible_key!(key)
|
85
97
|
key << "/" if /https?:/i.match?(key) && !%r{/\Z}.match?(key)
|
data/lib/bundler.rb
CHANGED
@@ -200,12 +200,13 @@ module Bundler
|
|
200
200
|
#
|
201
201
|
# @param unlock [Hash, Boolean, nil] Gems that have been requested
|
202
202
|
# to be updated or true if all gems should be updated
|
203
|
+
# @param lockfile [Pathname] Path to Gemfile.lock
|
203
204
|
# @return [Bundler::Definition]
|
204
|
-
def definition(unlock = nil)
|
205
|
+
def definition(unlock = nil, lockfile = default_lockfile)
|
205
206
|
@definition = nil if unlock
|
206
207
|
@definition ||= begin
|
207
208
|
configure
|
208
|
-
Definition.build(default_gemfile,
|
209
|
+
Definition.build(default_gemfile, lockfile, unlock)
|
209
210
|
end
|
210
211
|
end
|
211
212
|
|
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.5.
|
4
|
+
version: 2.5.6
|
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: 2024-
|
25
|
+
date: 2024-02-06 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
|
@@ -398,7 +398,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
398
398
|
- !ruby/object:Gem::Version
|
399
399
|
version: 3.2.3
|
400
400
|
requirements: []
|
401
|
-
rubygems_version: 3.5.
|
401
|
+
rubygems_version: 3.5.6
|
402
402
|
signing_key:
|
403
403
|
specification_version: 4
|
404
404
|
summary: The best way to manage your application's dependencies
|