bundler 2.3.4 → 2.3.5
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 +13 -0
- data/lib/bundler/build_metadata.rb +2 -2
- data/lib/bundler/cli/update.rb +6 -2
- data/lib/bundler/cli.rb +3 -10
- data/lib/bundler/compact_index_client/cache.rb +0 -9
- data/lib/bundler/compact_index_client.rb +0 -6
- data/lib/bundler/definition.rb +0 -8
- data/lib/bundler/endpoint_specification.rb +21 -3
- data/lib/bundler/fetcher/compact_index.rb +0 -10
- data/lib/bundler/fetcher/index.rb +0 -26
- data/lib/bundler/fetcher.rb +4 -9
- data/lib/bundler/gem_helper.rb +2 -2
- data/lib/bundler/lazy_specification.rb +2 -2
- data/lib/bundler/lockfile_generator.rb +1 -1
- data/lib/bundler/resolver/spec_group.rb +1 -1
- data/lib/bundler/resolver.rb +2 -8
- data/lib/bundler/self_manager.rb +103 -29
- data/lib/bundler/templates/newgem/newgem.gemspec.tt +1 -1
- data/lib/bundler/vendor/thor/lib/thor/actions/inject_into_file.rb +1 -4
- data/lib/bundler/vendor/thor/lib/thor/version.rb +1 -1
- data/lib/bundler/version.rb +1 -1
- 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: 5b0d885e627a0cd83ab152b691c763806970a6cc0b3660a58cada89848613b3c
|
4
|
+
data.tar.gz: be879e2e5d4bc4a5bdc9c34d12e1dd4644ca6a15a3cf109100a7717e4b84d7bf
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5054958fd89192f4cf35e74b5c779e394e23e991f966cca3b4a4961ece6181ff0f0c7c17bfb52a0cd956ad45a110ea75597a96865d2f17f2dff9f4bcd5b84113
|
7
|
+
data.tar.gz: c8ec46b4b31b44b45f72f03ac076a8626d6075ac38069b676deb696051d220e761305a0f1c8432ef9b2556095eb2de4ce23fc42424ac453034e0cc80e88d4588
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,16 @@
|
|
1
|
+
# 2.3.5 (January 12, 2022)
|
2
|
+
|
3
|
+
## Enhancements:
|
4
|
+
|
5
|
+
- Make `bundle update --bundler` actually lock to the latest bundler version (even if not yet installed) [#5182](https://github.com/rubygems/rubygems/pull/5182)
|
6
|
+
- Use thor-1.2.1 [#5260](https://github.com/rubygems/rubygems/pull/5260)
|
7
|
+
- Exclude bin directory for newgem template [#5259](https://github.com/rubygems/rubygems/pull/5259)
|
8
|
+
|
9
|
+
## Bug fixes:
|
10
|
+
|
11
|
+
- Fix metadata requirements being bypassed when custom gem servers are used [#5256](https://github.com/rubygems/rubygems/pull/5256)
|
12
|
+
- Fix `rake build:checksum` writing checksum of package path, not package contents [#5250](https://github.com/rubygems/rubygems/pull/5250)
|
13
|
+
|
1
14
|
# 2.3.4 (December 29, 2021)
|
2
15
|
|
3
16
|
## Enhancements:
|
@@ -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 = "
|
8
|
-
@git_commit_sha = "
|
7
|
+
@built_at = "2022-01-12".freeze
|
8
|
+
@git_commit_sha = "a13d015fcb".freeze
|
9
9
|
@release = true
|
10
10
|
# end ivars
|
11
11
|
|
data/lib/bundler/cli/update.rb
CHANGED
@@ -11,12 +11,16 @@ module Bundler
|
|
11
11
|
def run
|
12
12
|
Bundler.ui.level = "warn" if options[:quiet]
|
13
13
|
|
14
|
+
update_bundler = options[:bundler]
|
15
|
+
|
16
|
+
Bundler.self_manager.update_bundler_and_restart_with_it_if_needed(update_bundler) if update_bundler
|
17
|
+
|
14
18
|
Plugin.gemfile_install(Bundler.default_gemfile) if Bundler.feature_flag.plugins?
|
15
19
|
|
16
20
|
sources = Array(options[:source])
|
17
21
|
groups = Array(options[:group]).map(&:to_sym)
|
18
22
|
|
19
|
-
full_update = gems.empty? && sources.empty? && groups.empty? && !options[:ruby] && !
|
23
|
+
full_update = gems.empty? && sources.empty? && groups.empty? && !options[:ruby] && !update_bundler
|
20
24
|
|
21
25
|
if full_update && !options[:all]
|
22
26
|
if Bundler.feature_flag.update_requires_all_flag?
|
@@ -49,7 +53,7 @@ module Bundler
|
|
49
53
|
|
50
54
|
Bundler.definition(:gems => gems, :sources => sources, :ruby => options[:ruby],
|
51
55
|
:conservative => conservative,
|
52
|
-
:bundler =>
|
56
|
+
:bundler => update_bundler)
|
53
57
|
end
|
54
58
|
|
55
59
|
Bundler::CLI::Common.configure_gem_version_promoter(Bundler.definition, options)
|
data/lib/bundler/cli.rb
CHANGED
@@ -809,17 +809,10 @@ module Bundler
|
|
809
809
|
|
810
810
|
current = Gem::Version.new(VERSION)
|
811
811
|
return if current >= latest
|
812
|
-
latest_installed = Bundler.rubygems.find_name("bundler").map(&:version).max
|
813
812
|
|
814
|
-
|
815
|
-
|
816
|
-
|
817
|
-
suggestion = "#{installation}\n#{suggestion}" if latest_installed < latest
|
818
|
-
else
|
819
|
-
suggestion = installation
|
820
|
-
end
|
821
|
-
|
822
|
-
Bundler.ui.warn "The latest bundler is #{latest}, but you are currently running #{current}.\n#{suggestion}"
|
813
|
+
Bundler.ui.warn \
|
814
|
+
"The latest bundler is #{latest}, but you are currently running #{current}.\n" \
|
815
|
+
"To update to the most recent version, run `bundle update --bundler`"
|
823
816
|
rescue RuntimeError
|
824
817
|
nil
|
825
818
|
end
|
@@ -76,15 +76,6 @@ module Bundler
|
|
76
76
|
end
|
77
77
|
end
|
78
78
|
|
79
|
-
def specific_dependency(name, version, platform)
|
80
|
-
pattern = [version, platform].compact.join("-")
|
81
|
-
return nil if pattern.empty?
|
82
|
-
|
83
|
-
gem_lines = info_path(name).read
|
84
|
-
gem_line = gem_lines[/^#{Regexp.escape(pattern)}\b.*/, 0]
|
85
|
-
gem_line ? parse_gem(gem_line) : nil
|
86
|
-
end
|
87
|
-
|
88
79
|
private
|
89
80
|
|
90
81
|
def lines(path)
|
@@ -73,12 +73,6 @@ module Bundler
|
|
73
73
|
end.flatten(1)
|
74
74
|
end
|
75
75
|
|
76
|
-
def spec(name, version, platform = nil)
|
77
|
-
Bundler::CompactIndexClient.debug { "spec(name = #{name}, version = #{version}, platform = #{platform})" }
|
78
|
-
update_info(name)
|
79
|
-
@cache.specific_dependency(name, version, platform)
|
80
|
-
end
|
81
|
-
|
82
76
|
def update_and_parse_checksums!
|
83
77
|
Bundler::CompactIndexClient.debug { "update_and_parse_checksums!" }
|
84
78
|
return @info_checksums_by_name if @parsed_checksums
|
data/lib/bundler/definition.rb
CHANGED
@@ -309,14 +309,6 @@ module Bundler
|
|
309
309
|
end
|
310
310
|
end
|
311
311
|
|
312
|
-
def locked_bundler_version
|
313
|
-
if @locked_bundler_version && @locked_bundler_version < Gem::Version.new(Bundler::VERSION)
|
314
|
-
new_version = Bundler::VERSION
|
315
|
-
end
|
316
|
-
|
317
|
-
new_version || @locked_bundler_version || Bundler::VERSION
|
318
|
-
end
|
319
|
-
|
320
312
|
def locked_ruby_version
|
321
313
|
return unless ruby_version
|
322
314
|
if @unlock[:ruby] || !@locked_ruby_version
|
@@ -5,14 +5,15 @@ module Bundler
|
|
5
5
|
class EndpointSpecification < Gem::Specification
|
6
6
|
include MatchPlatform
|
7
7
|
|
8
|
-
attr_reader :name, :version, :platform, :
|
8
|
+
attr_reader :name, :version, :platform, :checksum
|
9
9
|
attr_accessor :source, :remote, :dependencies
|
10
10
|
|
11
|
-
def initialize(name, version, platform, dependencies, metadata = nil)
|
11
|
+
def initialize(name, version, platform, spec_fetcher, dependencies, metadata = nil)
|
12
12
|
super()
|
13
13
|
@name = name
|
14
14
|
@version = Gem::Version.create version
|
15
15
|
@platform = platform
|
16
|
+
@spec_fetcher = spec_fetcher
|
16
17
|
@dependencies = dependencies.map {|dep, reqs| build_dependency(dep, reqs) }
|
17
18
|
|
18
19
|
@loaded_from = nil
|
@@ -21,6 +22,14 @@ module Bundler
|
|
21
22
|
parse_metadata(metadata)
|
22
23
|
end
|
23
24
|
|
25
|
+
def required_ruby_version
|
26
|
+
@required_ruby_version ||= _remote_specification.required_ruby_version
|
27
|
+
end
|
28
|
+
|
29
|
+
def required_rubygems_version
|
30
|
+
@required_rubygems_version ||= _remote_specification.required_rubygems_version
|
31
|
+
end
|
32
|
+
|
24
33
|
def fetch_platform
|
25
34
|
@platform
|
26
35
|
end
|
@@ -105,12 +114,21 @@ module Bundler
|
|
105
114
|
|
106
115
|
private
|
107
116
|
|
117
|
+
def _remote_specification
|
118
|
+
@_remote_specification ||= @spec_fetcher.fetch_spec([@name, @version, @platform])
|
119
|
+
end
|
120
|
+
|
108
121
|
def local_specification_path
|
109
122
|
"#{base_dir}/specifications/#{full_name}.gemspec"
|
110
123
|
end
|
111
124
|
|
112
125
|
def parse_metadata(data)
|
113
|
-
|
126
|
+
unless data
|
127
|
+
@required_ruby_version = nil
|
128
|
+
@required_rubygems_version = nil
|
129
|
+
return
|
130
|
+
end
|
131
|
+
|
114
132
|
data.each do |k, v|
|
115
133
|
next unless v
|
116
134
|
case k.to_s
|
@@ -57,16 +57,6 @@ module Bundler
|
|
57
57
|
gem_info
|
58
58
|
end
|
59
59
|
|
60
|
-
def fetch_spec(spec)
|
61
|
-
spec -= [nil, "ruby", ""]
|
62
|
-
contents = compact_index_client.spec(*spec)
|
63
|
-
return nil if contents.nil?
|
64
|
-
contents.unshift(spec.first)
|
65
|
-
contents[3].map! {|d| Gem::Dependency.new(*d) }
|
66
|
-
EndpointSpecification.new(*contents)
|
67
|
-
end
|
68
|
-
compact_index_request :fetch_spec
|
69
|
-
|
70
60
|
def available?
|
71
61
|
unless SharedHelpers.md5_available?
|
72
62
|
Bundler.ui.debug("FIPS mode is enabled, bundler can't use the CompactIndex API")
|
@@ -21,32 +21,6 @@ module Bundler
|
|
21
21
|
raise HTTPError, "Could not fetch specs from #{display_uri} due to underlying error <#{e.message}>"
|
22
22
|
end
|
23
23
|
end
|
24
|
-
|
25
|
-
def fetch_spec(spec)
|
26
|
-
spec -= [nil, "ruby", ""]
|
27
|
-
spec_file_name = "#{spec.join "-"}.gemspec"
|
28
|
-
|
29
|
-
uri = Bundler::URI.parse("#{remote_uri}#{Gem::MARSHAL_SPEC_DIR}#{spec_file_name}.rz")
|
30
|
-
if uri.scheme == "file"
|
31
|
-
path = Bundler.rubygems.correct_for_windows_path(uri.path)
|
32
|
-
Bundler.load_marshal Bundler.rubygems.inflate(Gem.read_binary(path))
|
33
|
-
elsif cached_spec_path = gemspec_cached_path(spec_file_name)
|
34
|
-
Bundler.load_gemspec(cached_spec_path)
|
35
|
-
else
|
36
|
-
Bundler.load_marshal Bundler.rubygems.inflate(downloader.fetch(uri).body)
|
37
|
-
end
|
38
|
-
rescue MarshalError
|
39
|
-
raise HTTPError, "Gemspec #{spec} contained invalid data.\n" \
|
40
|
-
"Your network or your gem server is probably having issues right now."
|
41
|
-
end
|
42
|
-
|
43
|
-
private
|
44
|
-
|
45
|
-
# cached gem specification path, if one exists
|
46
|
-
def gemspec_cached_path(spec_file_name)
|
47
|
-
paths = Bundler.rubygems.spec_cache_dirs.map {|dir| File.join(dir, spec_file_name) }
|
48
|
-
paths.find {|path| File.file? path }
|
49
|
-
end
|
50
24
|
end
|
51
25
|
end
|
52
26
|
end
|
data/lib/bundler/fetcher.rb
CHANGED
@@ -129,17 +129,15 @@ module Bundler
|
|
129
129
|
specs = fetchers.last.specs(gem_names)
|
130
130
|
else
|
131
131
|
specs = []
|
132
|
-
fetchers
|
133
|
-
|
134
|
-
break unless f.api_fetcher? && !gem_names || !specs = f.specs(gem_names)
|
135
|
-
fetchers.delete(f)
|
132
|
+
@fetchers = fetchers.drop_while do |f|
|
133
|
+
!f.available? || (f.api_fetcher? && !gem_names) || !specs = f.specs(gem_names)
|
136
134
|
end
|
137
135
|
@use_api = false if fetchers.none?(&:api_fetcher?)
|
138
136
|
end
|
139
137
|
|
140
138
|
specs.each do |name, version, platform, dependencies, metadata|
|
141
139
|
spec = if dependencies
|
142
|
-
EndpointSpecification.new(name, version, platform, dependencies, metadata)
|
140
|
+
EndpointSpecification.new(name, version, platform, self, dependencies, metadata)
|
143
141
|
else
|
144
142
|
RemoteSpecification.new(name, version, platform, self)
|
145
143
|
end
|
@@ -272,8 +270,7 @@ module Bundler
|
|
272
270
|
# cached gem specification path, if one exists
|
273
271
|
def gemspec_cached_path(spec_file_name)
|
274
272
|
paths = Bundler.rubygems.spec_cache_dirs.map {|dir| File.join(dir, spec_file_name) }
|
275
|
-
paths
|
276
|
-
paths.first
|
273
|
+
paths.find {|path| File.file? path }
|
277
274
|
end
|
278
275
|
|
279
276
|
HTTP_ERRORS = [
|
@@ -301,8 +298,6 @@ module Bundler
|
|
301
298
|
store
|
302
299
|
end
|
303
300
|
|
304
|
-
private
|
305
|
-
|
306
301
|
def remote_uri
|
307
302
|
@remote.uri
|
308
303
|
end
|
data/lib/bundler/gem_helper.rb
CHANGED
@@ -107,9 +107,9 @@ module Bundler
|
|
107
107
|
SharedHelpers.filesystem_access(File.join(base, "checksums")) {|p| FileUtils.mkdir_p(p) }
|
108
108
|
file_name = "#{File.basename(built_gem_path)}.sha512"
|
109
109
|
require "digest/sha2"
|
110
|
-
checksum = ::Digest::SHA512.
|
110
|
+
checksum = ::Digest::SHA512.file(built_gem_path).hexdigest
|
111
111
|
target = File.join(base, "checksums", file_name)
|
112
|
-
File.write(target, checksum)
|
112
|
+
File.write(target, checksum + "\n")
|
113
113
|
Bundler.ui.confirm "#{name} #{version} checksum written to checksums/#{file_name}."
|
114
114
|
end
|
115
115
|
|
@@ -90,11 +90,11 @@ module Bundler
|
|
90
90
|
MatchPlatform.platforms_match?(spec.platform, platform_object)
|
91
91
|
end
|
92
92
|
installable_candidates = same_platform_candidates.select do |spec|
|
93
|
-
|
93
|
+
spec.is_a?(StubSpecification) ||
|
94
94
|
(spec.required_ruby_version.satisfied_by?(Gem.ruby_version) &&
|
95
95
|
spec.required_rubygems_version.satisfied_by?(Gem.rubygems_version))
|
96
96
|
end
|
97
|
-
search = installable_candidates.last
|
97
|
+
search = installable_candidates.last
|
98
98
|
search.dependencies = dependencies if search && (search.is_a?(RemoteSpecification) || search.is_a?(EndpointSpecification))
|
99
99
|
search
|
100
100
|
end
|
@@ -95,7 +95,7 @@ module Bundler
|
|
95
95
|
|
96
96
|
def metadata_dependencies(platform)
|
97
97
|
spec = @specs[platform].first
|
98
|
-
return []
|
98
|
+
return [] if spec.is_a?(LazySpecification)
|
99
99
|
dependencies = []
|
100
100
|
if !spec.required_ruby_version.nil? && !spec.required_ruby_version.none?
|
101
101
|
dependencies << DepProxy.get_proxy(Gem::Dependency.new("Ruby\0", spec.required_ruby_version), platform)
|
data/lib/bundler/resolver.rb
CHANGED
@@ -358,24 +358,18 @@ module Bundler
|
|
358
358
|
o << "\n"
|
359
359
|
o << %(Running `bundle update` will rebuild your snapshot from scratch, using only\n)
|
360
360
|
o << %(the gems in your Gemfile, which may resolve the conflict.\n)
|
361
|
-
elsif !conflict.existing
|
361
|
+
elsif !conflict.existing && !name.end_with?("\0")
|
362
362
|
o << "\n"
|
363
363
|
|
364
364
|
relevant_source = conflict.requirement.source || source_for(name)
|
365
365
|
|
366
|
-
metadata_requirement = name.end_with?("\0")
|
367
|
-
|
368
366
|
extra_message = if conflict.requirement_trees.first.size > 1
|
369
367
|
", which is required by gem '#{SharedHelpers.pretty_dependency(conflict.requirement_trees.first[-2])}',"
|
370
368
|
else
|
371
369
|
""
|
372
370
|
end
|
373
371
|
|
374
|
-
|
375
|
-
o << "#{SharedHelpers.pretty_dependency(conflict.requirement)}#{extra_message} is not available in #{relevant_source}"
|
376
|
-
else
|
377
|
-
o << gem_not_found_message(name, conflict.requirement, relevant_source, extra_message)
|
378
|
-
end
|
372
|
+
o << gem_not_found_message(name, conflict.requirement, relevant_source, extra_message)
|
379
373
|
end
|
380
374
|
end,
|
381
375
|
:version_for_spec => lambda {|spec| spec.version },
|
data/lib/bundler/self_manager.rb
CHANGED
@@ -9,46 +9,58 @@ module Bundler
|
|
9
9
|
def restart_with_locked_bundler_if_needed
|
10
10
|
return unless needs_switching? && installed?
|
11
11
|
|
12
|
-
|
12
|
+
restart_with(lockfile_version)
|
13
13
|
end
|
14
14
|
|
15
15
|
def install_locked_bundler_and_restart_with_it_if_needed
|
16
16
|
return unless needs_switching?
|
17
17
|
|
18
|
-
|
18
|
+
Bundler.ui.info \
|
19
|
+
"Bundler #{current_version} is running, but your lockfile was generated with #{lockfile_version}. " \
|
20
|
+
"Installing Bundler #{lockfile_version} and restarting using that version."
|
21
|
+
|
22
|
+
install_and_restart_with(lockfile_version)
|
23
|
+
end
|
24
|
+
|
25
|
+
def update_bundler_and_restart_with_it_if_needed(target)
|
26
|
+
return unless autoswitching_applies?
|
27
|
+
|
28
|
+
spec = resolve_update_version_from(target)
|
29
|
+
return unless spec
|
30
|
+
|
31
|
+
version = spec.version
|
32
|
+
|
33
|
+
Bundler.ui.info "Updating bundler to #{version}."
|
34
|
+
|
35
|
+
install(spec)
|
36
|
+
|
37
|
+
restart_with(version)
|
19
38
|
end
|
20
39
|
|
21
40
|
private
|
22
41
|
|
23
|
-
def
|
24
|
-
|
25
|
-
spec =
|
26
|
-
return if spec.nil?
|
42
|
+
def install_and_restart_with(version)
|
43
|
+
requirement = Gem::Requirement.new(version)
|
44
|
+
spec = find_latest_matching_spec(requirement)
|
27
45
|
|
28
|
-
|
29
|
-
|
30
|
-
|
46
|
+
if spec.nil?
|
47
|
+
Bundler.ui.warn "Your lockfile is locked to a version of bundler (#{lockfile_version}) that doesn't exist at https://rubygems.org/. Going on using #{current_version}"
|
48
|
+
return
|
49
|
+
end
|
31
50
|
|
32
|
-
|
51
|
+
install(spec)
|
33
52
|
rescue StandardError => e
|
34
53
|
Bundler.ui.trace e
|
35
54
|
Bundler.ui.warn "There was an error installing the locked bundler version (#{lockfile_version}), rerun with the `--verbose` flag for more details. Going on using bundler #{current_version}."
|
36
55
|
else
|
37
|
-
|
56
|
+
restart_with(version)
|
38
57
|
end
|
39
58
|
|
40
|
-
def
|
41
|
-
source
|
42
|
-
source.remote!
|
43
|
-
source.add_dependency_names("bundler")
|
44
|
-
spec = source.specs.search(bundler_dep).first
|
45
|
-
if spec.nil?
|
46
|
-
Bundler.ui.warn "Your lockfile is locked to a version of bundler (#{lockfile_version}) that doesn't exist at https://rubygems.org/. Going on using #{current_version}"
|
47
|
-
end
|
48
|
-
spec
|
59
|
+
def install(spec)
|
60
|
+
spec.source.install(spec)
|
49
61
|
end
|
50
62
|
|
51
|
-
def
|
63
|
+
def restart_with(version)
|
52
64
|
configured_gem_home = ENV["GEM_HOME"]
|
53
65
|
configured_gem_path = ENV["GEM_PATH"]
|
54
66
|
|
@@ -57,20 +69,79 @@ module Bundler
|
|
57
69
|
|
58
70
|
Bundler.with_original_env do
|
59
71
|
Kernel.exec(
|
60
|
-
{ "GEM_HOME" => configured_gem_home, "GEM_PATH" => configured_gem_path, "BUNDLER_VERSION" =>
|
72
|
+
{ "GEM_HOME" => configured_gem_home, "GEM_PATH" => configured_gem_path, "BUNDLER_VERSION" => version.to_s },
|
61
73
|
*cmd
|
62
74
|
)
|
63
75
|
end
|
64
76
|
end
|
65
77
|
|
66
78
|
def needs_switching?
|
79
|
+
autoswitching_applies? &&
|
80
|
+
released?(lockfile_version) &&
|
81
|
+
!running?(lockfile_version) &&
|
82
|
+
!updating?
|
83
|
+
end
|
84
|
+
|
85
|
+
def autoswitching_applies?
|
67
86
|
ENV["BUNDLER_VERSION"].nil? &&
|
68
87
|
Bundler.rubygems.supports_bundler_trampolining? &&
|
69
88
|
SharedHelpers.in_bundle? &&
|
70
|
-
lockfile_version
|
71
|
-
|
72
|
-
|
73
|
-
|
89
|
+
lockfile_version
|
90
|
+
end
|
91
|
+
|
92
|
+
def resolve_update_version_from(target)
|
93
|
+
requirement = Gem::Requirement.new(target)
|
94
|
+
update_candidate = find_latest_matching_spec(requirement)
|
95
|
+
|
96
|
+
if update_candidate.nil?
|
97
|
+
raise InvalidOption, "The `bundle update --bundler` target version (#{target}) does not exist"
|
98
|
+
end
|
99
|
+
|
100
|
+
resolved_version = update_candidate.version
|
101
|
+
needs_update = requirement.specific? ? !running?(resolved_version) : running_older_than?(resolved_version)
|
102
|
+
|
103
|
+
return unless needs_update
|
104
|
+
|
105
|
+
update_candidate
|
106
|
+
end
|
107
|
+
|
108
|
+
def local_specs
|
109
|
+
@local_specs ||= Bundler::Source::Rubygems.new("allow_local" => true).specs.select {|spec| spec.name == "bundler" }
|
110
|
+
end
|
111
|
+
|
112
|
+
def remote_specs
|
113
|
+
@remote_specs ||= begin
|
114
|
+
source = Bundler::Source::Rubygems.new("remotes" => "https://rubygems.org")
|
115
|
+
source.remote!
|
116
|
+
source.add_dependency_names("bundler")
|
117
|
+
source.specs
|
118
|
+
end
|
119
|
+
end
|
120
|
+
|
121
|
+
def find_latest_matching_spec(requirement)
|
122
|
+
local_result = find_latest_matching_spec_from_collection(local_specs, requirement)
|
123
|
+
return local_result if local_result && requirement.specific?
|
124
|
+
|
125
|
+
remote_result = find_latest_matching_spec_from_collection(remote_specs, requirement)
|
126
|
+
return remote_result if local_result.nil?
|
127
|
+
|
128
|
+
[local_result, remote_result].max
|
129
|
+
end
|
130
|
+
|
131
|
+
def find_latest_matching_spec_from_collection(specs, requirement)
|
132
|
+
specs.sort.reverse_each.find {|spec| requirement.satisfied_by?(spec.version) }
|
133
|
+
end
|
134
|
+
|
135
|
+
def running?(version)
|
136
|
+
version == current_version
|
137
|
+
end
|
138
|
+
|
139
|
+
def running_older_than?(version)
|
140
|
+
current_version < version
|
141
|
+
end
|
142
|
+
|
143
|
+
def released?(version)
|
144
|
+
!version.to_s.end_with?(".dev")
|
74
145
|
end
|
75
146
|
|
76
147
|
def updating?
|
@@ -80,15 +151,18 @@ module Bundler
|
|
80
151
|
def installed?
|
81
152
|
Bundler.configure
|
82
153
|
|
83
|
-
Bundler.rubygems.find_bundler(lockfile_version)
|
154
|
+
Bundler.rubygems.find_bundler(lockfile_version.to_s)
|
84
155
|
end
|
85
156
|
|
86
157
|
def current_version
|
87
|
-
@current_version ||= Bundler::VERSION
|
158
|
+
@current_version ||= Gem::Version.new(Bundler::VERSION)
|
88
159
|
end
|
89
160
|
|
90
161
|
def lockfile_version
|
91
|
-
@lockfile_version
|
162
|
+
return @lockfile_version if defined?(@lockfile_version)
|
163
|
+
|
164
|
+
parsed_version = Bundler::LockfileParser.bundled_with
|
165
|
+
@lockfile_version = parsed_version ? Gem::Version.new(parsed_version) : nil
|
92
166
|
end
|
93
167
|
end
|
94
168
|
end
|
@@ -26,7 +26,7 @@ Gem::Specification.new do |spec|
|
|
26
26
|
# The `git ls-files -z` loads the files in the RubyGem that have been added into git.
|
27
27
|
spec.files = Dir.chdir(File.expand_path(__dir__)) do
|
28
28
|
`git ls-files -z`.split("\x0").reject do |f|
|
29
|
-
(f == __FILE__) || f.match(%r{\A(?:(?:test|spec|features)/|\.(?:git|travis|circleci)|appveyor)})
|
29
|
+
(f == __FILE__) || f.match(%r{\A(?:(?:bin|test|spec|features)/|\.(?:git|travis|circleci)|appveyor)})
|
30
30
|
end
|
31
31
|
end
|
32
32
|
spec.bindir = "exe"
|
@@ -107,10 +107,7 @@ class Bundler::Thor
|
|
107
107
|
#
|
108
108
|
def replace!(regexp, string, force)
|
109
109
|
content = File.read(destination)
|
110
|
-
|
111
|
-
snippet = (behavior == :after ? after : before).to_s
|
112
|
-
|
113
|
-
if force || !snippet.include?(replacement)
|
110
|
+
if force || !content.include?(replacement)
|
114
111
|
success = content.gsub!(regexp, string)
|
115
112
|
|
116
113
|
File.open(destination, "wb") { |file| file.write(content) } unless pretend?
|
data/lib/bundler/version.rb
CHANGED
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.3.
|
4
|
+
version: 2.3.5
|
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:
|
25
|
+
date: 2022-01-12 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
|
@@ -370,7 +370,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
370
370
|
- !ruby/object:Gem::Version
|
371
371
|
version: 2.5.2
|
372
372
|
requirements: []
|
373
|
-
rubygems_version: 3.3.
|
373
|
+
rubygems_version: 3.3.5
|
374
374
|
signing_key:
|
375
375
|
specification_version: 4
|
376
376
|
summary: The best way to manage your application's dependencies
|