bundler 2.0.2 → 2.1.0.pre.1

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.

Files changed (210) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +687 -574
  3. data/LICENSE.md +18 -19
  4. data/README.md +8 -7
  5. data/bundler.gemspec +5 -23
  6. data/exe/bundle +19 -3
  7. data/lib/bundler.rb +121 -68
  8. data/lib/bundler/build_metadata.rb +3 -3
  9. data/lib/bundler/capistrano.rb +5 -5
  10. data/lib/bundler/cli.rb +130 -124
  11. data/lib/bundler/cli/add.rb +27 -16
  12. data/lib/bundler/cli/common.rb +10 -11
  13. data/lib/bundler/cli/config.rb +161 -86
  14. data/lib/bundler/cli/console.rb +2 -2
  15. data/lib/bundler/cli/doctor.rb +4 -4
  16. data/lib/bundler/cli/exec.rb +4 -9
  17. data/lib/bundler/cli/gem.rb +5 -5
  18. data/lib/bundler/cli/info.rb +17 -5
  19. data/lib/bundler/cli/init.rb +1 -1
  20. data/lib/bundler/cli/install.rb +3 -3
  21. data/lib/bundler/cli/issue.rb +1 -1
  22. data/lib/bundler/cli/open.rb +10 -6
  23. data/lib/bundler/cli/outdated.rb +85 -81
  24. data/lib/bundler/cli/package.rb +8 -9
  25. data/lib/bundler/cli/plugin.rb +9 -2
  26. data/lib/bundler/cli/pristine.rb +1 -1
  27. data/lib/bundler/cli/show.rb +1 -1
  28. data/lib/bundler/cli/update.rb +32 -12
  29. data/lib/bundler/compact_index_client.rb +25 -9
  30. data/lib/bundler/compact_index_client/updater.rb +2 -6
  31. data/lib/bundler/current_ruby.rb +8 -7
  32. data/lib/bundler/definition.rb +33 -26
  33. data/lib/bundler/dependency.rb +16 -4
  34. data/lib/bundler/deployment.rb +2 -2
  35. data/lib/bundler/dsl.rb +18 -42
  36. data/lib/bundler/env.rb +6 -5
  37. data/lib/bundler/environment_preserver.rb +0 -1
  38. data/lib/bundler/feature_flag.rb +0 -12
  39. data/lib/bundler/fetcher.rb +14 -11
  40. data/lib/bundler/fetcher/compact_index.rb +26 -12
  41. data/lib/bundler/fetcher/dependency.rb +1 -1
  42. data/lib/bundler/fetcher/downloader.rb +3 -0
  43. data/lib/bundler/fetcher/index.rb +4 -2
  44. data/lib/bundler/friendly_errors.rb +4 -5
  45. data/lib/bundler/gem_helper.rb +8 -8
  46. data/lib/bundler/gem_helpers.rb +2 -4
  47. data/lib/bundler/gem_tasks.rb +1 -1
  48. data/lib/bundler/gem_version_promoter.rb +3 -3
  49. data/lib/bundler/graph.rb +2 -2
  50. data/lib/bundler/injector.rb +3 -1
  51. data/lib/bundler/inline.rb +19 -18
  52. data/lib/bundler/installer.rb +7 -14
  53. data/lib/bundler/installer/gem_installer.rb +5 -1
  54. data/lib/bundler/installer/parallel_installer.rb +4 -4
  55. data/lib/bundler/installer/standalone.rb +1 -2
  56. data/lib/bundler/lazy_specification.rb +2 -2
  57. data/lib/bundler/lockfile_parser.rb +13 -21
  58. data/lib/bundler/match_platform.rb +1 -1
  59. data/lib/bundler/plugin.rb +29 -18
  60. data/lib/bundler/plugin/api.rb +1 -1
  61. data/lib/bundler/plugin/api/source.rb +2 -2
  62. data/lib/bundler/plugin/index.rb +10 -2
  63. data/lib/bundler/plugin/installer.rb +28 -15
  64. data/lib/bundler/psyched_yaml.rb +1 -1
  65. data/lib/bundler/resolver.rb +72 -24
  66. data/lib/bundler/resolver/spec_group.rb +2 -2
  67. data/lib/bundler/retry.rb +2 -2
  68. data/lib/bundler/ruby_version.rb +4 -19
  69. data/lib/bundler/rubygems_ext.rb +10 -65
  70. data/lib/bundler/rubygems_gem_installer.rb +1 -1
  71. data/lib/bundler/rubygems_integration.rb +135 -403
  72. data/lib/bundler/runtime.rb +2 -9
  73. data/lib/bundler/settings.rb +15 -48
  74. data/lib/bundler/setup.rb +6 -5
  75. data/lib/bundler/shared_helpers.rb +53 -68
  76. data/lib/bundler/similarity_detector.rb +2 -2
  77. data/lib/bundler/source.rb +5 -5
  78. data/lib/bundler/source/git.rb +19 -12
  79. data/lib/bundler/source/git/git_proxy.rb +35 -39
  80. data/lib/bundler/source/metadata.rb +7 -2
  81. data/lib/bundler/source/path.rb +13 -8
  82. data/lib/bundler/source/rubygems.rb +11 -5
  83. data/lib/bundler/source/rubygems/remote.rb +1 -2
  84. data/lib/bundler/source_list.rb +9 -12
  85. data/lib/bundler/spec_set.rb +1 -6
  86. data/lib/bundler/stub_specification.rb +18 -30
  87. data/lib/bundler/templates/Executable.bundler +22 -13
  88. data/lib/bundler/templates/newgem/CODE_OF_CONDUCT.md.tt +3 -3
  89. data/lib/bundler/templates/newgem/Gemfile.tt +8 -0
  90. data/lib/bundler/templates/newgem/README.md.tt +4 -3
  91. data/lib/bundler/templates/newgem/newgem.gemspec.tt +2 -18
  92. data/lib/bundler/templates/newgem/test/test_helper.rb.tt +0 -4
  93. data/lib/bundler/templates/newgem/travis.yml.tt +0 -1
  94. data/lib/bundler/ui.rb +3 -3
  95. data/lib/bundler/ui/rg_proxy.rb +1 -1
  96. data/lib/bundler/ui/shell.rb +4 -8
  97. data/lib/bundler/vendor/connection_pool/lib/connection_pool.rb +161 -0
  98. data/lib/bundler/vendor/connection_pool/lib/connection_pool/monotonic_time.rb +66 -0
  99. data/lib/bundler/vendor/connection_pool/lib/connection_pool/timed_stack.rb +176 -0
  100. data/lib/bundler/vendor/connection_pool/lib/connection_pool/version.rb +3 -0
  101. data/lib/bundler/vendor/fileutils/lib/fileutils.rb +1 -1
  102. data/lib/bundler/vendor/molinillo/lib/molinillo.rb +6 -6
  103. data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph.rb +2 -2
  104. data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/add_edge_no_circular.rb +1 -1
  105. data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/add_vertex.rb +1 -1
  106. data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/delete_edge.rb +1 -1
  107. data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/detach_vertex_named.rb +1 -1
  108. data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/log.rb +6 -6
  109. data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/set_payload.rb +1 -1
  110. data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/tag.rb +1 -1
  111. data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/vertex.rb +30 -8
  112. data/lib/bundler/vendor/molinillo/lib/molinillo/errors.rb +1 -1
  113. data/lib/bundler/vendor/molinillo/lib/molinillo/resolution.rb +4 -4
  114. data/lib/bundler/vendor/molinillo/lib/molinillo/resolver.rb +2 -2
  115. data/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb +248 -279
  116. data/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/connection.rb +40 -0
  117. data/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/pool.rb +53 -0
  118. data/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/timed_stack_multi.rb +79 -0
  119. data/lib/bundler/vendor/thor/lib/thor.rb +1 -1
  120. data/lib/bundler/vendor/thor/lib/thor/actions.rb +7 -7
  121. data/lib/bundler/vendor/thor/lib/thor/actions/create_file.rb +1 -1
  122. data/lib/bundler/vendor/thor/lib/thor/actions/create_link.rb +1 -1
  123. data/lib/bundler/vendor/thor/lib/thor/actions/directory.rb +1 -1
  124. data/lib/bundler/vendor/thor/lib/thor/actions/inject_into_file.rb +1 -1
  125. data/lib/bundler/vendor/thor/lib/thor/base.rb +13 -13
  126. data/lib/bundler/vendor/thor/lib/thor/group.rb +1 -1
  127. data/lib/bundler/vendor/thor/lib/thor/line_editor.rb +2 -2
  128. data/lib/bundler/vendor/thor/lib/thor/parser.rb +4 -4
  129. data/lib/bundler/vendor/thor/lib/thor/runner.rb +4 -4
  130. data/lib/bundler/vendor/thor/lib/thor/shell.rb +3 -3
  131. data/lib/bundler/vendor/thor/lib/thor/shell/color.rb +1 -1
  132. data/lib/bundler/vendor/thor/lib/thor/shell/html.rb +1 -1
  133. data/lib/bundler/vendor/thor/lib/thor/util.rb +1 -1
  134. data/lib/bundler/vendored_fileutils.rb +1 -6
  135. data/lib/bundler/vendored_molinillo.rb +1 -1
  136. data/lib/bundler/vendored_persistent.rb +7 -5
  137. data/lib/bundler/vendored_thor.rb +2 -2
  138. data/lib/bundler/version.rb +1 -20
  139. data/lib/bundler/version_ranges.rb +51 -5
  140. data/lib/bundler/vlad.rb +3 -3
  141. data/lib/bundler/worker.rb +1 -3
  142. data/lib/bundler/yaml_serializer.rb +2 -3
  143. data/man/bundle-add.1 +10 -2
  144. data/man/bundle-add.1.txt +11 -5
  145. data/man/bundle-add.ronn +7 -1
  146. data/man/bundle-binstubs.1 +2 -2
  147. data/man/bundle-binstubs.1.txt +2 -2
  148. data/man/bundle-binstubs.ronn +1 -1
  149. data/man/bundle-check.1 +1 -1
  150. data/man/bundle-check.1.txt +6 -6
  151. data/man/bundle-clean.1 +1 -1
  152. data/man/bundle-clean.1.txt +1 -1
  153. data/man/bundle-config.1 +35 -35
  154. data/man/bundle-config.1.txt +65 -66
  155. data/man/bundle-config.ronn +41 -39
  156. data/man/bundle-doctor.1 +1 -1
  157. data/man/bundle-doctor.1.txt +1 -1
  158. data/man/bundle-exec.1 +1 -1
  159. data/man/bundle-exec.1.txt +1 -1
  160. data/man/bundle-gem.1 +1 -1
  161. data/man/bundle-gem.1.txt +3 -3
  162. data/man/bundle-info.1 +1 -1
  163. data/man/bundle-info.1.txt +1 -1
  164. data/man/bundle-init.1 +1 -1
  165. data/man/bundle-init.1.txt +1 -1
  166. data/man/bundle-inject.1 +1 -1
  167. data/man/bundle-inject.1.txt +1 -1
  168. data/man/bundle-install.1 +8 -5
  169. data/man/bundle-install.1.txt +56 -51
  170. data/man/bundle-install.ronn +9 -4
  171. data/man/bundle-list.1 +1 -1
  172. data/man/bundle-list.1.txt +1 -1
  173. data/man/bundle-lock.1 +1 -1
  174. data/man/bundle-lock.1.txt +16 -16
  175. data/man/bundle-open.1 +1 -1
  176. data/man/bundle-open.1.txt +1 -1
  177. data/man/bundle-outdated.1 +1 -1
  178. data/man/bundle-outdated.1.txt +1 -1
  179. data/man/bundle-package.1 +1 -1
  180. data/man/bundle-package.1.txt +1 -1
  181. data/man/bundle-platform.1 +1 -1
  182. data/man/bundle-platform.1.txt +1 -1
  183. data/man/bundle-pristine.1 +1 -1
  184. data/man/bundle-pristine.1.txt +1 -1
  185. data/man/bundle-remove.1 +1 -1
  186. data/man/bundle-remove.1.txt +1 -1
  187. data/man/bundle-show.1 +1 -1
  188. data/man/bundle-show.1.txt +1 -1
  189. data/man/bundle-update.1 +4 -4
  190. data/man/bundle-update.1.txt +64 -65
  191. data/man/bundle-update.ronn +3 -3
  192. data/man/bundle-viz.1 +1 -1
  193. data/man/bundle-viz.1.txt +1 -1
  194. data/man/bundle.1 +2 -2
  195. data/man/bundle.1.txt +7 -7
  196. data/man/bundle.ronn +1 -1
  197. data/man/gemfile.5 +12 -15
  198. data/man/gemfile.5.ronn +9 -13
  199. data/man/gemfile.5.txt +103 -107
  200. metadata +11 -112
  201. data/exe/bundle_ruby +0 -60
  202. data/lib/bundler/cli/cache.rb +0 -36
  203. data/lib/bundler/compatibility_guard.rb +0 -13
  204. data/lib/bundler/ssl_certs/.document +0 -1
  205. data/lib/bundler/ssl_certs/certificate_manager.rb +0 -66
  206. data/lib/bundler/ssl_certs/index.rubygems.org/GlobalSignRootCA.pem +0 -21
  207. data/lib/bundler/ssl_certs/rubygems.global.ssl.fastly.net/DigiCertHighAssuranceEVRootCA.pem +0 -23
  208. data/lib/bundler/ssl_certs/rubygems.org/AddTrustExternalCARoot.pem +0 -25
  209. data/lib/bundler/vendor/net-http-persistent/lib/net/http/faster.rb +0 -27
  210. 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
