bundler 2.3.20 → 2.3.21
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 +23 -0
- data/lib/bundler/build_metadata.rb +2 -2
- data/lib/bundler/cli/platform.rb +1 -1
- data/lib/bundler/definition.rb +27 -22
- data/lib/bundler/endpoint_specification.rb +1 -12
- data/lib/bundler/gem_version_promoter.rb +4 -0
- data/lib/bundler/inline.rb +1 -1
- data/lib/bundler/installer.rb +6 -11
- data/lib/bundler/lazy_specification.rb +2 -4
- 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 +11 -2
- data/lib/bundler/man/bundle-config.1.ronn +4 -1
- data/lib/bundler/man/bundle-doctor.1 +1 -1
- data/lib/bundler/man/bundle-exec.1 +1 -1
- data/lib/bundler/man/bundle-gem.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 +1 -1
- data/lib/bundler/man/bundle-install.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 +81 -0
- data/lib/bundler/man/bundle-plugin.1.ronn +59 -0
- 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-viz.1 +1 -1
- data/lib/bundler/man/bundle.1 +5 -1
- data/lib/bundler/man/bundle.1.ronn +3 -0
- data/lib/bundler/man/gemfile.5 +1 -1
- data/lib/bundler/man/index.txt +1 -0
- data/lib/bundler/match_metadata.rb +13 -0
- data/lib/bundler/match_remote_metadata.rb +26 -0
- data/lib/bundler/plugin.rb +2 -0
- data/lib/bundler/remote_specification.rb +1 -7
- data/lib/bundler/resolver/spec_group.rb +11 -8
- data/lib/bundler/resolver.rb +39 -17
- data/lib/bundler/rubygems_ext.rb +28 -0
- data/lib/bundler/spec_set.rb +19 -9
- data/lib/bundler/version.rb +1 -1
- data/lib/bundler.rb +3 -4
- metadata +7 -4
- data/lib/bundler/incomplete_specification.rb +0 -12
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 06eb5dcedd936231226213f5eeca20b368e575d153efa728a27ecb0912c41386
|
4
|
+
data.tar.gz: 60cfd094b573635123576691ceb73b62d297698b217cc68933e0ad4b293ce7b9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 04ec1c67333ae78914e6076b6b68024d9c8d57199a7d1a3898a44e643c4f91d5132351ee48590dc9c8167a64a9c838906683ac9b09255394c425193b9741ca34
|
7
|
+
data.tar.gz: aa077c408592fe31ed5102e8d4b0a5f8f103691236fe71ee40e8461d926047e2e4c65e600557a8addca192e7ad4c8d71c69a34b4ded4bd06d8427f7d437a5d9c
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,26 @@
|
|
1
|
+
# 2.3.21 (August 24, 2022)
|
2
|
+
|
3
|
+
## Enhancements:
|
4
|
+
|
5
|
+
- Backport non gnu libc linux support from RubyGems [#4488](https://github.com/rubygems/rubygems/pull/4488)
|
6
|
+
- Improve `Bundler.rm_rf` error message [#5861](https://github.com/rubygems/rubygems/pull/5861)
|
7
|
+
- Disallow both `--branch` and `--ref` at the same time in bundle-plugin [#5855](https://github.com/rubygems/rubygems/pull/5855)
|
8
|
+
- Restore previous performance of private RubyGems servers [#5826](https://github.com/rubygems/rubygems/pull/5826)
|
9
|
+
|
10
|
+
## Bug fixes:
|
11
|
+
|
12
|
+
- Fix conservative update downgrading top level gems [#5847](https://github.com/rubygems/rubygems/pull/5847)
|
13
|
+
- Fix edge case where `bundler/inline` unintentionally skips install [#5848](https://github.com/rubygems/rubygems/pull/5848)
|
14
|
+
- Fix `bundle platform` crash when there's a lockfile with no Ruby locked [#5850](https://github.com/rubygems/rubygems/pull/5850)
|
15
|
+
- Fix crash when incomplete locked specifications are found in transitive dependencies [#5840](https://github.com/rubygems/rubygems/pull/5840)
|
16
|
+
- Fix Ruby platform incorrectly removed on `bundle update` [#5832](https://github.com/rubygems/rubygems/pull/5832)
|
17
|
+
|
18
|
+
## Documentation:
|
19
|
+
|
20
|
+
- Explain cancelled CLI deprecations clearly [#5864](https://github.com/rubygems/rubygems/pull/5864)
|
21
|
+
- Improve `bundle config` command synopsis [#5854](https://github.com/rubygems/rubygems/pull/5854)
|
22
|
+
- Introduce bundle-plugin(1) man [#5853](https://github.com/rubygems/rubygems/pull/5853)
|
23
|
+
|
1
24
|
# 2.3.20 (August 10, 2022)
|
2
25
|
|
3
26
|
## 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 = "2022-08-
|
8
|
-
@git_commit_sha = "
|
7
|
+
@built_at = "2022-08-24".freeze
|
8
|
+
@git_commit_sha = "d54be5fdd8".freeze
|
9
9
|
@release = true
|
10
10
|
# end ivars
|
11
11
|
|
data/lib/bundler/cli/platform.rb
CHANGED
@@ -9,7 +9,7 @@ module Bundler
|
|
9
9
|
|
10
10
|
def run
|
11
11
|
platforms, ruby_version = Bundler.ui.silence do
|
12
|
-
locked_ruby_version = Bundler.locked_gems && Bundler.locked_gems.ruby_version
|
12
|
+
locked_ruby_version = Bundler.locked_gems && Bundler.locked_gems.ruby_version&.gsub(/p\d+\Z/, "")
|
13
13
|
gemfile_ruby_version = Bundler.definition.ruby_version && Bundler.definition.ruby_version.single_version_string
|
14
14
|
[Bundler.definition.platforms.map {|p| "* #{p}" },
|
15
15
|
locked_ruby_version || gemfile_ruby_version]
|
data/lib/bundler/definition.rb
CHANGED
@@ -145,8 +145,6 @@ module Bundler
|
|
145
145
|
@dependency_changes = converge_dependencies
|
146
146
|
@local_changes = converge_locals
|
147
147
|
|
148
|
-
@reresolve = nil
|
149
|
-
|
150
148
|
@requires = compute_requires
|
151
149
|
end
|
152
150
|
|
@@ -218,6 +216,7 @@ module Bundler
|
|
218
216
|
true
|
219
217
|
rescue BundlerError => e
|
220
218
|
@resolve = nil
|
219
|
+
@resolver = nil
|
221
220
|
@specs = nil
|
222
221
|
@gem_version_promoter = nil
|
223
222
|
|
@@ -288,7 +287,7 @@ module Bundler
|
|
288
287
|
end
|
289
288
|
else
|
290
289
|
Bundler.ui.debug("Found changes from the lockfile, re-resolving dependencies because #{change_reason}")
|
291
|
-
|
290
|
+
resolver.start(expanded_dependencies)
|
292
291
|
end
|
293
292
|
end
|
294
293
|
|
@@ -482,11 +481,18 @@ module Bundler
|
|
482
481
|
|
483
482
|
private
|
484
483
|
|
485
|
-
def
|
486
|
-
|
487
|
-
|
488
|
-
|
489
|
-
|
484
|
+
def resolver
|
485
|
+
@resolver ||= begin
|
486
|
+
last_resolve = converge_locked_specs
|
487
|
+
Resolver.new(source_requirements, last_resolve, gem_version_promoter, additional_base_requirements_for_resolve, platforms)
|
488
|
+
end
|
489
|
+
end
|
490
|
+
|
491
|
+
def expanded_dependencies
|
492
|
+
@expanded_dependencies ||= begin
|
493
|
+
remove_ruby_from_platforms_if_necessary!(dependencies)
|
494
|
+
expand_dependencies(dependencies + metadata_dependencies, true)
|
495
|
+
end
|
490
496
|
end
|
491
497
|
|
492
498
|
def filter_specs(specs, deps)
|
@@ -514,15 +520,13 @@ module Bundler
|
|
514
520
|
raise GemNotFound, "Could not find #{missing_specs_list.join(" nor ")}"
|
515
521
|
end
|
516
522
|
|
517
|
-
|
523
|
+
loop do
|
518
524
|
incomplete_specs = specs.incomplete_specs
|
525
|
+
break if incomplete_specs.empty?
|
519
526
|
|
520
|
-
|
521
|
-
|
522
|
-
|
523
|
-
@resolve = reresolve
|
524
|
-
specs = resolve.materialize(dependencies)
|
525
|
-
end
|
527
|
+
Bundler.ui.debug("The lockfile does not have all gems needed for the current platform though, Bundler will still re-resolve dependencies")
|
528
|
+
@resolve = resolver.start(expanded_dependencies, :exclude_specs => incomplete_specs)
|
529
|
+
specs = resolve.materialize(dependencies)
|
526
530
|
end
|
527
531
|
|
528
532
|
bundler = sources.metadata_source.specs.search(Gem::Dependency.new("bundler", VERSION)).last
|
@@ -715,7 +719,9 @@ module Bundler
|
|
715
719
|
# commonly happen if the Gemfile has changed since the lockfile was last
|
716
720
|
# generated
|
717
721
|
def converge_locked_specs
|
718
|
-
|
722
|
+
converged = converge_specs(@locked_specs)
|
723
|
+
|
724
|
+
resolve = SpecSet.new(converged.reject {|s| @unlock[:gems].include?(s.name) })
|
719
725
|
|
720
726
|
diff = nil
|
721
727
|
|
@@ -788,7 +794,7 @@ module Bundler
|
|
788
794
|
end
|
789
795
|
end
|
790
796
|
|
791
|
-
|
797
|
+
filter_specs(converged, deps)
|
792
798
|
end
|
793
799
|
|
794
800
|
def metadata_dependencies
|
@@ -877,10 +883,8 @@ module Bundler
|
|
877
883
|
def additional_base_requirements_for_resolve
|
878
884
|
return [] unless @locked_gems && unlocking? && !sources.expired_sources?(@locked_gems.sources)
|
879
885
|
converge_specs(@originally_locked_specs).map do |locked_spec|
|
880
|
-
name
|
881
|
-
|
882
|
-
DepProxy.get_proxy(dep, locked_spec.platform)
|
883
|
-
end
|
886
|
+
Dependency.new(locked_spec.name, ">= #{locked_spec.version}")
|
887
|
+
end.uniq
|
884
888
|
end
|
885
889
|
|
886
890
|
def remove_ruby_from_platforms_if_necessary!(dependencies)
|
@@ -888,10 +892,11 @@ module Bundler
|
|
888
892
|
Bundler.local_platform == Gem::Platform::RUBY ||
|
889
893
|
!platforms.include?(Gem::Platform::RUBY) ||
|
890
894
|
(@new_platform && platforms.last == Gem::Platform::RUBY) ||
|
891
|
-
!@originally_locked_specs.incomplete_ruby_specs?(dependencies)
|
895
|
+
!@originally_locked_specs.incomplete_ruby_specs?(expand_dependencies(dependencies))
|
892
896
|
|
893
897
|
remove_platform(Gem::Platform::RUBY)
|
894
898
|
add_current_platform
|
899
|
+
resolver.platforms = @platforms
|
895
900
|
end
|
896
901
|
|
897
902
|
def source_map
|
@@ -3,7 +3,7 @@
|
|
3
3
|
module Bundler
|
4
4
|
# used for Creating Specifications from the Gemcutter Endpoint
|
5
5
|
class EndpointSpecification < Gem::Specification
|
6
|
-
include
|
6
|
+
include MatchRemoteMetadata
|
7
7
|
|
8
8
|
attr_reader :name, :version, :platform, :checksum
|
9
9
|
attr_accessor :source, :remote, :dependencies
|
@@ -22,17 +22,6 @@ module Bundler
|
|
22
22
|
parse_metadata(metadata)
|
23
23
|
end
|
24
24
|
|
25
|
-
def required_ruby_version
|
26
|
-
@required_ruby_version ||= _remote_specification.required_ruby_version
|
27
|
-
end
|
28
|
-
|
29
|
-
# A fallback is included because the original version of the specification
|
30
|
-
# API didn't include that field, so some marshalled specs in the index have it
|
31
|
-
# set to +nil+.
|
32
|
-
def required_rubygems_version
|
33
|
-
@required_rubygems_version ||= _remote_specification.required_rubygems_version || Gem::Requirement.default
|
34
|
-
end
|
35
|
-
|
36
25
|
def fetch_platform
|
37
26
|
@platform
|
38
27
|
end
|
data/lib/bundler/inline.rb
CHANGED
@@ -54,7 +54,7 @@ def gemfile(install = false, options = {}, &gemfile)
|
|
54
54
|
|
55
55
|
Bundler.ui = install ? ui : Bundler::UI::Silent.new
|
56
56
|
if install || definition.missing_specs?
|
57
|
-
Bundler.settings.temporary(:inline => true) do
|
57
|
+
Bundler.settings.temporary(:inline => true, :no_install => false) do
|
58
58
|
installer = Bundler::Installer.install(Bundler.root, definition, :system => true)
|
59
59
|
installer.post_install_messages.each do |name, message|
|
60
60
|
Bundler.ui.info "Post-install message from #{name}:\n#{message}"
|
data/lib/bundler/installer.rb
CHANGED
@@ -238,19 +238,14 @@ module Bundler
|
|
238
238
|
end
|
239
239
|
|
240
240
|
def ensure_specs_are_compatible!
|
241
|
-
system_ruby = Bundler::RubyVersion.system
|
242
|
-
rubygems_version = Bundler.rubygems.version
|
243
241
|
@definition.specs.each do |spec|
|
244
|
-
|
245
|
-
|
246
|
-
|
247
|
-
"which is incompatible with the current version, #{system_ruby}"
|
248
|
-
end
|
242
|
+
unless spec.matches_current_ruby?
|
243
|
+
raise InstallError, "#{spec.full_name} requires ruby version #{spec.required_ruby_version}, " \
|
244
|
+
"which is incompatible with the current version, #{Gem.ruby_version}"
|
249
245
|
end
|
250
|
-
|
251
|
-
|
252
|
-
|
253
|
-
"which is incompatible with the current version, #{rubygems_version}"
|
246
|
+
unless spec.matches_current_rubygems?
|
247
|
+
raise InstallError, "#{spec.full_name} requires rubygems version #{spec.required_rubygems_version}, " \
|
248
|
+
"which is incompatible with the current version, #{Gem.rubygems_version}"
|
254
249
|
end
|
255
250
|
end
|
256
251
|
end
|
@@ -1,7 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require_relative "match_platform"
|
4
|
-
|
5
3
|
module Bundler
|
6
4
|
class LazySpecification
|
7
5
|
include MatchPlatform
|
@@ -97,8 +95,8 @@ module Bundler
|
|
97
95
|
@specification = begin
|
98
96
|
search = candidates.reverse.find do |spec|
|
99
97
|
spec.is_a?(StubSpecification) ||
|
100
|
-
(spec.
|
101
|
-
spec.
|
98
|
+
(spec.matches_current_ruby? &&
|
99
|
+
spec.matches_current_rubygems?)
|
102
100
|
end
|
103
101
|
if search.nil? && Bundler.frozen_bundle?
|
104
102
|
search = candidates.last
|
@@ -1,7 +1,7 @@
|
|
1
1
|
.\" generated with Ronn/v0.7.3
|
2
2
|
.\" http://github.com/rtomayko/ronn/tree/0.7.3
|
3
3
|
.
|
4
|
-
.TH "BUNDLE\-CACHE" "1" "
|
4
|
+
.TH "BUNDLE\-CACHE" "1" "August 2022" "" ""
|
5
5
|
.
|
6
6
|
.SH "NAME"
|
7
7
|
\fBbundle\-cache\fR \- Package your needed \fB\.gem\fR files into your application
|
@@ -1,7 +1,7 @@
|
|
1
1
|
.\" generated with Ronn/v0.7.3
|
2
2
|
.\" http://github.com/rtomayko/ronn/tree/0.7.3
|
3
3
|
.
|
4
|
-
.TH "BUNDLE\-CHECK" "1" "
|
4
|
+
.TH "BUNDLE\-CHECK" "1" "August 2022" "" ""
|
5
5
|
.
|
6
6
|
.SH "NAME"
|
7
7
|
\fBbundle\-check\fR \- Verifies if dependencies are satisfied by installed gems
|
@@ -1,13 +1,22 @@
|
|
1
1
|
.\" generated with Ronn/v0.7.3
|
2
2
|
.\" http://github.com/rtomayko/ronn/tree/0.7.3
|
3
3
|
.
|
4
|
-
.TH "BUNDLE\-CONFIG" "1" "
|
4
|
+
.TH "BUNDLE\-CONFIG" "1" "August 2022" "" ""
|
5
5
|
.
|
6
6
|
.SH "NAME"
|
7
7
|
\fBbundle\-config\fR \- Set bundler configuration options
|
8
8
|
.
|
9
9
|
.SH "SYNOPSIS"
|
10
|
-
\fBbundle config\fR
|
10
|
+
\fBbundle config\fR list
|
11
|
+
.
|
12
|
+
.br
|
13
|
+
\fBbundle config\fR [get] NAME
|
14
|
+
.
|
15
|
+
.br
|
16
|
+
\fBbundle config\fR [set] NAME VALUE
|
17
|
+
.
|
18
|
+
.br
|
19
|
+
\fBbundle config\fR unset NAME
|
11
20
|
.
|
12
21
|
.SH "DESCRIPTION"
|
13
22
|
This command allows you to interact with Bundler\'s configuration system\.
|
@@ -3,7 +3,10 @@ bundle-config(1) -- Set bundler configuration options
|
|
3
3
|
|
4
4
|
## SYNOPSIS
|
5
5
|
|
6
|
-
`bundle config`
|
6
|
+
`bundle config` list<br>
|
7
|
+
`bundle config` [get] NAME<br>
|
8
|
+
`bundle config` [set] NAME VALUE<br>
|
9
|
+
`bundle config` unset NAME
|
7
10
|
|
8
11
|
## DESCRIPTION
|
9
12
|
|
@@ -1,7 +1,7 @@
|
|
1
1
|
.\" generated with Ronn/v0.7.3
|
2
2
|
.\" http://github.com/rtomayko/ronn/tree/0.7.3
|
3
3
|
.
|
4
|
-
.TH "BUNDLE\-INIT" "1" "
|
4
|
+
.TH "BUNDLE\-INIT" "1" "August 2022" "" ""
|
5
5
|
.
|
6
6
|
.SH "NAME"
|
7
7
|
\fBbundle\-init\fR \- Generates a Gemfile into the current working directory
|
@@ -1,7 +1,7 @@
|
|
1
1
|
.\" generated with Ronn/v0.7.3
|
2
2
|
.\" http://github.com/rtomayko/ronn/tree/0.7.3
|
3
3
|
.
|
4
|
-
.TH "BUNDLE\-INJECT" "1" "
|
4
|
+
.TH "BUNDLE\-INJECT" "1" "August 2022" "" ""
|
5
5
|
.
|
6
6
|
.SH "NAME"
|
7
7
|
\fBbundle\-inject\fR \- Add named gem(s) with version requirements to Gemfile
|
@@ -1,7 +1,7 @@
|
|
1
1
|
.\" generated with Ronn/v0.7.3
|
2
2
|
.\" http://github.com/rtomayko/ronn/tree/0.7.3
|
3
3
|
.
|
4
|
-
.TH "BUNDLE\-INSTALL" "1" "
|
4
|
+
.TH "BUNDLE\-INSTALL" "1" "August 2022" "" ""
|
5
5
|
.
|
6
6
|
.SH "NAME"
|
7
7
|
\fBbundle\-install\fR \- Install the dependencies specified in your Gemfile
|
@@ -1,7 +1,7 @@
|
|
1
1
|
.\" generated with Ronn/v0.7.3
|
2
2
|
.\" http://github.com/rtomayko/ronn/tree/0.7.3
|
3
3
|
.
|
4
|
-
.TH "BUNDLE\-OUTDATED" "1" "
|
4
|
+
.TH "BUNDLE\-OUTDATED" "1" "August 2022" "" ""
|
5
5
|
.
|
6
6
|
.SH "NAME"
|
7
7
|
\fBbundle\-outdated\fR \- List installed gems with newer versions available
|
@@ -1,7 +1,7 @@
|
|
1
1
|
.\" generated with Ronn/v0.7.3
|
2
2
|
.\" http://github.com/rtomayko/ronn/tree/0.7.3
|
3
3
|
.
|
4
|
-
.TH "BUNDLE\-PLATFORM" "1" "
|
4
|
+
.TH "BUNDLE\-PLATFORM" "1" "August 2022" "" ""
|
5
5
|
.
|
6
6
|
.SH "NAME"
|
7
7
|
\fBbundle\-platform\fR \- Displays platform compatibility information
|
@@ -0,0 +1,81 @@
|
|
1
|
+
.\" generated with Ronn/v0.7.3
|
2
|
+
.\" http://github.com/rtomayko/ronn/tree/0.7.3
|
3
|
+
.
|
4
|
+
.TH "BUNDLE\-PLUGIN" "1" "August 2022" "" ""
|
5
|
+
.
|
6
|
+
.SH "NAME"
|
7
|
+
\fBbundle\-plugin\fR \- Manage Bundler plugins
|
8
|
+
.
|
9
|
+
.SH "SYNOPSIS"
|
10
|
+
\fBbundle plugin\fR install PLUGINS [\-\-source=\fISOURCE\fR] [\-\-version=\fIversion\fR] [\-\-git|\-\-local_git=\fIgit\-url\fR] [\-\-branch=\fIbranch\fR|\-\-ref=\fIrev\fR]
|
11
|
+
.
|
12
|
+
.br
|
13
|
+
\fBbundle plugin\fR uninstall PLUGINS
|
14
|
+
.
|
15
|
+
.br
|
16
|
+
\fBbundle plugin\fR list
|
17
|
+
.
|
18
|
+
.br
|
19
|
+
\fBbundle plugin\fR help [COMMAND]
|
20
|
+
.
|
21
|
+
.SH "DESCRIPTION"
|
22
|
+
You can install, uninstall, and list plugin(s) with this command to extend functionalities of Bundler\.
|
23
|
+
.
|
24
|
+
.SH "SUB\-COMMANDS"
|
25
|
+
.
|
26
|
+
.SS "install"
|
27
|
+
Install the given plugin(s)\.
|
28
|
+
.
|
29
|
+
.IP "\(bu" 4
|
30
|
+
\fBbundle plugin install bundler\-graph\fR: Install bundler\-graph gem from RubyGems\.org\. The global source, specified in source in Gemfile is ignored\.
|
31
|
+
.
|
32
|
+
.IP "\(bu" 4
|
33
|
+
\fBbundle plugin install bundler\-graph \-\-source https://example\.com\fR: Install bundler\-graph gem from example\.com\. The global source, specified in source in Gemfile is not considered\.
|
34
|
+
.
|
35
|
+
.IP "\(bu" 4
|
36
|
+
\fBbundle plugin install bundler\-graph \-\-version 0\.2\.1\fR: You can specify the version of the gem via \fB\-\-version\fR\.
|
37
|
+
.
|
38
|
+
.IP "\(bu" 4
|
39
|
+
\fBbundle plugin install bundler\-graph \-\-git https://github\.com/rubygems/bundler\-graph\fR: Install bundler\-graph gem from Git repository\. \fB\-\-git\fR can be replaced with \fB\-\-local\-git\fR\. You cannot use both \fB\-\-git\fR and \fB\-\-local\-git\fR\. You can use standard Git URLs like:
|
40
|
+
.
|
41
|
+
.IP "\(bu" 4
|
42
|
+
\fBssh://[user@]host\.xz[:port]/path/to/repo\.git\fR
|
43
|
+
.
|
44
|
+
.IP "\(bu" 4
|
45
|
+
\fBhttp[s]://host\.xz[:port]/path/to/repo\.git\fR
|
46
|
+
.
|
47
|
+
.IP "\(bu" 4
|
48
|
+
\fB/path/to/repo\fR
|
49
|
+
.
|
50
|
+
.IP "\(bu" 4
|
51
|
+
\fBfile:///path/to/repo\fR
|
52
|
+
.
|
53
|
+
.IP "" 0
|
54
|
+
.
|
55
|
+
.IP
|
56
|
+
When you specify \fB\-\-git\fR/\fB\-\-local\-git\fR, you can use \fB\-\-branch\fR or \fB\-\-ref\fR to specify any branch, tag, or commit hash (revision) to use\. When you specify both, only the latter is used\.
|
57
|
+
.
|
58
|
+
.IP "" 0
|
59
|
+
.
|
60
|
+
.SS "uninstall"
|
61
|
+
Uninstall the plugin(s) specified in PLUGINS\.
|
62
|
+
.
|
63
|
+
.SS "list"
|
64
|
+
List the installed plugins and available commands\.
|
65
|
+
.
|
66
|
+
.P
|
67
|
+
No options\.
|
68
|
+
.
|
69
|
+
.SS "help"
|
70
|
+
Describe subcommands or one specific subcommand\.
|
71
|
+
.
|
72
|
+
.P
|
73
|
+
No options\.
|
74
|
+
.
|
75
|
+
.SH "SEE ALSO"
|
76
|
+
.
|
77
|
+
.IP "\(bu" 4
|
78
|
+
How to write a Bundler plugin \fIhttps://bundler\.io/guides/bundler_plugins\.html\fR
|
79
|
+
.
|
80
|
+
.IP "" 0
|
81
|
+
|
@@ -0,0 +1,59 @@
|
|
1
|
+
bundle-plugin(1) -- Manage Bundler plugins
|
2
|
+
==========================================
|
3
|
+
|
4
|
+
## SYNOPSIS
|
5
|
+
|
6
|
+
`bundle plugin` install PLUGINS [--source=<SOURCE>] [--version=<version>]
|
7
|
+
[--git|--local_git=<git-url>] [--branch=<branch>|--ref=<rev>]<br>
|
8
|
+
`bundle plugin` uninstall PLUGINS<br>
|
9
|
+
`bundle plugin` list<br>
|
10
|
+
`bundle plugin` help [COMMAND]
|
11
|
+
|
12
|
+
## DESCRIPTION
|
13
|
+
|
14
|
+
You can install, uninstall, and list plugin(s) with this command to extend functionalities of Bundler.
|
15
|
+
|
16
|
+
## SUB-COMMANDS
|
17
|
+
|
18
|
+
### install
|
19
|
+
|
20
|
+
Install the given plugin(s).
|
21
|
+
|
22
|
+
* `bundle plugin install bundler-graph`:
|
23
|
+
Install bundler-graph gem from RubyGems.org. The global source, specified in source in Gemfile is ignored.
|
24
|
+
|
25
|
+
* `bundle plugin install bundler-graph --source https://example.com`:
|
26
|
+
Install bundler-graph gem from example.com. The global source, specified in source in Gemfile is not considered.
|
27
|
+
|
28
|
+
* `bundle plugin install bundler-graph --version 0.2.1`:
|
29
|
+
You can specify the version of the gem via `--version`.
|
30
|
+
|
31
|
+
* `bundle plugin install bundler-graph --git https://github.com/rubygems/bundler-graph`:
|
32
|
+
Install bundler-graph gem from Git repository. `--git` can be replaced with `--local-git`. You cannot use both `--git` and `--local-git`. You can use standard Git URLs like:
|
33
|
+
|
34
|
+
* `ssh://[user@]host.xz[:port]/path/to/repo.git`
|
35
|
+
* `http[s]://host.xz[:port]/path/to/repo.git`
|
36
|
+
* `/path/to/repo`
|
37
|
+
* `file:///path/to/repo`
|
38
|
+
|
39
|
+
When you specify `--git`/`--local-git`, you can use `--branch` or `--ref` to specify any branch, tag, or commit hash (revision) to use. When you specify both, only the latter is used.
|
40
|
+
|
41
|
+
### uninstall
|
42
|
+
|
43
|
+
Uninstall the plugin(s) specified in PLUGINS.
|
44
|
+
|
45
|
+
### list
|
46
|
+
|
47
|
+
List the installed plugins and available commands.
|
48
|
+
|
49
|
+
No options.
|
50
|
+
|
51
|
+
### help
|
52
|
+
|
53
|
+
Describe subcommands or one specific subcommand.
|
54
|
+
|
55
|
+
No options.
|
56
|
+
|
57
|
+
## SEE ALSO
|
58
|
+
|
59
|
+
* [How to write a Bundler plugin](https://bundler.io/guides/bundler_plugins.html)
|
@@ -1,7 +1,7 @@
|
|
1
1
|
.\" generated with Ronn/v0.7.3
|
2
2
|
.\" http://github.com/rtomayko/ronn/tree/0.7.3
|
3
3
|
.
|
4
|
-
.TH "BUNDLE\-PRISTINE" "1" "
|
4
|
+
.TH "BUNDLE\-PRISTINE" "1" "August 2022" "" ""
|
5
5
|
.
|
6
6
|
.SH "NAME"
|
7
7
|
\fBbundle\-pristine\fR \- Restores installed gems to their pristine condition
|
@@ -1,7 +1,7 @@
|
|
1
1
|
.\" generated with Ronn/v0.7.3
|
2
2
|
.\" http://github.com/rtomayko/ronn/tree/0.7.3
|
3
3
|
.
|
4
|
-
.TH "BUNDLE\-SHOW" "1" "
|
4
|
+
.TH "BUNDLE\-SHOW" "1" "August 2022" "" ""
|
5
5
|
.
|
6
6
|
.SH "NAME"
|
7
7
|
\fBbundle\-show\fR \- Shows all the gems in your bundle, or the path to a gem
|
@@ -1,7 +1,7 @@
|
|
1
1
|
.\" generated with Ronn/v0.7.3
|
2
2
|
.\" http://github.com/rtomayko/ronn/tree/0.7.3
|
3
3
|
.
|
4
|
-
.TH "BUNDLE\-UPDATE" "1" "
|
4
|
+
.TH "BUNDLE\-UPDATE" "1" "August 2022" "" ""
|
5
5
|
.
|
6
6
|
.SH "NAME"
|
7
7
|
\fBbundle\-update\fR \- Update your gems to the latest available versions
|
data/lib/bundler/man/bundle.1
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
.\" generated with Ronn/v0.7.3
|
2
2
|
.\" http://github.com/rtomayko/ronn/tree/0.7.3
|
3
3
|
.
|
4
|
-
.TH "BUNDLE" "1" "
|
4
|
+
.TH "BUNDLE" "1" "August 2022" "" ""
|
5
5
|
.
|
6
6
|
.SH "NAME"
|
7
7
|
\fBbundle\fR \- Ruby Dependency Management
|
@@ -120,6 +120,10 @@ Display warnings about common problems
|
|
120
120
|
\fBbundle remove(1)\fR \fIbundle\-remove\.1\.html\fR
|
121
121
|
Removes gems from the Gemfile
|
122
122
|
.
|
123
|
+
.TP
|
124
|
+
\fBbundle plugin(1)\fR \fIbundle\-plugin\.1\.html\fR
|
125
|
+
Manage Bundler plugins
|
126
|
+
.
|
123
127
|
.SH "PLUGINS"
|
124
128
|
When running a command that isn\'t listed in PRIMARY COMMANDS or UTILITIES, Bundler will try to find an executable on your path named \fBbundler\-<command>\fR and execute it, passing down any extra arguments to it\.
|
125
129
|
.
|
@@ -97,6 +97,9 @@ We divide `bundle` subcommands into primary commands and utilities:
|
|
97
97
|
* [`bundle remove(1)`](bundle-remove.1.html):
|
98
98
|
Removes gems from the Gemfile
|
99
99
|
|
100
|
+
* [`bundle plugin(1)`](bundle-plugin.1.html):
|
101
|
+
Manage Bundler plugins
|
102
|
+
|
100
103
|
## PLUGINS
|
101
104
|
|
102
105
|
When running a command that isn't listed in PRIMARY COMMANDS or UTILITIES,
|
data/lib/bundler/man/gemfile.5
CHANGED
data/lib/bundler/man/index.txt
CHANGED
@@ -18,6 +18,7 @@ bundle-lock(1) bundle-lock.1
|
|
18
18
|
bundle-open(1) bundle-open.1
|
19
19
|
bundle-outdated(1) bundle-outdated.1
|
20
20
|
bundle-platform(1) bundle-platform.1
|
21
|
+
bundle-plugin(1) bundle-plugin.1
|
21
22
|
bundle-pristine(1) bundle-pristine.1
|
22
23
|
bundle-remove(1) bundle-remove.1
|
23
24
|
bundle-show(1) bundle-show.1
|
@@ -0,0 +1,13 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Bundler
|
4
|
+
module MatchMetadata
|
5
|
+
def matches_current_ruby?
|
6
|
+
@required_ruby_version.satisfied_by?(Gem.ruby_version)
|
7
|
+
end
|
8
|
+
|
9
|
+
def matches_current_rubygems?
|
10
|
+
@required_rubygems_version.satisfied_by?(Gem.rubygems_version)
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Bundler
|
4
|
+
module FetchMetadata
|
5
|
+
def matches_current_ruby?
|
6
|
+
@required_ruby_version ||= _remote_specification.required_ruby_version
|
7
|
+
|
8
|
+
super
|
9
|
+
end
|
10
|
+
|
11
|
+
def matches_current_rubygems?
|
12
|
+
# A fallback is included because the original version of the specification
|
13
|
+
# API didn't include that field, so some marshalled specs in the index have it
|
14
|
+
# set to +nil+.
|
15
|
+
@required_rubygems_version ||= _remote_specification.required_rubygems_version || Gem::Requirement.default
|
16
|
+
|
17
|
+
super
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
module MatchRemoteMetadata
|
22
|
+
include MatchMetadata
|
23
|
+
|
24
|
+
prepend FetchMetadata
|
25
|
+
end
|
26
|
+
end
|
data/lib/bundler/plugin.rb
CHANGED
@@ -36,6 +36,8 @@ module Bundler
|
|
36
36
|
# @param [Hash] options various parameters as described in description.
|
37
37
|
# Refer to cli/plugin for available options
|
38
38
|
def install(names, options)
|
39
|
+
raise InvalidOption, "You cannot specify `--branch` and `--ref` at the same time." if options["branch"] && options["ref"]
|
40
|
+
|
39
41
|
specs = Installer.new.install(names, options)
|
40
42
|
|
41
43
|
save_plugins names, specs
|
@@ -6,6 +6,7 @@ module Bundler
|
|
6
6
|
# be seeded with what we're given from the source's abbreviated index - the
|
7
7
|
# full specification will only be fetched when necessary.
|
8
8
|
class RemoteSpecification
|
9
|
+
include MatchRemoteMetadata
|
9
10
|
include MatchPlatform
|
10
11
|
include Comparable
|
11
12
|
|
@@ -28,13 +29,6 @@ module Bundler
|
|
28
29
|
@platform = _remote_specification.platform
|
29
30
|
end
|
30
31
|
|
31
|
-
# A fallback is included because the original version of the specification
|
32
|
-
# API didn't include that field, so some marshalled specs in the index have it
|
33
|
-
# set to +nil+.
|
34
|
-
def required_rubygems_version
|
35
|
-
@required_rubygems_version ||= _remote_specification.required_rubygems_version || Gem::Requirement.default
|
36
|
-
end
|
37
|
-
|
38
32
|
def full_name
|
39
33
|
if @original_platform == Gem::Platform::RUBY
|
40
34
|
"#{@name}-#{@version}"
|
@@ -97,14 +97,17 @@ module Bundler
|
|
97
97
|
def metadata_dependencies(platform)
|
98
98
|
spec = @specs[platform].first
|
99
99
|
return [] if spec.is_a?(LazySpecification)
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
100
|
+
|
101
|
+
[
|
102
|
+
metadata_dependency("Ruby", spec.required_ruby_version, platform),
|
103
|
+
metadata_dependency("RubyGems", spec.required_rubygems_version, platform),
|
104
|
+
].compact
|
105
|
+
end
|
106
|
+
|
107
|
+
def metadata_dependency(name, requirement, platform)
|
108
|
+
return if requirement.nil? || requirement.none?
|
109
|
+
|
110
|
+
DepProxy.get_proxy(Dependency.new("#{name}\0", requirement), platform)
|
108
111
|
end
|
109
112
|
end
|
110
113
|
end
|
data/lib/bundler/resolver.rb
CHANGED
@@ -7,6 +7,8 @@ module Bundler
|
|
7
7
|
|
8
8
|
include GemHelpers
|
9
9
|
|
10
|
+
attr_writer :platforms
|
11
|
+
|
10
12
|
# Figures out the best possible configuration of gems that satisfies
|
11
13
|
# the list of passed dependencies and any child dependencies without
|
12
14
|
# causing any gem activation errors.
|
@@ -19,41 +21,48 @@ module Bundler
|
|
19
21
|
# collection of gemspecs is returned. Otherwise, nil is returned.
|
20
22
|
def self.resolve(requirements, source_requirements = {}, base = [], gem_version_promoter = GemVersionPromoter.new, additional_base_requirements = [], platforms = nil)
|
21
23
|
base = SpecSet.new(base) unless base.is_a?(SpecSet)
|
22
|
-
|
23
|
-
resolver
|
24
|
-
result = resolver.start(requirements)
|
25
|
-
SpecSet.new(SpecSet.new(result).for(regular_requirements, false, platforms))
|
24
|
+
resolver = new(source_requirements, base, gem_version_promoter, additional_base_requirements, platforms)
|
25
|
+
resolver.start(requirements)
|
26
26
|
end
|
27
27
|
|
28
|
-
def initialize(source_requirements, base, gem_version_promoter, additional_base_requirements, platforms
|
28
|
+
def initialize(source_requirements, base, gem_version_promoter, additional_base_requirements, platforms)
|
29
29
|
@source_requirements = source_requirements
|
30
|
-
@metadata_requirements = metadata_requirements
|
31
30
|
@base = base
|
32
31
|
@resolver = Molinillo::Resolver.new(self, self)
|
32
|
+
@results_for = {}
|
33
33
|
@search_for = {}
|
34
|
-
@
|
35
|
-
|
36
|
-
dep = Dependency.new(ls.name, ls.version)
|
37
|
-
@base_dg.add_vertex(ls.name, DepProxy.get_proxy(dep, ls.platform), true)
|
38
|
-
end
|
39
|
-
additional_base_requirements.each {|d| @base_dg.add_vertex(d.name, d) }
|
40
|
-
@platforms = platforms.reject {|p| p != Gem::Platform::RUBY && (platforms - [p]).any? {|pl| generic(pl) == p } }
|
34
|
+
@additional_base_requirements = additional_base_requirements
|
35
|
+
@platforms = platforms
|
41
36
|
@resolving_only_for_ruby = platforms == [Gem::Platform::RUBY]
|
42
37
|
@gem_version_promoter = gem_version_promoter
|
43
38
|
@use_gvp = Bundler.feature_flag.use_gem_version_promoter_for_major_updates? || !@gem_version_promoter.major?
|
44
39
|
end
|
45
40
|
|
46
|
-
def start(requirements)
|
41
|
+
def start(requirements, exclude_specs: [])
|
42
|
+
@metadata_requirements, regular_requirements = requirements.partition {|dep| dep.name.end_with?("\0") }
|
43
|
+
|
44
|
+
exclude_specs.each do |spec|
|
45
|
+
remove_from_candidates(spec)
|
46
|
+
end
|
47
|
+
|
48
|
+
@base_dg = Molinillo::DependencyGraph.new
|
49
|
+
@base.each do |ls|
|
50
|
+
dep = Dependency.new(ls.name, ls.version)
|
51
|
+
@base_dg.add_vertex(ls.name, DepProxy.get_proxy(dep, ls.platform), true)
|
52
|
+
end
|
53
|
+
@additional_base_requirements.each {|d| @base_dg.add_vertex(d.name, d) }
|
54
|
+
|
47
55
|
@gem_version_promoter.prerelease_specified = @prerelease_specified = {}
|
48
56
|
requirements.each {|dep| @prerelease_specified[dep.name] ||= dep.prerelease? }
|
49
57
|
|
50
58
|
verify_gemfile_dependencies_are_found!(requirements)
|
51
|
-
|
52
|
-
dg.
|
59
|
+
result = @resolver.resolve(requirements, @base_dg).
|
53
60
|
map(&:payload).
|
54
61
|
reject {|sg| sg.name.end_with?("\0") }.
|
55
62
|
map(&:to_specs).
|
56
63
|
flatten
|
64
|
+
|
65
|
+
SpecSet.new(SpecSet.new(result).for(regular_requirements, false, @platforms))
|
57
66
|
rescue Molinillo::VersionConflict => e
|
58
67
|
message = version_conflict_message(e)
|
59
68
|
raise VersionConflict.new(e.conflicts.keys.uniq, message)
|
@@ -177,7 +186,7 @@ module Bundler
|
|
177
186
|
end
|
178
187
|
|
179
188
|
def results_for(dependency)
|
180
|
-
index_for(dependency).search(dependency)
|
189
|
+
@results_for[dependency] ||= index_for(dependency).search(dependency)
|
181
190
|
end
|
182
191
|
|
183
192
|
def name_for(dependency)
|
@@ -228,6 +237,19 @@ module Bundler
|
|
228
237
|
|
229
238
|
private
|
230
239
|
|
240
|
+
def remove_from_candidates(spec)
|
241
|
+
@base.delete(spec)
|
242
|
+
@gem_version_promoter.reset
|
243
|
+
|
244
|
+
@results_for.keys.each do |dep|
|
245
|
+
next unless dep.name == spec.name
|
246
|
+
|
247
|
+
@results_for[dep].reject {|s| s.name == spec.name && s.version == spec.version }
|
248
|
+
end
|
249
|
+
|
250
|
+
@search_for = {}
|
251
|
+
end
|
252
|
+
|
231
253
|
# returns an integer \in (-\infty, 0]
|
232
254
|
# a number closer to 0 means the dependency is less constraining
|
233
255
|
#
|
data/lib/bundler/rubygems_ext.rb
CHANGED
@@ -15,6 +15,7 @@ require "rubygems/specification"
|
|
15
15
|
# `Gem::Source` from the redefined `Gem::Specification#source`.
|
16
16
|
require "rubygems/source"
|
17
17
|
|
18
|
+
require_relative "match_metadata"
|
18
19
|
require_relative "match_platform"
|
19
20
|
|
20
21
|
# Cherry-pick fixes to `Gem.ruby_version` to be useful for modern Bundler
|
@@ -28,6 +29,7 @@ end
|
|
28
29
|
|
29
30
|
module Gem
|
30
31
|
class Specification
|
32
|
+
include ::Bundler::MatchMetadata
|
31
33
|
include ::Bundler::MatchPlatform
|
32
34
|
|
33
35
|
attr_accessor :remote, :location, :relative_loaded_from
|
@@ -235,6 +237,32 @@ module Gem
|
|
235
237
|
MINGW = Gem::Platform.new("x86-mingw32")
|
236
238
|
X64_MINGW = [Gem::Platform.new("x64-mingw32"),
|
237
239
|
Gem::Platform.new("x64-mingw-ucrt")].freeze
|
240
|
+
|
241
|
+
if Gem::Platform.new("x86_64-linux-musl") === Gem::Platform.new("x86_64-linux")
|
242
|
+
remove_method :===
|
243
|
+
|
244
|
+
def ===(other)
|
245
|
+
return nil unless Gem::Platform === other
|
246
|
+
|
247
|
+
# universal-mingw32 matches x64-mingw-ucrt
|
248
|
+
return true if (@cpu == "universal" || other.cpu == "universal") &&
|
249
|
+
@os.start_with?("mingw") && other.os.start_with?("mingw")
|
250
|
+
|
251
|
+
# cpu
|
252
|
+
([nil,"universal"].include?(@cpu) || [nil, "universal"].include?(other.cpu) || @cpu == other.cpu ||
|
253
|
+
(@cpu == "arm" && other.cpu.start_with?("arm"))) &&
|
254
|
+
|
255
|
+
# os
|
256
|
+
@os == other.os &&
|
257
|
+
|
258
|
+
# version
|
259
|
+
(
|
260
|
+
(@os != "linux" && (@version.nil? || other.version.nil?)) ||
|
261
|
+
(@os == "linux" && ((@version.nil? && ["gnu", "musl"].include?(other.version)) || (@version == "gnu" && other.version.nil?))) ||
|
262
|
+
@version == other.version
|
263
|
+
)
|
264
|
+
end
|
265
|
+
end
|
238
266
|
end
|
239
267
|
|
240
268
|
Platform.singleton_class.module_eval do
|
data/lib/bundler/spec_set.rb
CHANGED
@@ -7,8 +7,11 @@ module Bundler
|
|
7
7
|
include Enumerable
|
8
8
|
include TSort
|
9
9
|
|
10
|
-
|
10
|
+
attr_reader :incomplete_specs
|
11
|
+
|
12
|
+
def initialize(specs, incomplete_specs = [])
|
11
13
|
@specs = specs
|
14
|
+
@incomplete_specs = incomplete_specs
|
12
15
|
end
|
13
16
|
|
14
17
|
def for(dependencies, check = false, platforms = [nil])
|
@@ -19,7 +22,10 @@ module Bundler
|
|
19
22
|
loop do
|
20
23
|
break unless dep = deps.shift
|
21
24
|
|
22
|
-
|
25
|
+
name = dep[0].name
|
26
|
+
platform = dep[1]
|
27
|
+
|
28
|
+
key = [name, platform]
|
23
29
|
next if handled.key?(key)
|
24
30
|
|
25
31
|
handled[key] = true
|
@@ -33,7 +39,7 @@ module Bundler
|
|
33
39
|
deps << [d, dep[1]]
|
34
40
|
end
|
35
41
|
elsif check
|
36
|
-
|
42
|
+
@incomplete_specs += lookup[name]
|
37
43
|
end
|
38
44
|
end
|
39
45
|
|
@@ -51,6 +57,12 @@ module Bundler
|
|
51
57
|
@sorted = nil
|
52
58
|
end
|
53
59
|
|
60
|
+
def delete(spec)
|
61
|
+
@specs.delete(spec)
|
62
|
+
@lookup = nil
|
63
|
+
@sorted = nil
|
64
|
+
end
|
65
|
+
|
54
66
|
def sort!
|
55
67
|
self
|
56
68
|
end
|
@@ -66,7 +78,7 @@ module Bundler
|
|
66
78
|
def materialize(deps)
|
67
79
|
materialized = self.for(deps, true)
|
68
80
|
|
69
|
-
SpecSet.new(materialized)
|
81
|
+
SpecSet.new(materialized, incomplete_specs)
|
70
82
|
end
|
71
83
|
|
72
84
|
# Materialize for all the specs in the spec set, regardless of what platform they're for
|
@@ -83,17 +95,15 @@ module Bundler
|
|
83
95
|
end
|
84
96
|
|
85
97
|
def incomplete_ruby_specs?(deps)
|
86
|
-
self.
|
98
|
+
self.for(deps, true, [Gem::Platform::RUBY])
|
99
|
+
|
100
|
+
@incomplete_specs.any?
|
87
101
|
end
|
88
102
|
|
89
103
|
def missing_specs
|
90
104
|
@specs.select {|s| s.is_a?(LazySpecification) }
|
91
105
|
end
|
92
106
|
|
93
|
-
def incomplete_specs
|
94
|
-
@specs.select {|s| s.is_a?(IncompleteSpecification) }
|
95
|
-
end
|
96
|
-
|
97
107
|
def merge(set)
|
98
108
|
arr = sorted.dup
|
99
109
|
set.each do |set_spec|
|
data/lib/bundler/version.rb
CHANGED
data/lib/bundler.rb
CHANGED
@@ -53,13 +53,12 @@ module Bundler
|
|
53
53
|
autoload :GemHelpers, File.expand_path("bundler/gem_helpers", __dir__)
|
54
54
|
autoload :GemVersionPromoter, File.expand_path("bundler/gem_version_promoter", __dir__)
|
55
55
|
autoload :Graph, File.expand_path("bundler/graph", __dir__)
|
56
|
-
autoload :IncompleteSpecification, File.expand_path("bundler/incomplete_specification", __dir__)
|
57
56
|
autoload :Index, File.expand_path("bundler/index", __dir__)
|
58
57
|
autoload :Injector, File.expand_path("bundler/injector", __dir__)
|
59
58
|
autoload :Installer, File.expand_path("bundler/installer", __dir__)
|
60
59
|
autoload :LazySpecification, File.expand_path("bundler/lazy_specification", __dir__)
|
61
60
|
autoload :LockfileParser, File.expand_path("bundler/lockfile_parser", __dir__)
|
62
|
-
autoload :
|
61
|
+
autoload :MatchRemoteMetadata, File.expand_path("bundler/match_remote_metadata", __dir__)
|
63
62
|
autoload :ProcessLock, File.expand_path("bundler/process_lock", __dir__)
|
64
63
|
autoload :RemoteSpecification, File.expand_path("bundler/remote_specification", __dir__)
|
65
64
|
autoload :Resolver, File.expand_path("bundler/resolver", __dir__)
|
@@ -332,9 +331,9 @@ module Bundler
|
|
332
331
|
FileUtils.remove_entry_secure(path) if path && File.exist?(path)
|
333
332
|
rescue ArgumentError
|
334
333
|
message = <<EOF
|
335
|
-
It is a security vulnerability to allow your home directory to be world-writable, and bundler
|
334
|
+
It is a security vulnerability to allow your home directory to be world-writable, and bundler cannot continue.
|
336
335
|
You should probably consider fixing this issue by running `chmod o-w ~` on *nix.
|
337
|
-
Please refer to https://ruby-doc.org/stdlib-
|
336
|
+
Please refer to https://ruby-doc.org/stdlib-3.1.2/libdoc/fileutils/rdoc/FileUtils.html#method-c-remove_entry_secure for details.
|
338
337
|
EOF
|
339
338
|
File.world_writable?(path) ? Bundler.ui.warn(message) : raise
|
340
339
|
raise PathError, "Please fix the world-writable issue with your #{path} directory"
|
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.21
|
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: 2022-08-
|
25
|
+
date: 2022-08-24 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
|
@@ -103,7 +103,6 @@ files:
|
|
103
103
|
- lib/bundler/gem_tasks.rb
|
104
104
|
- lib/bundler/gem_version_promoter.rb
|
105
105
|
- lib/bundler/graph.rb
|
106
|
-
- lib/bundler/incomplete_specification.rb
|
107
106
|
- lib/bundler/index.rb
|
108
107
|
- lib/bundler/injector.rb
|
109
108
|
- lib/bundler/inline.rb
|
@@ -151,6 +150,8 @@ files:
|
|
151
150
|
- lib/bundler/man/bundle-outdated.1.ronn
|
152
151
|
- lib/bundler/man/bundle-platform.1
|
153
152
|
- lib/bundler/man/bundle-platform.1.ronn
|
153
|
+
- lib/bundler/man/bundle-plugin.1
|
154
|
+
- lib/bundler/man/bundle-plugin.1.ronn
|
154
155
|
- lib/bundler/man/bundle-pristine.1
|
155
156
|
- lib/bundler/man/bundle-pristine.1.ronn
|
156
157
|
- lib/bundler/man/bundle-remove.1
|
@@ -166,7 +167,9 @@ files:
|
|
166
167
|
- lib/bundler/man/gemfile.5
|
167
168
|
- lib/bundler/man/gemfile.5.ronn
|
168
169
|
- lib/bundler/man/index.txt
|
170
|
+
- lib/bundler/match_metadata.rb
|
169
171
|
- lib/bundler/match_platform.rb
|
172
|
+
- lib/bundler/match_remote_metadata.rb
|
170
173
|
- lib/bundler/mirror.rb
|
171
174
|
- lib/bundler/plugin.rb
|
172
175
|
- lib/bundler/plugin/api.rb
|
@@ -370,7 +373,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
370
373
|
- !ruby/object:Gem::Version
|
371
374
|
version: 2.5.2
|
372
375
|
requirements: []
|
373
|
-
rubygems_version: 3.3.
|
376
|
+
rubygems_version: 3.3.21
|
374
377
|
signing_key:
|
375
378
|
specification_version: 4
|
376
379
|
summary: The best way to manage your application's dependencies
|