bundler 2.2.32 → 2.3.2
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 +70 -0
- data/exe/bundle +7 -8
- data/lib/bundler/.document +1 -0
- data/lib/bundler/build_metadata.rb +2 -2
- data/lib/bundler/cli/doctor.rb +3 -2
- data/lib/bundler/cli/gem.rb +2 -1
- data/lib/bundler/cli/info.rb +6 -1
- data/lib/bundler/cli/install.rb +2 -0
- data/lib/bundler/cli/update.rb +2 -2
- data/lib/bundler/cli.rb +6 -0
- data/lib/bundler/compact_index_client/updater.rb +0 -5
- data/lib/bundler/definition.rb +29 -53
- data/lib/bundler/dependency.rb +5 -7
- data/lib/bundler/dsl.rb +18 -30
- data/lib/bundler/endpoint_specification.rb +0 -8
- data/lib/bundler/environment_preserver.rb +4 -1
- data/lib/bundler/fetcher/compact_index.rb +9 -4
- data/lib/bundler/fetcher.rb +2 -5
- data/lib/bundler/injector.rb +10 -1
- data/lib/bundler/installer/gem_installer.rb +1 -6
- data/lib/bundler/installer.rb +1 -4
- data/lib/bundler/lazy_specification.rb +17 -1
- data/lib/bundler/lockfile_parser.rb +10 -13
- data/lib/bundler/man/bundle-add.1 +10 -2
- data/lib/bundler/man/bundle-add.1.ronn +7 -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 +3 -3
- data/lib/bundler/man/bundle-config.1.ronn +3 -3
- 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 +2 -2
- data/lib/bundler/man/bundle-install.1.ronn +2 -2
- 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-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 +2 -2
- data/lib/bundler/man/bundle-update.1.ronn +2 -1
- data/lib/bundler/man/bundle-viz.1 +1 -1
- data/lib/bundler/man/bundle.1 +1 -1
- data/lib/bundler/man/gemfile.5 +28 -2
- data/lib/bundler/man/gemfile.5.ronn +9 -1
- data/lib/bundler/plugin/api/source.rb +1 -0
- data/lib/bundler/plugin/installer.rb +1 -1
- data/lib/bundler/process_lock.rb +1 -1
- data/lib/bundler/psyched_yaml.rb +1 -13
- data/lib/bundler/resolver.rb +34 -31
- data/lib/bundler/rubygems_ext.rb +2 -0
- data/lib/bundler/rubygems_gem_installer.rb +1 -1
- data/lib/bundler/rubygems_integration.rb +11 -48
- data/lib/bundler/self_manager.rb +76 -0
- data/lib/bundler/shared_helpers.rb +4 -12
- data/lib/bundler/source/git/git_proxy.rb +2 -2
- data/lib/bundler/source/metadata.rb +1 -1
- data/lib/bundler/source/rubygems.rb +16 -12
- data/lib/bundler/source/rubygems_aggregate.rb +1 -1
- data/lib/bundler/source.rb +1 -1
- data/lib/bundler/source_list.rb +7 -29
- data/lib/bundler/templates/Executable.bundler +1 -1
- data/lib/bundler/templates/Gemfile +0 -2
- data/lib/bundler/templates/gems.rb +0 -3
- data/lib/bundler/templates/newgem/Rakefile.tt +10 -1
- data/lib/bundler/templates/newgem/github/workflows/main.yml.tt +2 -2
- data/lib/bundler/templates/newgem/newgem.gemspec.tt +1 -1
- data/lib/bundler/templates/newgem/sig/newgem.rbs.tt +8 -0
- data/lib/bundler/templates/newgem/test/minitest/{newgem_test.rb.tt → test_newgem.rb.tt} +1 -1
- data/lib/bundler/ui/shell.rb +1 -1
- data/lib/bundler/vendor/.document +1 -0
- data/lib/bundler/vendor/thor/lib/thor/actions/file_manipulation.rb +6 -6
- data/lib/bundler/vendor/thor/lib/thor/actions/inject_into_file.rb +5 -3
- data/lib/bundler/vendor/thor/lib/thor/actions.rb +6 -2
- data/lib/bundler/vendor/thor/lib/thor/core_ext/hash_with_indifferent_access.rb +6 -0
- data/lib/bundler/vendor/thor/lib/thor/error.rb +9 -4
- data/lib/bundler/vendor/thor/lib/thor/parser/options.rb +19 -1
- data/lib/bundler/vendor/thor/lib/thor/shell/basic.rb +22 -4
- data/lib/bundler/vendor/thor/lib/thor/shell.rb +1 -1
- data/lib/bundler/vendor/thor/lib/thor/util.rb +1 -1
- data/lib/bundler/vendor/uri/lib/uri/common.rb +17 -80
- data/lib/bundler/vendor/uri/lib/uri/ftp.rb +0 -1
- data/lib/bundler/vendor/uri/lib/uri/generic.rb +5 -6
- data/lib/bundler/vendor/uri/lib/uri/http.rb +0 -1
- data/lib/bundler/vendor/uri/lib/uri/https.rb +0 -1
- data/lib/bundler/vendor/uri/lib/uri/ldap.rb +1 -1
- data/lib/bundler/vendor/uri/lib/uri/mailto.rb +0 -1
- data/lib/bundler/vendor/uri/lib/uri/rfc2396_parser.rb +1 -14
- data/lib/bundler/vendor/uri/lib/uri/rfc3986_parser.rb +1 -12
- data/lib/bundler/vendor/uri/lib/uri/version.rb +1 -1
- data/lib/bundler/vendor/uri/lib/uri/ws.rb +84 -0
- data/lib/bundler/vendor/uri/lib/uri/wss.rb +22 -0
- data/lib/bundler/vendor/uri/lib/uri.rb +0 -1
- data/lib/bundler/version.rb +1 -1
- data/lib/bundler.rb +9 -3
- metadata +10 -5
- data/lib/bundler/gemdeps.rb +0 -29
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: b01d3406cc29cfbbd031854220cc941849c39690b72aefedaa9a16afd288f3b9
|
|
4
|
+
data.tar.gz: 16dc9a02e52d5e1ea558fd6896f8e15073dcc580550e4ba53ae0fca62fcc32c1
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: e1a3df279ba3c7e8bb7ae61b33ded9b8b860f24cc4e999a7eeb6fed136ba8c21961ebc6cd1b66f6b8fb258d02c44e50682c3bf8486d00ac73f6d0a58744985cf
|
|
7
|
+
data.tar.gz: 620e60cba4783cca36f9d446a3df424696139c2d89181d303486e9d9bca0bf28c080ae94ddb6138e42316437fc8ff6a1da28cb1dd47f47cab6f02c97a924dfa7
|
data/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,73 @@
|
|
|
1
|
+
# 2.3.2 (December 23, 2021)
|
|
2
|
+
|
|
3
|
+
## Enhancements:
|
|
4
|
+
|
|
5
|
+
- Remove unnecessary lockfile upgrade warning [#5209](https://github.com/rubygems/rubygems/pull/5209)
|
|
6
|
+
|
|
7
|
+
# 2.3.1 (December 22, 2021)
|
|
8
|
+
|
|
9
|
+
## Enhancements:
|
|
10
|
+
|
|
11
|
+
- Vendor latest `thor` with fixes for latest `did_you_mean` deprecations [#5202](https://github.com/rubygems/rubygems/pull/5202)
|
|
12
|
+
- Avoid unnecessary `shellwords` require on newer rubygems [#5195](https://github.com/rubygems/rubygems/pull/5195)
|
|
13
|
+
- Re-exec prepending command with `Gem.ruby` if `$PROGRAM_NAME` is not executable [#5193](https://github.com/rubygems/rubygems/pull/5193)
|
|
14
|
+
|
|
15
|
+
# 2.3.0 (December 21, 2021)
|
|
16
|
+
|
|
17
|
+
## Features:
|
|
18
|
+
|
|
19
|
+
- Change `bundle install` with a lockfile to respect the `BUNDLED WITH` bundler version [#4076](https://github.com/rubygems/rubygems/pull/4076)
|
|
20
|
+
|
|
21
|
+
## Enhancements:
|
|
22
|
+
|
|
23
|
+
- Print warning when running Bundler on potentially problematic RubyGems & Ruby combinations [#5177](https://github.com/rubygems/rubygems/pull/5177)
|
|
24
|
+
- Error tracing should be printed to stderr [#5179](https://github.com/rubygems/rubygems/pull/5179)
|
|
25
|
+
- Add `github` and `ref` options to `bundle add` [#5159](https://github.com/rubygems/rubygems/pull/5159)
|
|
26
|
+
- Add require parameter to `bundle add` [#5021](https://github.com/rubygems/rubygems/pull/5021)
|
|
27
|
+
- Enable parallel installation on Windows by default [#4822](https://github.com/rubygems/rubygems/pull/4822)
|
|
28
|
+
- More logging when compact index is not used and we fallback to other APIs [#4546](https://github.com/rubygems/rubygems/pull/4546)
|
|
29
|
+
- `bundle gem` generated MiniTest file and class now start with 'test' [#3893](https://github.com/rubygems/rubygems/pull/3893)
|
|
30
|
+
- Add `Bundler::Definition.no_lock` accessor for skipping lock file creation/update [#3401](https://github.com/rubygems/rubygems/pull/3401)
|
|
31
|
+
|
|
32
|
+
## Bug fixes:
|
|
33
|
+
|
|
34
|
+
- Fix crash when when no platform specific matches exist and show a proper error [#5168](https://github.com/rubygems/rubygems/pull/5168)
|
|
35
|
+
- Ignore dependencies not actually locked from frozen check [#5152](https://github.com/rubygems/rubygems/pull/5152)
|
|
36
|
+
- Fix `bundle cache --all-platforms` on Windows [#4552](https://github.com/rubygems/rubygems/pull/4552)
|
|
37
|
+
|
|
38
|
+
## Documentation:
|
|
39
|
+
|
|
40
|
+
- Fix gemspec template typo [#4545](https://github.com/rubygems/rubygems/pull/4545)
|
|
41
|
+
|
|
42
|
+
# 2.2.33 (December 7, 2021)
|
|
43
|
+
|
|
44
|
+
## Security fixes:
|
|
45
|
+
|
|
46
|
+
- Pass "--" to git commands to separate positional and optional args [#5142](https://github.com/rubygems/rubygems/pull/5142)
|
|
47
|
+
|
|
48
|
+
## Enhancements:
|
|
49
|
+
|
|
50
|
+
- Accept pull request URLs as github source [#5126](https://github.com/rubygems/rubygems/pull/5126)
|
|
51
|
+
- Add `--version` parameter to `bundle info` command [#5137](https://github.com/rubygems/rubygems/pull/5137)
|
|
52
|
+
- Let original `Errno::EACCES` error be raised in compact index updater [#5110](https://github.com/rubygems/rubygems/pull/5110)
|
|
53
|
+
- Improve gemfile-lockfile source equivalence errors [#5120](https://github.com/rubygems/rubygems/pull/5120)
|
|
54
|
+
- Avoid float-to-string loss of characters in GitHub Actions configuration labels in new gem template [#5089](https://github.com/rubygems/rubygems/pull/5089)
|
|
55
|
+
- Add an initial rbs template to `bundle gem` skeleton [#5041](https://github.com/rubygems/rubygems/pull/5041)
|
|
56
|
+
- Avoid shared libraries not getting environment passed right after argv in memory when `bundle exec` is used [#4815](https://github.com/rubygems/rubygems/pull/4815)
|
|
57
|
+
|
|
58
|
+
## Bug fixes:
|
|
59
|
+
|
|
60
|
+
- Don't cleanup paths from gems already activated from `$LOAD_PATH` [#5111](https://github.com/rubygems/rubygems/pull/5111)
|
|
61
|
+
- Fix handling prereleases of 0 versions, like 0.0.0.dev or 0.0.0.SNAPSHOT [#5116](https://github.com/rubygems/rubygems/pull/5116)
|
|
62
|
+
- Fix escape of filenames in `bundle doctor` [#5102](https://github.com/rubygems/rubygems/pull/5102)
|
|
63
|
+
- Don't unlock dependencies when running `bundle install` after changing global source [#5090](https://github.com/rubygems/rubygems/pull/5090)
|
|
64
|
+
- Fix missing locked specs when depended on another platform [#5092](https://github.com/rubygems/rubygems/pull/5092)
|
|
65
|
+
- Fix `bundle info` sometimes claiming that bundler has been deleted [#5097](https://github.com/rubygems/rubygems/pull/5097)
|
|
66
|
+
|
|
67
|
+
## Documentation:
|
|
68
|
+
|
|
69
|
+
- Ignore to generate the documentation from vendored libraries [#5118](https://github.com/rubygems/rubygems/pull/5118)
|
|
70
|
+
|
|
1
71
|
# 2.2.32 (November 23, 2021)
|
|
2
72
|
|
|
3
73
|
## Enhancements:
|
data/exe/bundle
CHANGED
|
@@ -18,14 +18,13 @@ end
|
|
|
18
18
|
# Workaround for non-activated bundler spec due to missing https://github.com/rubygems/rubygems/commit/4e306d7bcdee924b8d80ca9db6125aa59ee4e5a3
|
|
19
19
|
gem "bundler", Bundler::VERSION if Gem.rubygems_version < Gem::Version.new("2.6.2")
|
|
20
20
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
abort(err)
|
|
21
|
+
if Gem.rubygems_version < Gem::Version.new("3.2.3") && Gem.ruby_version < Gem::Version.new("2.6.a") && !ENV["BUNDLER_NO_OLD_RUBYGEMS_WARNING"]
|
|
22
|
+
Bundler.ui.warn \
|
|
23
|
+
"Your RubyGems version (#{Gem::VERSION})) has a bug that prevents " \
|
|
24
|
+
"`required_ruby_version` from working for Bundler. Any scripts that use " \
|
|
25
|
+
"`gem install bundler` will break as soon as Bundler drops support for " \
|
|
26
|
+
"your Ruby version. Please upgrade RubyGems to avoid future breakage " \
|
|
27
|
+
"and silence this warning by running `gem update --system 3.2.3`"
|
|
29
28
|
end
|
|
30
29
|
|
|
31
30
|
if File.exist?(base_path)
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
# not in RDoc
|
|
@@ -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 = "2021-
|
|
8
|
-
@git_commit_sha = "
|
|
7
|
+
@built_at = "2021-12-24".freeze
|
|
8
|
+
@git_commit_sha = "c3c71e7434".freeze
|
|
9
9
|
@release = true
|
|
10
10
|
# end ivars
|
|
11
11
|
|
data/lib/bundler/cli/doctor.rb
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
3
|
require "rbconfig"
|
|
4
|
+
require "shellwords"
|
|
4
5
|
|
|
5
6
|
module Bundler
|
|
6
7
|
class CLI::Doctor
|
|
@@ -22,14 +23,14 @@ module Bundler
|
|
|
22
23
|
end
|
|
23
24
|
|
|
24
25
|
def dylibs_darwin(path)
|
|
25
|
-
output = `/usr/bin/otool -L
|
|
26
|
+
output = `/usr/bin/otool -L #{path.shellescape}`.chomp
|
|
26
27
|
dylibs = output.split("\n")[1..-1].map {|l| l.match(DARWIN_REGEX).captures[0] }.uniq
|
|
27
28
|
# ignore @rpath and friends
|
|
28
29
|
dylibs.reject {|dylib| dylib.start_with? "@" }
|
|
29
30
|
end
|
|
30
31
|
|
|
31
32
|
def dylibs_ldd(path)
|
|
32
|
-
output = `/usr/bin/ldd
|
|
33
|
+
output = `/usr/bin/ldd #{path.shellescape}`.chomp
|
|
33
34
|
output.split("\n").map do |l|
|
|
34
35
|
match = l.match(LDD_REGEX)
|
|
35
36
|
next if match.nil?
|
data/lib/bundler/cli/gem.rb
CHANGED
|
@@ -76,6 +76,7 @@ module Bundler
|
|
|
76
76
|
"#{Bundler.preferred_gemfile_name}.tt" => Bundler.preferred_gemfile_name,
|
|
77
77
|
"lib/newgem.rb.tt" => "lib/#{namespaced_path}.rb",
|
|
78
78
|
"lib/newgem/version.rb.tt" => "lib/#{namespaced_path}/version.rb",
|
|
79
|
+
"sig/newgem.rbs.tt" => "sig/#{namespaced_path}.rbs",
|
|
79
80
|
"newgem.gemspec.tt" => "#{name}.gemspec",
|
|
80
81
|
"Rakefile.tt" => "Rakefile",
|
|
81
82
|
"README.md.tt" => "README.md",
|
|
@@ -105,7 +106,7 @@ module Bundler
|
|
|
105
106
|
when "minitest"
|
|
106
107
|
templates.merge!(
|
|
107
108
|
"test/minitest/test_helper.rb.tt" => "test/test_helper.rb",
|
|
108
|
-
"test/minitest/
|
|
109
|
+
"test/minitest/test_newgem.rb.tt" => "test/test_#{namespaced_path}.rb"
|
|
109
110
|
)
|
|
110
111
|
config[:test_task] = :test
|
|
111
112
|
when "test-unit"
|
data/lib/bundler/cli/info.rb
CHANGED
|
@@ -18,6 +18,7 @@ module Bundler
|
|
|
18
18
|
|
|
19
19
|
if spec
|
|
20
20
|
return print_gem_path(spec) if @options[:path]
|
|
21
|
+
return print_gem_version(spec) if @options[:version]
|
|
21
22
|
print_gem_info(spec)
|
|
22
23
|
end
|
|
23
24
|
end
|
|
@@ -39,6 +40,10 @@ module Bundler
|
|
|
39
40
|
raise GemNotFound, Bundler::CLI::Common.gem_not_found_message(gem_name, Bundler.definition.dependencies)
|
|
40
41
|
end
|
|
41
42
|
|
|
43
|
+
def print_gem_version(spec)
|
|
44
|
+
Bundler.ui.info spec.version.to_s
|
|
45
|
+
end
|
|
46
|
+
|
|
42
47
|
def print_gem_path(spec)
|
|
43
48
|
name = spec.name
|
|
44
49
|
if name == "bundler"
|
|
@@ -70,7 +75,7 @@ module Bundler
|
|
|
70
75
|
gem_info << "\tPath: #{spec.full_gem_path}\n"
|
|
71
76
|
gem_info << "\tDefault Gem: yes" if spec.respond_to?(:default_gem?) && spec.default_gem?
|
|
72
77
|
|
|
73
|
-
if spec.deleted_gem?
|
|
78
|
+
if name != "bundler" && spec.deleted_gem?
|
|
74
79
|
return Bundler.ui.warn "The gem #{name} has been deleted. Gemspec information is still available though:\n#{gem_info}"
|
|
75
80
|
end
|
|
76
81
|
|
data/lib/bundler/cli/install.rb
CHANGED
data/lib/bundler/cli/update.rb
CHANGED
|
@@ -66,7 +66,7 @@ module Bundler
|
|
|
66
66
|
|
|
67
67
|
if locked_gems = Bundler.definition.locked_gems
|
|
68
68
|
previous_locked_info = locked_gems.specs.reduce({}) do |h, s|
|
|
69
|
-
h[s.name] = { :spec => s, :version => s.version, :source => s.source.
|
|
69
|
+
h[s.name] = { :spec => s, :version => s.version, :source => s.source.identifier }
|
|
70
70
|
h
|
|
71
71
|
end
|
|
72
72
|
end
|
|
@@ -95,7 +95,7 @@ module Bundler
|
|
|
95
95
|
end
|
|
96
96
|
|
|
97
97
|
locked_source = locked_info[:source]
|
|
98
|
-
new_source = new_spec.source.
|
|
98
|
+
new_source = new_spec.source.identifier
|
|
99
99
|
next if locked_source != new_source
|
|
100
100
|
|
|
101
101
|
new_version = new_spec.version
|
data/lib/bundler/cli.rb
CHANGED
|
@@ -61,6 +61,8 @@ module Bundler
|
|
|
61
61
|
Bundler.reset_settings_and_root!
|
|
62
62
|
end
|
|
63
63
|
|
|
64
|
+
Bundler.self_manager.restart_with_locked_bundler_if_needed
|
|
65
|
+
|
|
64
66
|
Bundler.settings.set_command_option_if_given :retry, options[:retry]
|
|
65
67
|
|
|
66
68
|
current_cmd = args.last[:current_command].name
|
|
@@ -331,6 +333,7 @@ module Bundler
|
|
|
331
333
|
|
|
332
334
|
desc "info GEM [OPTIONS]", "Show information for the given gem"
|
|
333
335
|
method_option "path", :type => :boolean, :banner => "Print full path to gem"
|
|
336
|
+
method_option "version", :type => :boolean, :banner => "Print gem version"
|
|
334
337
|
def info(gem_name)
|
|
335
338
|
require_relative "cli/info"
|
|
336
339
|
Info.new(options, gem_name).run
|
|
@@ -366,8 +369,11 @@ module Bundler
|
|
|
366
369
|
method_option "version", :aliases => "-v", :type => :string
|
|
367
370
|
method_option "group", :aliases => "-g", :type => :string
|
|
368
371
|
method_option "source", :aliases => "-s", :type => :string
|
|
372
|
+
method_option "require", :aliases => "-r", :type => :string, :banner => "Adds require path to gem. Provide false, or a path as a string."
|
|
369
373
|
method_option "git", :type => :string
|
|
374
|
+
method_option "github", :type => :string
|
|
370
375
|
method_option "branch", :type => :string
|
|
376
|
+
method_option "ref", :type => :string
|
|
371
377
|
method_option "skip-install", :type => :boolean, :banner =>
|
|
372
378
|
"Adds gem to the Gemfile but does not install it"
|
|
373
379
|
method_option "optimistic", :type => :boolean, :banner => "Adds optimistic declaration of version to gem"
|
|
@@ -76,11 +76,6 @@ module Bundler
|
|
|
76
76
|
|
|
77
77
|
update(local_path, remote_path, :retrying)
|
|
78
78
|
end
|
|
79
|
-
rescue Errno::EACCES
|
|
80
|
-
raise Bundler::PermissionError,
|
|
81
|
-
"Bundler does not have write access to create a temp directory " \
|
|
82
|
-
"within #{Dir.tmpdir}. Bundler must have write access to your " \
|
|
83
|
-
"systems temp directory to function properly. "
|
|
84
79
|
rescue Zlib::GzipFile::Error
|
|
85
80
|
raise Bundler::HTTPError
|
|
86
81
|
end
|
data/lib/bundler/definition.rb
CHANGED
|
@@ -6,6 +6,11 @@ module Bundler
|
|
|
6
6
|
class Definition
|
|
7
7
|
include GemHelpers
|
|
8
8
|
|
|
9
|
+
class << self
|
|
10
|
+
# Do not create or modify a lockfile (Makes #lock a noop)
|
|
11
|
+
attr_accessor :no_lock
|
|
12
|
+
end
|
|
13
|
+
|
|
9
14
|
attr_reader(
|
|
10
15
|
:dependencies,
|
|
11
16
|
:locked_deps,
|
|
@@ -158,10 +163,6 @@ module Bundler
|
|
|
158
163
|
end
|
|
159
164
|
end
|
|
160
165
|
|
|
161
|
-
def multisource_allowed?
|
|
162
|
-
@multisource_allowed
|
|
163
|
-
end
|
|
164
|
-
|
|
165
166
|
def resolve_only_locally!
|
|
166
167
|
@remote = false
|
|
167
168
|
sources.local_only!
|
|
@@ -279,6 +280,8 @@ module Bundler
|
|
|
279
280
|
end
|
|
280
281
|
|
|
281
282
|
def lock(file, preserve_unknown_sections = false)
|
|
283
|
+
return if Definition.no_lock
|
|
284
|
+
|
|
282
285
|
contents = to_lock
|
|
283
286
|
|
|
284
287
|
# Convert to \r\n if the existing lock has them
|
|
@@ -289,10 +292,7 @@ module Bundler
|
|
|
289
292
|
locked_major = @locked_bundler_version.segments.first
|
|
290
293
|
current_major = Gem::Version.create(Bundler::VERSION).segments.first
|
|
291
294
|
|
|
292
|
-
|
|
293
|
-
Bundler.ui.warn "Warning: the lockfile is being updated to Bundler #{current_major}, " \
|
|
294
|
-
"after which you will be unable to return to Bundler #{@locked_bundler_version.segments.first}."
|
|
295
|
-
end
|
|
295
|
+
updating_major = locked_major < current_major
|
|
296
296
|
end
|
|
297
297
|
|
|
298
298
|
preserve_unknown_sections ||= !updating_major && (Bundler.frozen_bundle? || !(unlocking? || @unlocking_bundler))
|
|
@@ -368,44 +368,31 @@ module Bundler
|
|
|
368
368
|
added.concat new_platforms.map {|p| "* platform: #{p}" }
|
|
369
369
|
deleted.concat deleted_platforms.map {|p| "* platform: #{p}" }
|
|
370
370
|
|
|
371
|
-
gemfile_sources = sources.lock_sources
|
|
372
|
-
|
|
373
|
-
new_sources = gemfile_sources - @locked_sources
|
|
374
|
-
deleted_sources = @locked_sources - gemfile_sources
|
|
375
|
-
|
|
376
371
|
new_deps = @dependencies - locked_dependencies
|
|
377
372
|
deleted_deps = locked_dependencies - @dependencies
|
|
378
373
|
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
new_sources.reject! {|source| (source.path? && source.path.exist?) || equivalent_rubygems_remotes?(source) }
|
|
382
|
-
deleted_sources.reject! {|source| (source.path? && source.path.exist?) || equivalent_rubygems_remotes?(source) }
|
|
383
|
-
end
|
|
374
|
+
added.concat new_deps.map {|d| "* #{pretty_dep(d)}" } if new_deps.any?
|
|
375
|
+
deleted.concat deleted_deps.map {|d| "* #{pretty_dep(d)}" } if deleted_deps.any?
|
|
384
376
|
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
added.concat new_sources.map {|source| "* source: #{source}" }
|
|
388
|
-
end
|
|
377
|
+
both_sources = Hash.new {|h, k| h[k] = [] }
|
|
378
|
+
@dependencies.each {|d| both_sources[d.name][0] = d }
|
|
389
379
|
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
end
|
|
393
|
-
end
|
|
380
|
+
locked_dependencies.each do |d|
|
|
381
|
+
next if !Bundler.feature_flag.bundler_3_mode? && @locked_specs[d.name].empty?
|
|
394
382
|
|
|
395
|
-
|
|
396
|
-
if deleted_deps.any?
|
|
397
|
-
deleted.concat deleted_deps.map {|d| "* #{pretty_dep(d)}" }
|
|
383
|
+
both_sources[d.name][1] = d
|
|
398
384
|
end
|
|
399
385
|
|
|
400
|
-
both_sources
|
|
401
|
-
|
|
402
|
-
|
|
386
|
+
both_sources.each do |name, (dep, lock_dep)|
|
|
387
|
+
next if dep.nil? || lock_dep.nil?
|
|
388
|
+
|
|
389
|
+
gemfile_source = dep.source || sources.default_source
|
|
390
|
+
lock_source = lock_dep.source || sources.default_source
|
|
391
|
+
next if lock_source.include?(gemfile_source)
|
|
403
392
|
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
lockfile_source_name = lock_source
|
|
408
|
-
changed << "* #{name} from `#{gemfile_source_name}` to `#{lockfile_source_name}`"
|
|
393
|
+
gemfile_source_name = dep.source ? gemfile_source.identifier : "no specified source"
|
|
394
|
+
lockfile_source_name = lock_dep.source ? lock_source.identifier : "no specified source"
|
|
395
|
+
changed << "* #{name} from `#{lockfile_source_name}` to `#{gemfile_source_name}`"
|
|
409
396
|
end
|
|
410
397
|
|
|
411
398
|
reason = change_reason
|
|
@@ -649,15 +636,13 @@ module Bundler
|
|
|
649
636
|
end
|
|
650
637
|
|
|
651
638
|
def converge_dependencies
|
|
652
|
-
|
|
639
|
+
changes = false
|
|
640
|
+
|
|
641
|
+
@dependencies.each do |dep|
|
|
653
642
|
if dep.source
|
|
654
643
|
dep.source = sources.get(dep.source)
|
|
655
644
|
end
|
|
656
|
-
end
|
|
657
|
-
|
|
658
|
-
changes = false
|
|
659
645
|
|
|
660
|
-
@dependencies.each do |dep|
|
|
661
646
|
unless locked_dep = @locked_deps[dep.name]
|
|
662
647
|
changes = true
|
|
663
648
|
next
|
|
@@ -711,11 +696,8 @@ module Bundler
|
|
|
711
696
|
deps << dep
|
|
712
697
|
end
|
|
713
698
|
|
|
714
|
-
s.source = (dep && dep.source) || sources.get(s.source) unless
|
|
699
|
+
s.source = (dep && dep.source) || sources.get(s.source) || sources.default_source unless Bundler.frozen_bundle?
|
|
715
700
|
|
|
716
|
-
# Don't add a spec to the list if its source is expired. For example,
|
|
717
|
-
# if you change a Git gem to RubyGems.
|
|
718
|
-
next if s.source.nil?
|
|
719
701
|
next if @unlock[:sources].include?(s.source.name)
|
|
720
702
|
|
|
721
703
|
# If the spec is from a path source and it doesn't exist anymore
|
|
@@ -744,7 +726,7 @@ module Bundler
|
|
|
744
726
|
s.dependencies.replace(new_spec.dependencies)
|
|
745
727
|
end
|
|
746
728
|
|
|
747
|
-
if dep.nil? &&
|
|
729
|
+
if dep.nil? && requested_dependencies.find {|d| s.name == d.name }
|
|
748
730
|
@unlock[:gems] << s.name
|
|
749
731
|
else
|
|
750
732
|
converged << s
|
|
@@ -852,12 +834,6 @@ module Bundler
|
|
|
852
834
|
end
|
|
853
835
|
end
|
|
854
836
|
|
|
855
|
-
def equivalent_rubygems_remotes?(source)
|
|
856
|
-
return false unless source.is_a?(Source::Rubygems)
|
|
857
|
-
|
|
858
|
-
Bundler.settings[:allow_deployment_source_credential_changes] && source.equivalent_remotes?(sources.rubygems_remotes)
|
|
859
|
-
end
|
|
860
|
-
|
|
861
837
|
def source_map
|
|
862
838
|
@source_map ||= SourceMap.new(sources, dependencies)
|
|
863
839
|
end
|
data/lib/bundler/dependency.rb
CHANGED
|
@@ -7,7 +7,7 @@ require_relative "rubygems_ext"
|
|
|
7
7
|
module Bundler
|
|
8
8
|
class Dependency < Gem::Dependency
|
|
9
9
|
attr_reader :autorequire
|
|
10
|
-
attr_reader :groups, :platforms, :gemfile, :git, :branch
|
|
10
|
+
attr_reader :groups, :platforms, :gemfile, :git, :github, :branch, :ref
|
|
11
11
|
|
|
12
12
|
PLATFORM_MAP = {
|
|
13
13
|
:ruby => Gem::Platform::RUBY,
|
|
@@ -82,7 +82,9 @@ module Bundler
|
|
|
82
82
|
@groups = Array(options["group"] || :default).map(&:to_sym)
|
|
83
83
|
@source = options["source"]
|
|
84
84
|
@git = options["git"]
|
|
85
|
+
@github = options["github"]
|
|
85
86
|
@branch = options["branch"]
|
|
87
|
+
@ref = options["ref"]
|
|
86
88
|
@platforms = Array(options["platforms"])
|
|
87
89
|
@env = options["env"]
|
|
88
90
|
@should_include = options.fetch("should_include", true)
|
|
@@ -96,15 +98,11 @@ module Bundler
|
|
|
96
98
|
def gem_platforms(valid_platforms)
|
|
97
99
|
return valid_platforms if @platforms.empty?
|
|
98
100
|
|
|
99
|
-
|
|
100
|
-
@gem_platforms ||= expanded_platforms.compact.uniq
|
|
101
|
-
|
|
102
|
-
filtered_generic_platforms = valid_generic_platforms.values & @gem_platforms
|
|
103
|
-
valid_generic_platforms.select {|_, v| filtered_generic_platforms.include?(v) }.keys
|
|
101
|
+
valid_platforms.select {|p| expanded_platforms.include?(GemHelpers.generic(p)) }
|
|
104
102
|
end
|
|
105
103
|
|
|
106
104
|
def expanded_platforms
|
|
107
|
-
@platforms.map {|pl| PLATFORM_MAP[pl] }
|
|
105
|
+
@expanded_platforms ||= @platforms.map {|pl| PLATFORM_MAP[pl] }.compact.uniq
|
|
108
106
|
end
|
|
109
107
|
|
|
110
108
|
def should_include?
|
data/lib/bundler/dsl.rb
CHANGED
|
@@ -18,6 +18,8 @@ module Bundler
|
|
|
18
18
|
VALID_KEYS = %w[group groups git path glob name branch ref tag require submodules
|
|
19
19
|
platform platforms type source install_if gemfile].freeze
|
|
20
20
|
|
|
21
|
+
GITHUB_PULL_REQUEST_URL = %r{\Ahttps://github\.com/([A-Za-z0-9_\-\.]+/[A-Za-z0-9_\-\.]+)/pull/(\d+)\z}.freeze
|
|
22
|
+
|
|
21
23
|
attr_reader :gemspecs
|
|
22
24
|
attr_accessor :dependencies
|
|
23
25
|
|
|
@@ -275,26 +277,24 @@ module Bundler
|
|
|
275
277
|
|
|
276
278
|
def add_git_sources
|
|
277
279
|
git_source(:github) do |repo_name|
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
280
|
+
if repo_name =~ GITHUB_PULL_REQUEST_URL
|
|
281
|
+
{
|
|
282
|
+
"git" => "https://github.com/#{$1}.git",
|
|
283
|
+
"branch" => "refs/pull/#{$2}/head",
|
|
284
|
+
"ref" => nil,
|
|
285
|
+
"tag" => nil,
|
|
286
|
+
}
|
|
287
|
+
else
|
|
288
|
+
repo_name = "#{repo_name}/#{repo_name}" unless repo_name.include?("/")
|
|
289
|
+
"https://github.com/#{repo_name}.git"
|
|
290
|
+
end
|
|
283
291
|
end
|
|
284
292
|
|
|
285
293
|
git_source(:gist) do |repo_name|
|
|
286
|
-
warn_deprecated_git_source(:gist, '"https://gist.github.com/#{repo_name}.git"')
|
|
287
|
-
|
|
288
294
|
"https://gist.github.com/#{repo_name}.git"
|
|
289
295
|
end
|
|
290
296
|
|
|
291
297
|
git_source(:bitbucket) do |repo_name|
|
|
292
|
-
warn_deprecated_git_source(:bitbucket, <<-'RUBY'.strip)
|
|
293
|
-
user_name, repo_name = repo_name.split("/")
|
|
294
|
-
repo_name ||= user_name
|
|
295
|
-
"https://#{user_name}@bitbucket.org/#{user_name}/#{repo_name}.git"
|
|
296
|
-
RUBY
|
|
297
|
-
|
|
298
298
|
user_name, repo_name = repo_name.split("/")
|
|
299
299
|
repo_name ||= user_name
|
|
300
300
|
"https://#{user_name}@bitbucket.org/#{user_name}/#{repo_name}.git"
|
|
@@ -365,7 +365,11 @@ repo_name ||= user_name
|
|
|
365
365
|
|
|
366
366
|
git_name = (git_names & opts.keys).last
|
|
367
367
|
if @git_sources[git_name]
|
|
368
|
-
|
|
368
|
+
git_opts = @git_sources[git_name].call(opts[git_name])
|
|
369
|
+
git_opts = { "git" => git_opts } if git_opts.is_a?(String)
|
|
370
|
+
opts.merge!(git_opts) do |key, _gemfile_value, _git_source_value|
|
|
371
|
+
raise GemfileError, %(The :#{key} option can't be used with `#{git_name}: #{opts[git_name].inspect}`)
|
|
372
|
+
end
|
|
369
373
|
end
|
|
370
374
|
|
|
371
375
|
%w[git path].each do |type|
|
|
@@ -475,22 +479,6 @@ repo_name ||= user_name
|
|
|
475
479
|
end
|
|
476
480
|
end
|
|
477
481
|
|
|
478
|
-
def warn_deprecated_git_source(name, replacement, additional_message = nil)
|
|
479
|
-
additional_message &&= " #{additional_message}"
|
|
480
|
-
replacement = if replacement.count("\n").zero?
|
|
481
|
-
"{|repo_name| #{replacement} }"
|
|
482
|
-
else
|
|
483
|
-
"do |repo_name|\n#{replacement.to_s.gsub(/^/, " ")}\n end"
|
|
484
|
-
end
|
|
485
|
-
|
|
486
|
-
Bundler::SharedHelpers.major_deprecation 3, <<-EOS
|
|
487
|
-
The :#{name} git source is deprecated, and will be removed in the future.#{additional_message} Add this code to the top of your Gemfile to ensure it continues to work:
|
|
488
|
-
|
|
489
|
-
git_source(:#{name}) #{replacement}
|
|
490
|
-
|
|
491
|
-
EOS
|
|
492
|
-
end
|
|
493
|
-
|
|
494
482
|
class DSLError < GemfileError
|
|
495
483
|
# @return [String] the description that should be presented to the user.
|
|
496
484
|
#
|
|
@@ -3,7 +3,6 @@
|
|
|
3
3
|
module Bundler
|
|
4
4
|
# used for Creating Specifications from the Gemcutter Endpoint
|
|
5
5
|
class EndpointSpecification < Gem::Specification
|
|
6
|
-
ILLFORMED_MESSAGE = 'Ill-formed requirement ["#<YAML::Syck::DefaultKey'.freeze
|
|
7
6
|
include MatchPlatform
|
|
8
7
|
|
|
9
8
|
attr_reader :name, :version, :platform, :required_rubygems_version, :required_ruby_version, :checksum
|
|
@@ -129,13 +128,6 @@ module Bundler
|
|
|
129
128
|
|
|
130
129
|
def build_dependency(name, requirements)
|
|
131
130
|
Gem::Dependency.new(name, requirements)
|
|
132
|
-
rescue ArgumentError => e
|
|
133
|
-
raise unless e.message.include?(ILLFORMED_MESSAGE)
|
|
134
|
-
puts # we shouldn't print the error message on the "fetching info" status line
|
|
135
|
-
raise GemspecError,
|
|
136
|
-
"Unfortunately, the gem #{name} (#{version}) has an invalid " \
|
|
137
|
-
"gemspec.\nPlease ask the gem author to yank the bad version to fix " \
|
|
138
|
-
"this issue. For more information, see http://bit.ly/syck-defaultkey."
|
|
139
131
|
end
|
|
140
132
|
end
|
|
141
133
|
end
|
|
@@ -38,7 +38,10 @@ module Bundler
|
|
|
38
38
|
|
|
39
39
|
# Replaces `ENV` with the bundler environment variables backed up
|
|
40
40
|
def replace_with_backup
|
|
41
|
-
|
|
41
|
+
unless Gem.win_platform?
|
|
42
|
+
ENV.replace(backup)
|
|
43
|
+
return
|
|
44
|
+
end
|
|
42
45
|
|
|
43
46
|
# Fallback logic for Windows below to workaround
|
|
44
47
|
# https://bugs.ruby-lang.org/issues/16798. Can be dropped once all
|
|
@@ -68,11 +68,16 @@ module Bundler
|
|
|
68
68
|
compact_index_request :fetch_spec
|
|
69
69
|
|
|
70
70
|
def available?
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
71
|
+
unless SharedHelpers.md5_available?
|
|
72
|
+
Bundler.ui.debug("FIPS mode is enabled, bundler can't use the CompactIndex API")
|
|
73
|
+
return nil
|
|
74
|
+
end
|
|
75
|
+
if fetch_uri.scheme == "file"
|
|
76
|
+
Bundler.ui.debug("Using a local server, bundler won't use the CompactIndex API")
|
|
77
|
+
return false
|
|
78
|
+
end
|
|
74
79
|
# Read info file checksums out of /versions, so we can know if gems are up to date
|
|
75
|
-
|
|
80
|
+
compact_index_client.update_and_parse_checksums!
|
|
76
81
|
rescue CompactIndexClient::Updater::MisMatchedChecksumError => e
|
|
77
82
|
Bundler.ui.debug(e.message)
|
|
78
83
|
nil
|
data/lib/bundler/fetcher.rb
CHANGED
|
@@ -71,8 +71,8 @@ module Bundler
|
|
|
71
71
|
:HTTPUnsupportedMediaType, :HTTPVersionNotSupported].freeze
|
|
72
72
|
FAIL_ERRORS = begin
|
|
73
73
|
fail_errors = [AuthenticationRequiredError, BadAuthenticationError, FallbackError]
|
|
74
|
-
fail_errors << Gem::Requirement::BadRequirementError
|
|
75
|
-
fail_errors.concat(NET_ERRORS.map {|e|
|
|
74
|
+
fail_errors << Gem::Requirement::BadRequirementError
|
|
75
|
+
fail_errors.concat(NET_ERRORS.map {|e| Net.const_get(e) })
|
|
76
76
|
end.freeze
|
|
77
77
|
|
|
78
78
|
class << self
|
|
@@ -122,7 +122,6 @@ module Bundler
|
|
|
122
122
|
|
|
123
123
|
# return the specs in the bundler format as an index
|
|
124
124
|
def specs(gem_names, source)
|
|
125
|
-
old = Bundler.rubygems.sources
|
|
126
125
|
index = Bundler::Index.new
|
|
127
126
|
|
|
128
127
|
if Bundler::Fetcher.disable_endpoint
|
|
@@ -153,8 +152,6 @@ module Bundler
|
|
|
153
152
|
rescue CertificateFailureError
|
|
154
153
|
Bundler.ui.info "" if gem_names && use_api # newline after dots
|
|
155
154
|
raise
|
|
156
|
-
ensure
|
|
157
|
-
Bundler.rubygems.sources = old
|
|
158
155
|
end
|
|
159
156
|
|
|
160
157
|
def use_api
|