- Portions copyright (c) 2010 Andre Arko
2
- Portions copyright (c) 2009 Engine Yard
1
+ The MIT License
3
2
 
4
- MIT License
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
- a copy of this software and associated documentation files (the
8
- "Software"), to deal in the Software without restriction, including
9
- without limitation the rights to use, copy, modify, merge, publish,
10
- distribute, sublicense, and/or sell copies of the Software, and to
11
- permit persons to whom the Software is furnished to do so, subject to
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
- included in all copies or substantial portions of the Software.
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
- EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
19
- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
20
- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
21
- LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
22
- OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
23
- WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
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
- [![Code Climate](https://img.shields.io/codeclimate/github/bundler/bundler.svg?style=flat)](https://codeclimate.com/github/bundler/bundler)
4
- [![Inline docs ](http://inch-ci.org/github/bundler/bundler.svg?style=flat)](http://inch-ci.org/github/bundler/bundler)
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
 
@@ -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. There's a guide to contributing to Bundler (both code and general help) over in [our documentation section](doc/README.md).
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
- 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.
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 projects 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
+ 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).
@@ -1,11 +1,10 @@
1
- # coding: utf-8
2
1
  # frozen_string_literal: true
3
2
 
4
3
  begin
5
- require File.expand_path("../lib/bundler/version", __FILE__)
4
+ require_relative "lib/bundler/version"
6
5
  rescue LoadError
7
6
  # for Ruby core repository
8
- require File.expand_path("../version", __FILE__)
7
+ require_relative "version"
9
8
  end
10
9
 
11
10
  Gem::Specification.new do |s|
@@ -32,28 +31,11 @@ Gem::Specification.new do |s|
32
31
  }
33
32
  end
34
33
 
35
- if s.version >= Gem::Version.new("2.a".dup)
36
- s.required_ruby_version = ">= 2.3.0"
37
- s.required_rubygems_version = ">= 2.5.0"
38
- else
39
- s.required_ruby_version = ">= 1.8.7"
40
- s.required_rubygems_version = ">= 1.3.6"
41
- end
42
-
43
- s.add_development_dependency "automatiek", "~> 0.1.0"
44
- s.add_development_dependency "mustache", "0.99.6"
45
- s.add_development_dependency "rake", "~> 12.0"
46
- s.add_development_dependency "rdiscount", "~> 2.2"
47
- s.add_development_dependency "ronn", "~> 0.7.3"
48
- s.add_development_dependency "rspec", "~> 3.6"
49
- s.add_development_dependency "rubocop", "= 0.50.0"
34
+ s.required_ruby_version = ">= 2.3.0"
35
+ s.required_rubygems_version = ">= 2.5.2"
50
36
 
51
- base_dir = File.dirname(__FILE__).gsub(%r{([^A-Za-z0-9_\-.,:\/@\n])}, "\\\\\\1")
52
- s.files = IO.popen("git -C #{base_dir} ls-files -z", &:read).split("\x0").select {|f| f.match(%r{^(lib|exe)/}) }
37
+ s.files = Dir.glob("{lib,man,exe}/**/*", File::FNM_DOTMATCH).reject {|f| File.directory?(f) }
53
38
 
54
- # we don't check in man pages, but we need to ship them because
55
- # we use them to generate the long-form help for each command.
56
- s.files += Dir.glob("man/**/*")
57
39
  # Include the CHANGELOG.md, LICENSE.md, README.md manually
58
40
  s.files += %w[CHANGELOG.md LICENSE.md README.md]
59
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
- require "bundler"
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
- require "bundler/friendly_errors"
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
- require "bundler/cli"
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]
@@ -1,21 +1,18 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require "bundler/compatibility_guard"
4
-
5
- require "bundler/vendored_fileutils"
3
+ require_relative "bundler/vendored_fileutils"
6
4
  require "pathname"
7
5
  require "rbconfig"
8
- require "thread"
9
-
10
- require "bundler/errors"
11
- require "bundler/environment_preserver"
12
- require "bundler/plugin"
13
- require "bundler/rubygems_ext"
14
- require "bundler/rubygems_integration"
15
- require "bundler/version"
16
- require "bundler/constants"
17
- require "bundler/current_ruby"
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
@@ -119,7 +116,7 @@ module Bundler
119
116
  end
120
117
 
121
118
  def environment
122
- SharedHelpers.major_deprecation 3, "Bundler.environment has been removed in favor of Bundler.load"
119
+ SharedHelpers.major_deprecation 2, "Bundler.environment has been removed in favor of Bundler.load"
123
120
  load
124
121
  end
125
122
 
@@ -153,7 +150,7 @@ module Bundler
153
150
  end
154
151
 
155
152
  def ruby_scope
156
- "#{Bundler.rubygems.ruby_engine}/#{Bundler.rubygems.config_map[:ruby_version]}"
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 http://ruby-doc.org/stdlib-2.1.2/libdoc/fileutils/rdoc/FileUtils.html#method-c-remove_entry_secure for details.
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 `original_env` instead
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(3, "`Bundler.clean_env` has weird edge cases, use `.original_env` instead")
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
- with_env(clean_env) { yield }
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
- with_clean_env { Kernel.system(*args) }
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
- with_clean_env { Kernel.exec(*args) }
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
 
@@ -509,7 +562,7 @@ EOF
509
562
  private
510
563
 
511
564
  def eval_yaml_gemspec(path, contents)
512
- Kernel.send(:require, "bundler/psyched_yaml")
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) && RUBY_VERSION >= "1.9"
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
 
@@ -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 = "2019-06-13".freeze
8
- @git_commit_sha = "496bca538".freeze
7
+ @built_at = "2019-08-28".freeze
8
+ @git_commit_sha = "35781bbdb".freeze
9
9
  @release = true
10
10
  # end ivars
11
11
 
@@ -25,7 +25,7 @@ module Bundler
25
25
 
26
26
  # The SHA for the git commit the bundler gem was built from.
27
27
  def self.git_commit_sha
28
- return @git_commit_sha if @git_commit_sha
28
+ return @git_commit_sha if instance_variable_defined? :@git_commit_sha
29
29
 
30
30
  # If Bundler has been installed without its .git directory and without a
31
31
  # commit instance variable then we can't determine its commits SHA.