bundler 1.17.0.pre.2 → 2.1.0.pre.2
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of bundler might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/CHANGELOG.md +769 -570
- data/LICENSE.md +18 -19
- data/README.md +9 -8
- data/bundler.gemspec +12 -23
- data/exe/bundle +19 -3
- data/lib/bundler.rb +121 -68
- data/lib/bundler/build_metadata.rb +14 -7
- data/lib/bundler/capistrano.rb +4 -4
- data/lib/bundler/cli.rb +129 -121
- data/lib/bundler/cli/add.rb +27 -16
- data/lib/bundler/cli/common.rb +11 -12
- data/lib/bundler/cli/config.rb +161 -86
- data/lib/bundler/cli/console.rb +1 -1
- data/lib/bundler/cli/doctor.rb +4 -4
- data/lib/bundler/cli/exec.rb +4 -9
- data/lib/bundler/cli/gem.rb +5 -5
- data/lib/bundler/cli/info.rb +17 -5
- data/lib/bundler/cli/init.rb +1 -1
- data/lib/bundler/cli/install.rb +11 -10
- data/lib/bundler/cli/issue.rb +3 -3
- data/lib/bundler/cli/open.rb +10 -6
- data/lib/bundler/cli/outdated.rb +85 -81
- data/lib/bundler/cli/package.rb +8 -9
- data/lib/bundler/cli/plugin.rb +9 -2
- data/lib/bundler/cli/pristine.rb +1 -1
- data/lib/bundler/cli/show.rb +1 -1
- data/lib/bundler/cli/update.rb +31 -11
- data/lib/bundler/compact_index_client.rb +25 -9
- data/lib/bundler/compact_index_client/updater.rb +2 -6
- data/lib/bundler/current_ruby.rb +9 -7
- data/lib/bundler/definition.rb +35 -26
- data/lib/bundler/dependency.rb +16 -4
- data/lib/bundler/deployment.rb +1 -1
- data/lib/bundler/dsl.rb +15 -39
- data/lib/bundler/env.rb +8 -13
- data/lib/bundler/environment_preserver.rb +0 -1
- data/lib/bundler/feature_flag.rb +23 -32
- data/lib/bundler/fetcher.rb +14 -11
- data/lib/bundler/fetcher/compact_index.rb +26 -12
- data/lib/bundler/fetcher/dependency.rb +1 -1
- data/lib/bundler/fetcher/downloader.rb +4 -1
- data/lib/bundler/fetcher/index.rb +4 -2
- data/lib/bundler/friendly_errors.rb +4 -5
- data/lib/bundler/gem_helper.rb +39 -24
- data/lib/bundler/gem_helpers.rb +2 -4
- data/lib/bundler/gem_tasks.rb +1 -1
- data/lib/bundler/gem_version_promoter.rb +3 -3
- data/lib/bundler/graph.rb +2 -2
- data/lib/bundler/injector.rb +10 -8
- data/lib/bundler/inline.rb +19 -18
- data/lib/bundler/installer.rb +7 -14
- data/lib/bundler/installer/gem_installer.rb +5 -1
- data/lib/bundler/installer/parallel_installer.rb +4 -8
- data/lib/bundler/installer/standalone.rb +1 -2
- data/lib/bundler/lazy_specification.rb +2 -2
- data/lib/bundler/lockfile_parser.rb +13 -21
- data/lib/bundler/match_platform.rb +1 -1
- data/lib/bundler/plugin.rb +42 -29
- data/lib/bundler/plugin/api.rb +1 -1
- data/lib/bundler/plugin/api/source.rb +2 -2
- data/lib/bundler/plugin/index.rb +14 -3
- data/lib/bundler/plugin/installer.rb +28 -15
- data/lib/bundler/psyched_yaml.rb +1 -1
- data/lib/bundler/resolver.rb +72 -24
- data/lib/bundler/resolver/spec_group.rb +3 -2
- data/lib/bundler/retry.rb +2 -2
- data/lib/bundler/ruby_version.rb +4 -19
- data/lib/bundler/rubygems_ext.rb +10 -66
- data/lib/bundler/rubygems_gem_installer.rb +1 -1
- data/lib/bundler/rubygems_integration.rb +144 -395
- data/lib/bundler/runtime.rb +2 -9
- data/lib/bundler/settings.rb +15 -47
- data/lib/bundler/setup.rb +6 -5
- data/lib/bundler/shared_helpers.rb +64 -67
- data/lib/bundler/similarity_detector.rb +2 -2
- data/lib/bundler/source.rb +5 -5
- data/lib/bundler/source/git.rb +19 -12
- data/lib/bundler/source/git/git_proxy.rb +35 -39
- data/lib/bundler/source/metadata.rb +9 -5
- data/lib/bundler/source/path.rb +13 -8
- data/lib/bundler/source/rubygems.rb +11 -5
- data/lib/bundler/source/rubygems/remote.rb +1 -2
- data/lib/bundler/source_list.rb +9 -12
- data/lib/bundler/spec_set.rb +23 -12
- data/lib/bundler/stub_specification.rb +18 -30
- data/lib/bundler/templates/Executable.bundler +23 -14
- data/lib/bundler/templates/newgem/CODE_OF_CONDUCT.md.tt +3 -3
- data/lib/bundler/templates/newgem/Gemfile.tt +8 -2
- data/lib/bundler/templates/newgem/README.md.tt +4 -3
- data/lib/bundler/templates/newgem/newgem.gemspec.tt +6 -27
- data/lib/bundler/templates/newgem/test/test_helper.rb.tt +1 -1
- data/lib/bundler/templates/newgem/travis.yml.tt +0 -1
- data/lib/bundler/ui.rb +3 -3
- data/lib/bundler/ui/rg_proxy.rb +1 -1
- data/lib/bundler/ui/shell.rb +4 -8
- data/lib/bundler/vendor/connection_pool/lib/connection_pool.rb +161 -0
- data/lib/bundler/vendor/connection_pool/lib/connection_pool/monotonic_time.rb +66 -0
- data/lib/bundler/vendor/connection_pool/lib/connection_pool/timed_stack.rb +176 -0
- data/lib/bundler/vendor/connection_pool/lib/connection_pool/version.rb +3 -0
- data/lib/bundler/vendor/fileutils/lib/fileutils.rb +151 -48
- data/lib/bundler/vendor/fileutils/lib/fileutils/version.rb +5 -0
- data/lib/bundler/vendor/molinillo/lib/molinillo.rb +6 -6
- data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph.rb +2 -2
- data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/add_edge_no_circular.rb +1 -1
- data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/add_vertex.rb +1 -1
- data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/delete_edge.rb +1 -1
- data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/detach_vertex_named.rb +1 -1
- data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/log.rb +6 -6
- data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/set_payload.rb +1 -1
- data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/tag.rb +1 -1
- data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/vertex.rb +30 -8
- data/lib/bundler/vendor/molinillo/lib/molinillo/errors.rb +1 -1
- data/lib/bundler/vendor/molinillo/lib/molinillo/resolution.rb +4 -4
- data/lib/bundler/vendor/molinillo/lib/molinillo/resolver.rb +2 -2
- data/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb +248 -279
- data/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/connection.rb +40 -0
- data/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/pool.rb +53 -0
- data/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/timed_stack_multi.rb +79 -0
- data/lib/bundler/vendor/thor/lib/thor.rb +7 -2
- data/lib/bundler/vendor/thor/lib/thor/actions.rb +21 -11
- data/lib/bundler/vendor/thor/lib/thor/actions/create_file.rb +1 -1
- data/lib/bundler/vendor/thor/lib/thor/actions/create_link.rb +1 -1
- data/lib/bundler/vendor/thor/lib/thor/actions/directory.rb +1 -1
- data/lib/bundler/vendor/thor/lib/thor/actions/file_manipulation.rb +11 -2
- data/lib/bundler/vendor/thor/lib/thor/actions/inject_into_file.rb +1 -1
- data/lib/bundler/vendor/thor/lib/thor/base.rb +16 -17
- data/lib/bundler/vendor/thor/lib/thor/error.rb +82 -0
- data/lib/bundler/vendor/thor/lib/thor/group.rb +3 -3
- data/lib/bundler/vendor/thor/lib/thor/line_editor.rb +2 -2
- data/lib/bundler/vendor/thor/lib/thor/parser.rb +4 -4
- data/lib/bundler/vendor/thor/lib/thor/parser/options.rb +7 -2
- data/lib/bundler/vendor/thor/lib/thor/runner.rb +6 -6
- data/lib/bundler/vendor/thor/lib/thor/shell.rb +4 -4
- data/lib/bundler/vendor/thor/lib/thor/shell/basic.rb +52 -7
- data/lib/bundler/vendor/thor/lib/thor/shell/color.rb +1 -1
- data/lib/bundler/vendor/thor/lib/thor/shell/html.rb +1 -1
- data/lib/bundler/vendor/thor/lib/thor/util.rb +1 -1
- data/lib/bundler/vendor/thor/lib/thor/version.rb +1 -1
- data/lib/bundler/vendored_fileutils.rb +1 -6
- data/lib/bundler/vendored_molinillo.rb +1 -1
- data/lib/bundler/vendored_persistent.rb +7 -5
- data/lib/bundler/vendored_thor.rb +2 -2
- data/lib/bundler/version.rb +1 -20
- data/lib/bundler/version_ranges.rb +51 -5
- data/lib/bundler/vlad.rb +2 -2
- data/lib/bundler/worker.rb +1 -3
- data/lib/bundler/yaml_serializer.rb +2 -3
- data/man/bundle-add.1 +10 -2
- data/man/bundle-add.1.txt +11 -5
- data/man/bundle-add.ronn +7 -1
- data/man/bundle-binstubs.1 +2 -2
- data/man/bundle-binstubs.1.txt +2 -2
- data/man/bundle-binstubs.ronn +1 -1
- data/man/bundle-check.1 +1 -1
- data/man/bundle-check.1.txt +6 -6
- data/man/bundle-clean.1 +1 -1
- data/man/bundle-clean.1.txt +1 -1
- data/man/bundle-config.1 +52 -36
- data/man/bundle-config.1.txt +82 -67
- data/man/bundle-config.ronn +56 -40
- data/man/bundle-doctor.1 +1 -1
- data/man/bundle-doctor.1.txt +1 -1
- data/man/bundle-exec.1 +2 -2
- data/man/bundle-exec.1.txt +2 -2
- data/man/bundle-exec.ronn +1 -1
- data/man/bundle-gem.1 +1 -1
- data/man/bundle-gem.1.txt +3 -3
- data/man/bundle-info.1 +1 -1
- data/man/bundle-info.1.txt +1 -1
- data/man/bundle-init.1 +2 -2
- data/man/bundle-init.1.txt +2 -2
- data/man/bundle-init.ronn +1 -1
- data/man/bundle-inject.1 +1 -1
- data/man/bundle-inject.1.txt +1 -1
- data/man/bundle-install.1 +8 -5
- data/man/bundle-install.1.txt +56 -51
- data/man/bundle-install.ronn +9 -4
- data/man/bundle-list.1 +1 -1
- data/man/bundle-list.1.txt +1 -1
- data/man/bundle-lock.1 +1 -1
- data/man/bundle-lock.1.txt +16 -16
- data/man/bundle-open.1 +1 -1
- data/man/bundle-open.1.txt +1 -1
- data/man/bundle-outdated.1 +1 -1
- data/man/bundle-outdated.1.txt +1 -1
- data/man/bundle-package.1 +1 -1
- data/man/bundle-package.1.txt +1 -1
- data/man/bundle-platform.1 +1 -1
- data/man/bundle-platform.1.txt +1 -1
- data/man/bundle-pristine.1 +1 -1
- data/man/bundle-pristine.1.txt +1 -1
- data/man/bundle-remove.1 +1 -1
- data/man/bundle-remove.1.txt +1 -1
- data/man/bundle-show.1 +1 -1
- data/man/bundle-show.1.txt +1 -1
- data/man/bundle-update.1 +4 -4
- data/man/bundle-update.1.txt +64 -65
- data/man/bundle-update.ronn +3 -3
- data/man/bundle-viz.1 +1 -1
- data/man/bundle-viz.1.txt +1 -1
- data/man/bundle.1 +7 -3
- data/man/bundle.1.txt +11 -8
- data/man/bundle.ronn +5 -2
- data/man/gemfile.5 +17 -20
- data/man/gemfile.5.ronn +14 -18
- data/man/gemfile.5.txt +108 -112
- metadata +17 -104
- data/exe/bundle_ruby +0 -60
- data/lib/bundler/cli/cache.rb +0 -36
- data/lib/bundler/compatibility_guard.rb +0 -14
- data/lib/bundler/ssl_certs/.document +0 -1
- data/lib/bundler/ssl_certs/certificate_manager.rb +0 -66
- data/lib/bundler/ssl_certs/index.rubygems.org/GlobalSignRootCA.pem +0 -21
- data/lib/bundler/ssl_certs/rubygems.global.ssl.fastly.net/DigiCertHighAssuranceEVRootCA.pem +0 -23
- data/lib/bundler/ssl_certs/rubygems.org/AddTrustExternalCARoot.pem +0 -25
- data/lib/bundler/vendor/net-http-persistent/lib/net/http/faster.rb +0 -27
- data/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/ssl_reuse.rb +0 -129
data/LICENSE.md
CHANGED
@@ -1,23 +1,22 @@
|
|
1
|
-
|
2
|
-
Portions copyright (c) 2009 Engine Yard
|
1
|
+
The MIT License
|
3
2
|
|
4
|
-
|
3
|
+
Portions copyright (c) 2010-2019 André Arko
|
4
|
+
Portions copyright (c) 2009 Engine Yard
|
5
5
|
|
6
|
-
Permission is hereby granted, free of charge, to any person obtaining
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
the following conditions:
|
6
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
7
|
+
of this software and associated documentation files (the "Software"), to deal
|
8
|
+
in the Software without restriction, including without limitation the rights
|
9
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
10
|
+
copies of the Software, and to permit persons to whom the Software is
|
11
|
+
furnished to do so, subject to the following conditions:
|
13
12
|
|
14
|
-
The above copyright notice and this permission notice shall be
|
15
|
-
|
13
|
+
The above copyright notice and this permission notice shall be included in
|
14
|
+
all copies or substantial portions of the Software.
|
16
15
|
|
17
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
OF
|
23
|
-
|
16
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
17
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
18
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
19
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
20
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
21
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
22
|
+
THE SOFTWARE.
|
data/README.md
CHANGED
@@ -1,8 +1,7 @@
|
|
1
1
|
[![Version ](https://img.shields.io/gem/v/bundler.svg?style=flat)](https://rubygems.org/gems/bundler)
|
2
2
|
[![Build Status](https://img.shields.io/travis/bundler/bundler/master.svg?style=flat)](https://travis-ci.org/bundler/bundler)
|
3
|
-
[![
|
4
|
-
[![
|
5
|
-
[![Slack ](http://bundler-slackin.herokuapp.com/badge.svg)](http://bundler-slackin.herokuapp.com)
|
3
|
+
[![Inline docs ](https://inch-ci.org/github/bundler/bundler.svg?style=flat)](https://inch-ci.org/github/bundler/bundler)
|
4
|
+
[![Slack ](https://bundler-slackin.herokuapp.com/badge.svg)](https://bundler-slackin.herokuapp.com)
|
6
5
|
|
7
6
|
# Bundler: a gem to bundle gems
|
8
7
|
|
@@ -29,7 +28,7 @@ bundle install
|
|
29
28
|
bundle exec rspec
|
30
29
|
```
|
31
30
|
|
32
|
-
See [bundler.io](
|
31
|
+
See [bundler.io](https://bundler.io) for the full documentation.
|
33
32
|
|
34
33
|
### Troubleshooting
|
35
34
|
|
@@ -45,9 +44,11 @@ To get in touch with the Bundler core team and other Bundler users, please see [
|
|
45
44
|
|
46
45
|
### Contributing
|
47
46
|
|
48
|
-
If you'd like to contribute to Bundler, that's awesome, and we <3 you.
|
47
|
+
If you'd like to contribute to Bundler, that's awesome, and we <3 you. We've put together [the Bundler contributor guide](https://github.com/bundler/bundler/blob/master/doc/contributing/README.md) with all of the information you need to get started.
|
49
48
|
|
50
|
-
|
49
|
+
If you'd like to request a substantial change to Bundler or to the Bundler documentation, refer to the [Bundler RFC process](https://github.com/bundler/rfcs) for more information.
|
50
|
+
|
51
|
+
While some Bundler contributors are compensated by Ruby Together, the project maintainers make decisions independent of Ruby Together. As a project, we welcome contributions regardless of the author's affiliation with Ruby Together.
|
51
52
|
|
52
53
|
### Supporting
|
53
54
|
|
@@ -56,8 +57,8 @@ While some Bundler contributors are compensated by Ruby Together, the project ma
|
|
56
57
|
|
57
58
|
### Code of Conduct
|
58
59
|
|
59
|
-
Everyone interacting in the Bundler project
|
60
|
+
Everyone interacting in the Bundler project's codebases, issue trackers, chat rooms, and mailing lists is expected to follow the [Bundler code of conduct](https://github.com/bundler/bundler/blob/master/CODE_OF_CONDUCT.md).
|
60
61
|
|
61
62
|
### License
|
62
63
|
|
63
|
-
[MIT License](https://github.com/bundler/bundler/blob/master/LICENSE.md)
|
64
|
+
Bundler is available under an [MIT License](https://github.com/bundler/bundler/blob/master/LICENSE.md).
|
data/bundler.gemspec
CHANGED
@@ -1,8 +1,11 @@
|
|
1
|
-
# coding: utf-8
|
2
1
|
# frozen_string_literal: true
|
3
2
|
|
4
|
-
|
5
|
-
|
3
|
+
begin
|
4
|
+
require_relative "lib/bundler/version"
|
5
|
+
rescue LoadError
|
6
|
+
# for Ruby core repository
|
7
|
+
require_relative "version"
|
8
|
+
end
|
6
9
|
|
7
10
|
Gem::Specification.new do |s|
|
8
11
|
s.name = "bundler"
|
@@ -15,38 +18,24 @@ Gem::Specification.new do |s|
|
|
15
18
|
"Yehuda Katz"
|
16
19
|
]
|
17
20
|
s.email = ["team@bundler.io"]
|
18
|
-
s.homepage = "
|
21
|
+
s.homepage = "https://bundler.io"
|
19
22
|
s.summary = "The best way to manage your application's dependencies"
|
20
23
|
s.description = "Bundler manages an application's dependencies through its entire life, across many machines, systematically and repeatably"
|
21
24
|
|
22
25
|
if s.respond_to?(:metadata=)
|
23
26
|
s.metadata = {
|
24
|
-
"bug_tracker_uri" => "
|
27
|
+
"bug_tracker_uri" => "https://github.com/bundler/bundler/issues",
|
25
28
|
"changelog_uri" => "https://github.com/bundler/bundler/blob/master/CHANGELOG.md",
|
26
29
|
"homepage_uri" => "https://bundler.io/",
|
27
|
-
"source_code_uri" => "
|
30
|
+
"source_code_uri" => "https://github.com/bundler/bundler/",
|
28
31
|
}
|
29
32
|
end
|
30
33
|
|
31
|
-
|
32
|
-
|
33
|
-
s.required_rubygems_version = ">= 2.5.0"
|
34
|
-
else
|
35
|
-
s.required_ruby_version = ">= 1.8.7"
|
36
|
-
s.required_rubygems_version = ">= 1.3.6"
|
37
|
-
end
|
34
|
+
s.required_ruby_version = ">= 2.3.0"
|
35
|
+
s.required_rubygems_version = ">= 2.5.2"
|
38
36
|
|
39
|
-
s.
|
40
|
-
s.add_development_dependency "mustache", "0.99.6"
|
41
|
-
s.add_development_dependency "rake", "~> 10.0"
|
42
|
-
s.add_development_dependency "rdiscount", "~> 2.2"
|
43
|
-
s.add_development_dependency "ronn", "~> 0.7.3"
|
44
|
-
s.add_development_dependency "rspec", "~> 3.6"
|
37
|
+
s.files = Dir.glob("{lib,man,exe}/**/*", File::FNM_DOTMATCH).reject {|f| File.directory?(f) }
|
45
38
|
|
46
|
-
s.files = `git ls-files -z`.split("\x0").select {|f| f.match(%r{^(lib|exe)/}) }
|
47
|
-
# we don't check in man pages, but we need to ship them because
|
48
|
-
# we use them to generate the long-form help for each command.
|
49
|
-
s.files += Dir.glob("man/**/*")
|
50
39
|
# Include the CHANGELOG.md, LICENSE.md, README.md manually
|
51
40
|
s.files += %w[CHANGELOG.md LICENSE.md README.md]
|
52
41
|
# include the gemspec itself because warbler breaks w/o it
|
data/exe/bundle
CHANGED
@@ -7,7 +7,14 @@ Signal.trap("INT") do
|
|
7
7
|
exit 1
|
8
8
|
end
|
9
9
|
|
10
|
-
|
10
|
+
base_path = File.expand_path("../lib", __dir__)
|
11
|
+
|
12
|
+
if File.exist?(base_path)
|
13
|
+
require_relative "../lib/bundler"
|
14
|
+
else
|
15
|
+
require "bundler"
|
16
|
+
end
|
17
|
+
|
11
18
|
# Check if an older version of bundler is installed
|
12
19
|
$LOAD_PATH.each do |path|
|
13
20
|
next unless path =~ %r{/bundler-0\.(\d+)} && $1.to_i < 9
|
@@ -18,9 +25,18 @@ $LOAD_PATH.each do |path|
|
|
18
25
|
abort(err)
|
19
26
|
end
|
20
27
|
|
21
|
-
|
28
|
+
if File.exist?(base_path)
|
29
|
+
require_relative "../lib/bundler/friendly_errors"
|
30
|
+
else
|
31
|
+
require "bundler/friendly_errors"
|
32
|
+
end
|
33
|
+
|
22
34
|
Bundler.with_friendly_errors do
|
23
|
-
|
35
|
+
if File.exist?(base_path)
|
36
|
+
require_relative "../lib/bundler/cli"
|
37
|
+
else
|
38
|
+
require "bundler/cli"
|
39
|
+
end
|
24
40
|
|
25
41
|
# Allow any command to use --help flag to show help for that command
|
26
42
|
help_flags = %w[--help -h]
|
data/lib/bundler.rb
CHANGED
@@ -1,21 +1,18 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
require "bundler/vendored_fileutils"
|
3
|
+
require_relative "bundler/vendored_fileutils"
|
6
4
|
require "pathname"
|
7
5
|
require "rbconfig"
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
require "bundler/build_metadata"
|
6
|
+
|
7
|
+
require_relative "bundler/errors"
|
8
|
+
require_relative "bundler/environment_preserver"
|
9
|
+
require_relative "bundler/plugin"
|
10
|
+
require_relative "bundler/rubygems_ext"
|
11
|
+
require_relative "bundler/rubygems_integration"
|
12
|
+
require_relative "bundler/version"
|
13
|
+
require_relative "bundler/constants"
|
14
|
+
require_relative "bundler/current_ruby"
|
15
|
+
require_relative "bundler/build_metadata"
|
19
16
|
|
20
17
|
module Bundler
|
21
18
|
environment_preserver = EnvironmentPreserver.new(ENV, EnvironmentPreserver::BUNDLER_KEYS)
|
@@ -23,43 +20,43 @@ module Bundler
|
|
23
20
|
ENV.replace(environment_preserver.backup)
|
24
21
|
SUDO_MUTEX = Mutex.new
|
25
22
|
|
26
|
-
autoload :Definition, "bundler/definition"
|
27
|
-
autoload :Dependency, "bundler/dependency"
|
28
|
-
autoload :DepProxy, "bundler/dep_proxy"
|
29
|
-
autoload :Deprecate, "bundler/deprecate"
|
30
|
-
autoload :Dsl, "bundler/dsl"
|
31
|
-
autoload :EndpointSpecification, "bundler/endpoint_specification"
|
32
|
-
autoload :Env, "bundler/env"
|
33
|
-
autoload :Fetcher, "bundler/fetcher"
|
34
|
-
autoload :FeatureFlag, "bundler/feature_flag"
|
35
|
-
autoload :GemHelper, "bundler/gem_helper"
|
36
|
-
autoload :GemHelpers, "bundler/gem_helpers"
|
37
|
-
autoload :GemRemoteFetcher, "bundler/gem_remote_fetcher"
|
38
|
-
autoload :GemVersionPromoter, "bundler/gem_version_promoter"
|
39
|
-
autoload :Graph, "bundler/graph"
|
40
|
-
autoload :Index, "bundler/index"
|
41
|
-
autoload :Injector, "bundler/injector"
|
42
|
-
autoload :Installer, "bundler/installer"
|
43
|
-
autoload :LazySpecification, "bundler/lazy_specification"
|
44
|
-
autoload :LockfileParser, "bundler/lockfile_parser"
|
45
|
-
autoload :MatchPlatform, "bundler/match_platform"
|
46
|
-
autoload :ProcessLock, "bundler/process_lock"
|
47
|
-
autoload :RemoteSpecification, "bundler/remote_specification"
|
48
|
-
autoload :Resolver, "bundler/resolver"
|
49
|
-
autoload :Retry, "bundler/retry"
|
50
|
-
autoload :RubyDsl, "bundler/ruby_dsl"
|
51
|
-
autoload :RubyGemsGemInstaller, "bundler/rubygems_gem_installer"
|
52
|
-
autoload :RubyVersion, "bundler/ruby_version"
|
53
|
-
autoload :Runtime, "bundler/runtime"
|
54
|
-
autoload :Settings, "bundler/settings"
|
55
|
-
autoload :SharedHelpers, "bundler/shared_helpers"
|
56
|
-
autoload :Source, "bundler/source"
|
57
|
-
autoload :SourceList, "bundler/source_list"
|
58
|
-
autoload :SpecSet, "bundler/spec_set"
|
59
|
-
autoload :StubSpecification, "bundler/stub_specification"
|
60
|
-
autoload :UI, "bundler/ui"
|
61
|
-
autoload :URICredentialsFilter, "bundler/uri_credentials_filter"
|
62
|
-
autoload :VersionRanges, "bundler/version_ranges"
|
23
|
+
autoload :Definition, File.expand_path("bundler/definition", __dir__)
|
24
|
+
autoload :Dependency, File.expand_path("bundler/dependency", __dir__)
|
25
|
+
autoload :DepProxy, File.expand_path("bundler/dep_proxy", __dir__)
|
26
|
+
autoload :Deprecate, File.expand_path("bundler/deprecate", __dir__)
|
27
|
+
autoload :Dsl, File.expand_path("bundler/dsl", __dir__)
|
28
|
+
autoload :EndpointSpecification, File.expand_path("bundler/endpoint_specification", __dir__)
|
29
|
+
autoload :Env, File.expand_path("bundler/env", __dir__)
|
30
|
+
autoload :Fetcher, File.expand_path("bundler/fetcher", __dir__)
|
31
|
+
autoload :FeatureFlag, File.expand_path("bundler/feature_flag", __dir__)
|
32
|
+
autoload :GemHelper, File.expand_path("bundler/gem_helper", __dir__)
|
33
|
+
autoload :GemHelpers, File.expand_path("bundler/gem_helpers", __dir__)
|
34
|
+
autoload :GemRemoteFetcher, File.expand_path("bundler/gem_remote_fetcher", __dir__)
|
35
|
+
autoload :GemVersionPromoter, File.expand_path("bundler/gem_version_promoter", __dir__)
|
36
|
+
autoload :Graph, File.expand_path("bundler/graph", __dir__)
|
37
|
+
autoload :Index, File.expand_path("bundler/index", __dir__)
|
38
|
+
autoload :Injector, File.expand_path("bundler/injector", __dir__)
|
39
|
+
autoload :Installer, File.expand_path("bundler/installer", __dir__)
|
40
|
+
autoload :LazySpecification, File.expand_path("bundler/lazy_specification", __dir__)
|
41
|
+
autoload :LockfileParser, File.expand_path("bundler/lockfile_parser", __dir__)
|
42
|
+
autoload :MatchPlatform, File.expand_path("bundler/match_platform", __dir__)
|
43
|
+
autoload :ProcessLock, File.expand_path("bundler/process_lock", __dir__)
|
44
|
+
autoload :RemoteSpecification, File.expand_path("bundler/remote_specification", __dir__)
|
45
|
+
autoload :Resolver, File.expand_path("bundler/resolver", __dir__)
|
46
|
+
autoload :Retry, File.expand_path("bundler/retry", __dir__)
|
47
|
+
autoload :RubyDsl, File.expand_path("bundler/ruby_dsl", __dir__)
|
48
|
+
autoload :RubyGemsGemInstaller, File.expand_path("bundler/rubygems_gem_installer", __dir__)
|
49
|
+
autoload :RubyVersion, File.expand_path("bundler/ruby_version", __dir__)
|
50
|
+
autoload :Runtime, File.expand_path("bundler/runtime", __dir__)
|
51
|
+
autoload :Settings, File.expand_path("bundler/settings", __dir__)
|
52
|
+
autoload :SharedHelpers, File.expand_path("bundler/shared_helpers", __dir__)
|
53
|
+
autoload :Source, File.expand_path("bundler/source", __dir__)
|
54
|
+
autoload :SourceList, File.expand_path("bundler/source_list", __dir__)
|
55
|
+
autoload :SpecSet, File.expand_path("bundler/spec_set", __dir__)
|
56
|
+
autoload :StubSpecification, File.expand_path("bundler/stub_specification", __dir__)
|
57
|
+
autoload :UI, File.expand_path("bundler/ui", __dir__)
|
58
|
+
autoload :URICredentialsFilter, File.expand_path("bundler/uri_credentials_filter", __dir__)
|
59
|
+
autoload :VersionRanges, File.expand_path("bundler/version_ranges", __dir__)
|
63
60
|
|
64
61
|
class << self
|
65
62
|
def configure
|
@@ -153,7 +150,7 @@ module Bundler
|
|
153
150
|
end
|
154
151
|
|
155
152
|
def ruby_scope
|
156
|
-
"#{Bundler.rubygems.ruby_engine}/#{
|
153
|
+
"#{Bundler.rubygems.ruby_engine}/#{RbConfig::CONFIG["ruby_version"]}"
|
157
154
|
end
|
158
155
|
|
159
156
|
def user_home
|
@@ -198,19 +195,19 @@ module Bundler
|
|
198
195
|
def user_bundle_path(dir = "home")
|
199
196
|
env_var, fallback = case dir
|
200
197
|
when "home"
|
201
|
-
["BUNDLE_USER_HOME", Pathname.new(user_home).join(".bundle")]
|
198
|
+
["BUNDLE_USER_HOME", proc { Pathname.new(user_home).join(".bundle") }]
|
202
199
|
when "cache"
|
203
|
-
["BUNDLE_USER_CACHE", user_bundle_path.join("cache")]
|
200
|
+
["BUNDLE_USER_CACHE", proc { user_bundle_path.join("cache") }]
|
204
201
|
when "config"
|
205
|
-
["BUNDLE_USER_CONFIG", user_bundle_path.join("config")]
|
202
|
+
["BUNDLE_USER_CONFIG", proc { user_bundle_path.join("config") }]
|
206
203
|
when "plugin"
|
207
|
-
["BUNDLE_USER_PLUGIN", user_bundle_path.join("plugin")]
|
204
|
+
["BUNDLE_USER_PLUGIN", proc { user_bundle_path.join("plugin") }]
|
208
205
|
else
|
209
206
|
raise BundlerError, "Unknown user path requested: #{dir}"
|
210
207
|
end
|
211
208
|
# `fallback` will already be a Pathname, but Pathname.new() is
|
212
209
|
# idempotent so it's OK
|
213
|
-
Pathname.new(ENV.fetch(env_var, fallback))
|
210
|
+
Pathname.new(ENV.fetch(env_var, &fallback))
|
214
211
|
end
|
215
212
|
|
216
213
|
def user_cache
|
@@ -263,7 +260,7 @@ module Bundler
|
|
263
260
|
message = <<EOF
|
264
261
|
It is a security vulnerability to allow your home directory to be world-writable, and bundler can not continue.
|
265
262
|
You should probably consider fixing this issue by running `chmod o-w ~` on *nix.
|
266
|
-
Please refer to
|
263
|
+
Please refer to https://ruby-doc.org/stdlib-2.1.2/libdoc/fileutils/rdoc/FileUtils.html#method-c-remove_entry_secure for details.
|
267
264
|
EOF
|
268
265
|
File.world_writable?(path) ? Bundler.ui.warn(message) : raise
|
269
266
|
raise PathError, "Please fix the world-writable issue with your #{path} directory"
|
@@ -280,10 +277,19 @@ EOF
|
|
280
277
|
ORIGINAL_ENV.clone
|
281
278
|
end
|
282
279
|
|
283
|
-
# @deprecated Use `
|
284
|
-
# @return [Hash] Environment with all bundler-related variables removed
|
280
|
+
# @deprecated Use `unbundled_env` instead
|
285
281
|
def clean_env
|
286
|
-
Bundler::SharedHelpers.major_deprecation(
|
282
|
+
Bundler::SharedHelpers.major_deprecation(
|
283
|
+
2,
|
284
|
+
"`Bundler.clean_env` has been deprecated in favor of `Bundler.unbundled_env`. " \
|
285
|
+
"If you instead want the environment before bundler was originally loaded, use `Bundler.original_env`"
|
286
|
+
)
|
287
|
+
|
288
|
+
unbundled_env
|
289
|
+
end
|
290
|
+
|
291
|
+
# @return [Hash] Environment with all bundler-related variables removed
|
292
|
+
def unbundled_env
|
287
293
|
env = original_env
|
288
294
|
|
289
295
|
if env.key?("BUNDLER_ORIG_MANPATH")
|
@@ -305,20 +311,67 @@ EOF
|
|
305
311
|
env
|
306
312
|
end
|
307
313
|
|
314
|
+
# Run block with environment present before Bundler was activated
|
308
315
|
def with_original_env
|
309
316
|
with_env(original_env) { yield }
|
310
317
|
end
|
311
318
|
|
319
|
+
# @deprecated Use `with_unbundled_env` instead
|
312
320
|
def with_clean_env
|
313
|
-
|
321
|
+
Bundler::SharedHelpers.major_deprecation(
|
322
|
+
2,
|
323
|
+
"`Bundler.with_clean_env` has been deprecated in favor of `Bundler.with_unbundled_env`. " \
|
324
|
+
"If you instead want the environment before bundler was originally loaded, use `Bundler.with_original_env`"
|
325
|
+
)
|
326
|
+
|
327
|
+
with_env(unbundled_env) { yield }
|
328
|
+
end
|
329
|
+
|
330
|
+
# Run block with all bundler-related variables removed
|
331
|
+
def with_unbundled_env
|
332
|
+
with_env(unbundled_env) { yield }
|
314
333
|
end
|
315
334
|
|
335
|
+
# Run subcommand with the environment present before Bundler was activated
|
336
|
+
def original_system(*args)
|
337
|
+
with_original_env { Kernel.system(*args) }
|
338
|
+
end
|
339
|
+
|
340
|
+
# @deprecated Use `unbundled_system` instead
|
316
341
|
def clean_system(*args)
|
317
|
-
|
342
|
+
Bundler::SharedHelpers.major_deprecation(
|
343
|
+
2,
|
344
|
+
"`Bundler.clean_system` has been deprecated in favor of `Bundler.unbundled_system`. " \
|
345
|
+
"If you instead want to run the command in the environment before bundler was originally loaded, use `Bundler.original_system`"
|
346
|
+
)
|
347
|
+
|
348
|
+
with_env(unbundled_env) { Kernel.system(*args) }
|
349
|
+
end
|
350
|
+
|
351
|
+
# Run subcommand in an environment with all bundler related variables removed
|
352
|
+
def unbundled_system(*args)
|
353
|
+
with_unbundled_env { Kernel.system(*args) }
|
318
354
|
end
|
319
355
|
|
356
|
+
# Run a `Kernel.exec` to a subcommand with the environment present before Bundler was activated
|
357
|
+
def original_exec(*args)
|
358
|
+
with_original_env { Kernel.exec(*args) }
|
359
|
+
end
|
360
|
+
|
361
|
+
# @deprecated Use `unbundled_exec` instead
|
320
362
|
def clean_exec(*args)
|
321
|
-
|
363
|
+
Bundler::SharedHelpers.major_deprecation(
|
364
|
+
2,
|
365
|
+
"`Bundler.clean_exec` has been deprecated in favor of `Bundler.unbundled_exec`. " \
|
366
|
+
"If you instead want to exec to a command in the environment before bundler was originally loaded, use `Bundler.original_exec`"
|
367
|
+
)
|
368
|
+
|
369
|
+
with_env(unbundled_env) { Kernel.exec(*args) }
|
370
|
+
end
|
371
|
+
|
372
|
+
# Run a `Kernel.exec` to a subcommand in an environment with all bundler related variables removed
|
373
|
+
def unbundled_exec(*args)
|
374
|
+
with_env(unbundled_env) { Kernel.exec(*args) }
|
322
375
|
end
|
323
376
|
|
324
377
|
def local_platform
|
@@ -343,7 +396,7 @@ EOF
|
|
343
396
|
# system binaries. If you put '-n foo' in your .gemrc, RubyGems will
|
344
397
|
# install binstubs there instead. Unfortunately, RubyGems doesn't expose
|
345
398
|
# that directory at all, so rather than parse .gemrc ourselves, we allow
|
346
|
-
# the directory to be set as well, via `bundle config bindir foo`.
|
399
|
+
# the directory to be set as well, via `bundle config set bindir foo`.
|
347
400
|
Bundler.settings[:system_bindir] || Bundler.rubygems.gem_bindir
|
348
401
|
end
|
349
402
|
|
@@ -371,7 +424,7 @@ EOF
|
|
371
424
|
unwritable_files = files.reject {|f| File.writable?(f) }
|
372
425
|
sudo_needed = !unwritable_files.empty?
|
373
426
|
if sudo_needed
|
374
|
-
Bundler.ui.warn "Following files may not be writable, so sudo is needed:\n #{unwritable_files.
|
427
|
+
Bundler.ui.warn "Following files may not be writable, so sudo is needed:\n #{unwritable_files.map(&:to_s).sort.join("\n ")}"
|
375
428
|
end
|
376
429
|
end
|
377
430
|
|
@@ -509,7 +562,7 @@ EOF
|
|
509
562
|
private
|
510
563
|
|
511
564
|
def eval_yaml_gemspec(path, contents)
|
512
|
-
|
565
|
+
require_relative "bundler/psyched_yaml"
|
513
566
|
|
514
567
|
# If the YAML is invalid, Syck raises an ArgumentError, and Psych
|
515
568
|
# raises a Psych::SyntaxError. See psyched_yaml.rb for more info.
|
@@ -523,7 +576,7 @@ EOF
|
|
523
576
|
rescue ScriptError, StandardError => e
|
524
577
|
msg = "There was an error while loading `#{path.basename}`: #{e.message}"
|
525
578
|
|
526
|
-
if e.is_a?(LoadError)
|
579
|
+
if e.is_a?(LoadError)
|
527
580
|
msg += "\nDoes it try to require a relative path? That's been removed in Ruby 1.9"
|
528
581
|
end
|
529
582
|
|