bundler 2.4.2 → 2.4.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +19 -1
- data/lib/bundler/build_metadata.rb +2 -2
- data/lib/bundler/cli/open.rb +6 -4
- data/lib/bundler/cli.rb +1 -0
- data/lib/bundler/definition.rb +8 -3
- data/lib/bundler/dsl.rb +2 -2
- data/lib/bundler/lazy_specification.rb +28 -33
- data/lib/bundler/man/bundle-open.1 +21 -1
- data/lib/bundler/man/bundle-open.1.ronn +9 -1
- data/lib/bundler/resolver/candidate.rb +12 -7
- data/lib/bundler/resolver.rb +6 -5
- data/lib/bundler/templates/newgem/Cargo.toml.tt +1 -1
- data/lib/bundler/vendor/pub_grub/lib/pub_grub/version_range.rb +1 -1
- data/lib/bundler/vendor/pub_grub/lib/pub_grub/version_union.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: 4598d8531bbdd46221e7238ee2aa828683a3e1854e47bf901857f791a01eb969
|
4
|
+
data.tar.gz: ead0de0789d8d5682c8d58e60da80a245d5710f8358669e544bb915546f3b82c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8078880e8f03117e011bedb3150aba2dfc91c271dfd289ed99f0850e5cb8c62c50af5d7c834c2fc224e17ff925f59e237b33141c1b7d9dec3efdaf35b9f353c1
|
7
|
+
data.tar.gz: 278df46d98c43489e941b788aca7b3cc46358a3ea099987f83c8cdb3b618ed3b0373d7bea590a80620332316d0b12a0bf98f0d02349c55d769174960f5169a45
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,21 @@
|
|
1
|
+
# 2.4.3 (January 6, 2023)
|
2
|
+
|
3
|
+
## Enhancements:
|
4
|
+
|
5
|
+
- Enhance `bundle open` command to allow opening subdir/file of gem [#6146](https://github.com/rubygems/rubygems/pull/6146)
|
6
|
+
|
7
|
+
## Bug fixes:
|
8
|
+
|
9
|
+
- Fix pointing GitHub sources to PRs [#6241](https://github.com/rubygems/rubygems/pull/6241)
|
10
|
+
- Fix version ranges incorrectly handling platforms [#6240](https://github.com/rubygems/rubygems/pull/6240)
|
11
|
+
- Cleanup unnecessary gems when removing lockfile platforms [#6234](https://github.com/rubygems/rubygems/pull/6234)
|
12
|
+
- When auto-removing RUBY platform don't add specific platform if not needed [#6233](https://github.com/rubygems/rubygems/pull/6233)
|
13
|
+
- Fallback to selecting installable candidates if possible when materializing specs [#6225](https://github.com/rubygems/rubygems/pull/6225)
|
14
|
+
|
15
|
+
## Documentation:
|
16
|
+
|
17
|
+
- Fix several typos [#6224](https://github.com/rubygems/rubygems/pull/6224)
|
18
|
+
|
1
19
|
# 2.4.2 (January 1, 2023)
|
2
20
|
|
3
21
|
## Performance:
|
@@ -1518,7 +1536,7 @@ Changes
|
|
1518
1536
|
|
1519
1537
|
- avoid new RubyGems warning about unsafe YAML loading (to keep output consistent) (@segiddins)
|
1520
1538
|
- load digest subclasses in a thread-safe manner (@segiddins, @colby-swandale)
|
1521
|
-
- avoid
|
1539
|
+
- avoid unused variable warnings under ruby 2.5 (@amatsuda)
|
1522
1540
|
- fix printing the same message twice in verbose mode ([#6028](https://github.com/rubygems/bundler/issues/6028), @akhramov)
|
1523
1541
|
- allow `SignalException`s to bubble up to the interpreter during `bundle exec` ([#6090](https://github.com/rubygems/bundler/issues/6090), @dekellum)
|
1524
1542
|
- avoid activating stdlib digest under Ruby 2.5 (@segiddins)
|
@@ -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 = "2023-01-
|
8
|
-
@git_commit_sha = "
|
7
|
+
@built_at = "2023-01-06".freeze
|
8
|
+
@git_commit_sha = "ed1f27f75c".freeze
|
9
9
|
@release = true
|
10
10
|
# end ivars
|
11
11
|
|
data/lib/bundler/cli/open.rb
CHANGED
@@ -2,23 +2,25 @@
|
|
2
2
|
|
3
3
|
module Bundler
|
4
4
|
class CLI::Open
|
5
|
-
attr_reader :options, :name
|
5
|
+
attr_reader :options, :name, :path
|
6
6
|
def initialize(options, name)
|
7
7
|
@options = options
|
8
8
|
@name = name
|
9
|
+
@path = options[:path] unless options[:path].nil?
|
9
10
|
end
|
10
11
|
|
11
12
|
def run
|
13
|
+
raise InvalidOption, "Cannot specify `--path` option without a value" if !@path.nil? && @path.empty?
|
12
14
|
editor = [ENV["BUNDLER_EDITOR"], ENV["VISUAL"], ENV["EDITOR"]].find {|e| !e.nil? && !e.empty? }
|
13
15
|
return Bundler.ui.info("To open a bundled gem, set $EDITOR or $BUNDLER_EDITOR") unless editor
|
14
16
|
return unless spec = Bundler::CLI::Common.select_spec(name, :regex_match)
|
15
17
|
if spec.default_gem?
|
16
18
|
Bundler.ui.info "Unable to open #{name} because it's a default gem, so the directory it would normally be installed to does not exist."
|
17
19
|
else
|
18
|
-
|
19
|
-
Dir.chdir(
|
20
|
+
root_path = spec.full_gem_path
|
21
|
+
Dir.chdir(root_path) do
|
20
22
|
require "shellwords"
|
21
|
-
command = Shellwords.split(editor)
|
23
|
+
command = Shellwords.split(editor) << File.join([root_path, path].compact)
|
22
24
|
Bundler.with_original_env do
|
23
25
|
system(*command)
|
24
26
|
end || Bundler.ui.info("Could not run '#{command.join(" ")}'")
|
data/lib/bundler/cli.rb
CHANGED
@@ -509,6 +509,7 @@ module Bundler
|
|
509
509
|
subcommand "config", Config
|
510
510
|
|
511
511
|
desc "open GEM", "Opens the source directory of the given bundled gem"
|
512
|
+
method_option "path", :type => :string, :lazy_default => "", :banner => "Open relative path of the gem source."
|
512
513
|
def open(name)
|
513
514
|
require_relative "cli/open"
|
514
515
|
Open.new(options, name).run
|
data/lib/bundler/definition.rb
CHANGED
@@ -79,6 +79,7 @@ module Bundler
|
|
79
79
|
@locked_bundler_version = nil
|
80
80
|
@locked_ruby_version = nil
|
81
81
|
@new_platform = nil
|
82
|
+
@removed_platform = nil
|
82
83
|
|
83
84
|
if lockfile && File.exist?(lockfile)
|
84
85
|
@lockfile_contents = Bundler.read_file(lockfile)
|
@@ -129,7 +130,7 @@ module Bundler
|
|
129
130
|
end
|
130
131
|
@unlocking ||= @unlock[:ruby] ||= (!@locked_ruby_version ^ !@ruby_version)
|
131
132
|
|
132
|
-
add_current_platform unless
|
133
|
+
add_current_platform unless Bundler.frozen_bundle?
|
133
134
|
|
134
135
|
converge_path_sources_to_gemspec_sources
|
135
136
|
@path_changes = converge_paths
|
@@ -267,7 +268,7 @@ module Bundler
|
|
267
268
|
SpecSet.new(filter_specs(@locked_specs, @dependencies - deleted_deps))
|
268
269
|
else
|
269
270
|
Bundler.ui.debug "Found no changes, using resolution from the lockfile"
|
270
|
-
if @locked_gems.may_include_redundant_platform_specific_gems?
|
271
|
+
if @removed_platform || @locked_gems.may_include_redundant_platform_specific_gems?
|
271
272
|
SpecSet.new(filter_specs(@locked_specs, @dependencies))
|
272
273
|
else
|
273
274
|
@locked_specs
|
@@ -446,7 +447,9 @@ module Bundler
|
|
446
447
|
end
|
447
448
|
|
448
449
|
def remove_platform(platform)
|
449
|
-
|
450
|
+
removed_platform = @platforms.delete(Gem::Platform.new(platform))
|
451
|
+
@removed_platform ||= removed_platform
|
452
|
+
return if removed_platform
|
450
453
|
raise InvalidOption, "Unable to remove the platform `#{platform}` since the only platforms are #{@platforms.join ", "}"
|
451
454
|
end
|
452
455
|
|
@@ -584,6 +587,8 @@ module Bundler
|
|
584
587
|
end
|
585
588
|
|
586
589
|
def add_current_platform
|
590
|
+
return if current_ruby_platform_locked?
|
591
|
+
|
587
592
|
add_platform(local_platform)
|
588
593
|
end
|
589
594
|
|
data/lib/bundler/dsl.rb
CHANGED
@@ -277,8 +277,8 @@ module Bundler
|
|
277
277
|
if repo_name =~ GITHUB_PULL_REQUEST_URL
|
278
278
|
{
|
279
279
|
"git" => "https://github.com/#{$1}.git",
|
280
|
-
"branch" =>
|
281
|
-
"ref" =>
|
280
|
+
"branch" => nil,
|
281
|
+
"ref" => "refs/pull/#{$2}/head",
|
282
282
|
"tag" => nil,
|
283
283
|
}
|
284
284
|
else
|
@@ -16,7 +16,6 @@ module Bundler
|
|
16
16
|
@dependencies = []
|
17
17
|
@platform = platform || Gem::Platform::RUBY
|
18
18
|
@source = source
|
19
|
-
@specification = nil
|
20
19
|
@force_ruby_platform = default_force_ruby_platform
|
21
20
|
end
|
22
21
|
|
@@ -80,37 +79,41 @@ module Bundler
|
|
80
79
|
def materialize_for_installation
|
81
80
|
source.local!
|
82
81
|
|
83
|
-
|
84
|
-
|
82
|
+
matching_specs = source.specs.search(use_exact_resolved_specifications? ? self : [name, version])
|
83
|
+
return self if matching_specs.empty?
|
85
84
|
|
86
|
-
|
85
|
+
candidates = if use_exact_resolved_specifications?
|
86
|
+
matching_specs
|
87
87
|
else
|
88
|
-
|
89
|
-
end
|
88
|
+
target_platform = ruby_platform_materializes_to_ruby_platform? ? platform : local_platform
|
90
89
|
|
91
|
-
|
90
|
+
installable_candidates = GemHelpers.select_best_platform_match(matching_specs, target_platform)
|
92
91
|
|
93
|
-
|
94
|
-
|
92
|
+
specification = __materialize__(installable_candidates)
|
93
|
+
return specification unless specification.nil?
|
95
94
|
|
96
|
-
|
97
|
-
|
98
|
-
search = candidates.reverse.find do |spec|
|
99
|
-
spec.is_a?(StubSpecification) ||
|
100
|
-
(spec.matches_current_ruby? &&
|
101
|
-
spec.matches_current_rubygems?)
|
102
|
-
end
|
103
|
-
if search.nil? && Bundler.frozen_bundle?
|
104
|
-
search = candidates.last
|
105
|
-
else
|
106
|
-
search.dependencies = dependencies if search && search.full_name == full_name && (search.is_a?(RemoteSpecification) || search.is_a?(EndpointSpecification))
|
95
|
+
if target_platform != platform
|
96
|
+
installable_candidates = GemHelpers.select_best_platform_match(matching_specs, platform)
|
107
97
|
end
|
108
|
-
|
98
|
+
|
99
|
+
installable_candidates
|
109
100
|
end
|
101
|
+
|
102
|
+
__materialize__(candidates)
|
110
103
|
end
|
111
104
|
|
112
|
-
def
|
113
|
-
|
105
|
+
def __materialize__(candidates)
|
106
|
+
search = candidates.reverse.find do |spec|
|
107
|
+
spec.is_a?(StubSpecification) ||
|
108
|
+
(spec.matches_current_ruby? &&
|
109
|
+
spec.matches_current_rubygems?)
|
110
|
+
end
|
111
|
+
if search.nil? && Bundler.frozen_bundle?
|
112
|
+
search = candidates.last
|
113
|
+
else
|
114
|
+
search.dependencies = dependencies if search && search.full_name == full_name && (search.is_a?(RemoteSpecification) || search.is_a?(EndpointSpecification))
|
115
|
+
end
|
116
|
+
search
|
114
117
|
end
|
115
118
|
|
116
119
|
def to_s
|
@@ -132,16 +135,8 @@ module Bundler
|
|
132
135
|
|
133
136
|
private
|
134
137
|
|
135
|
-
def
|
136
|
-
|
137
|
-
end
|
138
|
-
|
139
|
-
def method_missing(method, *args, &blk)
|
140
|
-
raise "LazySpecification has not been materialized yet (calling :#{method} #{args.inspect})" unless @specification
|
141
|
-
|
142
|
-
return super unless respond_to?(method)
|
143
|
-
|
144
|
-
@specification.send(method, *args, &blk)
|
138
|
+
def use_exact_resolved_specifications?
|
139
|
+
@use_exact_resolved_specifications ||= !source.is_a?(Source::Path) && ruby_platform_materializes_to_ruby_platform?
|
145
140
|
end
|
146
141
|
|
147
142
|
#
|
@@ -7,7 +7,7 @@
|
|
7
7
|
\fBbundle\-open\fR \- Opens the source directory for a gem in your bundle
|
8
8
|
.
|
9
9
|
.SH "SYNOPSIS"
|
10
|
-
\fBbundle open\fR [GEM]
|
10
|
+
\fBbundle open\fR [GEM] [\-\-path=PATH]
|
11
11
|
.
|
12
12
|
.SH "DESCRIPTION"
|
13
13
|
Opens the source directory of the provided GEM in your editor\.
|
@@ -30,3 +30,23 @@ bundle open \'rack\'
|
|
30
30
|
.
|
31
31
|
.P
|
32
32
|
Will open the source directory for the \'rack\' gem in your bundle\.
|
33
|
+
.
|
34
|
+
.IP "" 4
|
35
|
+
.
|
36
|
+
.nf
|
37
|
+
|
38
|
+
bundle open \'rack\' \-\-path \'README\.md\'
|
39
|
+
.
|
40
|
+
.fi
|
41
|
+
.
|
42
|
+
.IP "" 0
|
43
|
+
.
|
44
|
+
.P
|
45
|
+
Will open the README\.md file of the \'rack\' gem source in your bundle\.
|
46
|
+
.
|
47
|
+
.SH "OPTIONS"
|
48
|
+
.
|
49
|
+
.TP
|
50
|
+
\fB\-\-path\fR
|
51
|
+
Specify GEM source relative path to open\.
|
52
|
+
|
@@ -3,7 +3,7 @@ bundle-open(1) -- Opens the source directory for a gem in your bundle
|
|
3
3
|
|
4
4
|
## SYNOPSIS
|
5
5
|
|
6
|
-
`bundle open` [GEM]
|
6
|
+
`bundle open` [GEM] [--path=PATH]
|
7
7
|
|
8
8
|
## DESCRIPTION
|
9
9
|
|
@@ -17,3 +17,11 @@ Example:
|
|
17
17
|
bundle open 'rack'
|
18
18
|
|
19
19
|
Will open the source directory for the 'rack' gem in your bundle.
|
20
|
+
|
21
|
+
bundle open 'rack' --path 'README.md'
|
22
|
+
|
23
|
+
Will open the README.md file of the 'rack' gem source in your bundle.
|
24
|
+
|
25
|
+
## OPTIONS
|
26
|
+
* `--path`:
|
27
|
+
Specify GEM source relative path to open.
|
@@ -41,6 +41,18 @@ module Bundler
|
|
41
41
|
@spec_group.to_specs(package.force_ruby_platform?)
|
42
42
|
end
|
43
43
|
|
44
|
+
def generic!
|
45
|
+
@ruby_only = true
|
46
|
+
|
47
|
+
self
|
48
|
+
end
|
49
|
+
|
50
|
+
def platform_specific!
|
51
|
+
@ruby_only = false
|
52
|
+
|
53
|
+
self
|
54
|
+
end
|
55
|
+
|
44
56
|
def prerelease?
|
45
57
|
@version.prerelease?
|
46
58
|
end
|
@@ -53,27 +65,20 @@ module Bundler
|
|
53
65
|
[@version, @ruby_only ? -1 : 1]
|
54
66
|
end
|
55
67
|
|
56
|
-
def canonical?
|
57
|
-
!@spec_group.empty?
|
58
|
-
end
|
59
|
-
|
60
68
|
def <=>(other)
|
61
69
|
return unless other.is_a?(self.class)
|
62
|
-
return @version <=> other.version unless canonical? && other.canonical?
|
63
70
|
|
64
71
|
sort_obj <=> other.sort_obj
|
65
72
|
end
|
66
73
|
|
67
74
|
def ==(other)
|
68
75
|
return unless other.is_a?(self.class)
|
69
|
-
return @version == other.version unless canonical? && other.canonical?
|
70
76
|
|
71
77
|
sort_obj == other.sort_obj
|
72
78
|
end
|
73
79
|
|
74
80
|
def eql?(other)
|
75
81
|
return unless other.is_a?(self.class)
|
76
|
-
return @version.eql?(other.version) unless canonical? || other.canonical?
|
77
82
|
|
78
83
|
sort_obj.eql?(other.sort_obj)
|
79
84
|
end
|
data/lib/bundler/resolver.rb
CHANGED
@@ -337,7 +337,8 @@ module Bundler
|
|
337
337
|
|
338
338
|
def requirement_to_range(requirement)
|
339
339
|
ranges = requirement.requirements.map do |(op, version)|
|
340
|
-
ver = Resolver::Candidate.new(version)
|
340
|
+
ver = Resolver::Candidate.new(version).generic!
|
341
|
+
platform_ver = Resolver::Candidate.new(version).platform_specific!
|
341
342
|
|
342
343
|
case op
|
343
344
|
when "~>"
|
@@ -345,17 +346,17 @@ module Bundler
|
|
345
346
|
bump = Resolver::Candidate.new(version.bump.to_s + ".A")
|
346
347
|
PubGrub::VersionRange.new(:name => name, :min => ver, :max => bump, :include_min => true)
|
347
348
|
when ">"
|
348
|
-
PubGrub::VersionRange.new(:min =>
|
349
|
+
PubGrub::VersionRange.new(:min => platform_ver)
|
349
350
|
when ">="
|
350
351
|
PubGrub::VersionRange.new(:min => ver, :include_min => true)
|
351
352
|
when "<"
|
352
353
|
PubGrub::VersionRange.new(:max => ver)
|
353
354
|
when "<="
|
354
|
-
PubGrub::VersionRange.new(:max =>
|
355
|
+
PubGrub::VersionRange.new(:max => platform_ver, :include_max => true)
|
355
356
|
when "="
|
356
|
-
PubGrub::VersionRange.new(:min => ver, :max =>
|
357
|
+
PubGrub::VersionRange.new(:min => ver, :max => platform_ver, :include_min => true, :include_max => true)
|
357
358
|
when "!="
|
358
|
-
PubGrub::VersionRange.new(:min => ver, :max =>
|
359
|
+
PubGrub::VersionRange.new(:min => ver, :max => platform_ver, :include_min => true, :include_max => true).invert
|
359
360
|
else
|
360
361
|
raise "bad version specifier: #{op}"
|
361
362
|
end
|
@@ -1,5 +1,5 @@
|
|
1
1
|
# This Cargo.toml is here to let externals tools (IDEs, etc.) know that this is
|
2
|
-
# a Rust project. Your extensions
|
2
|
+
# a Rust project. Your extensions dependencies should be added to the Cargo.toml
|
3
3
|
# in the ext/ directory.
|
4
4
|
|
5
5
|
[workspace]
|
@@ -148,7 +148,7 @@ module Bundler::PubGrub
|
|
148
148
|
while !ranges.empty?
|
149
149
|
ne = []
|
150
150
|
range = ranges.shift
|
151
|
-
while !ranges.empty? && ranges[0].min == range.max
|
151
|
+
while !ranges.empty? && ranges[0].min.to_s == range.max.to_s
|
152
152
|
ne << range.max
|
153
153
|
range = range.span(ranges.shift)
|
154
154
|
end
|
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.4.
|
4
|
+
version: 2.4.3
|
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: 2023-01-
|
25
|
+
date: 2023-01-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
|
@@ -380,7 +380,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
380
380
|
- !ruby/object:Gem::Version
|
381
381
|
version: 3.0.1
|
382
382
|
requirements: []
|
383
|
-
rubygems_version: 3.4.
|
383
|
+
rubygems_version: 3.4.3
|
384
384
|
signing_key:
|
385
385
|
specification_version: 4
|
386
386
|
summary: The best way to manage your application's dependencies
|