bundler 2.1.4 → 2.2.17

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 (225) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +1774 -1430
  3. data/README.md +6 -8
  4. data/bundler.gemspec +4 -4
  5. data/exe/bundle +3 -0
  6. data/lib/bundler.rb +33 -9
  7. data/lib/bundler/build_metadata.rb +3 -11
  8. data/lib/bundler/cli.rb +59 -23
  9. data/lib/bundler/cli/add.rb +1 -1
  10. data/lib/bundler/cli/binstubs.rb +6 -2
  11. data/lib/bundler/cli/cache.rb +2 -7
  12. data/lib/bundler/cli/clean.rb +1 -1
  13. data/lib/bundler/cli/common.rb +29 -2
  14. data/lib/bundler/cli/console.rb +1 -1
  15. data/lib/bundler/cli/doctor.rb +1 -1
  16. data/lib/bundler/cli/exec.rb +4 -4
  17. data/lib/bundler/cli/fund.rb +36 -0
  18. data/lib/bundler/cli/gem.rb +129 -28
  19. data/lib/bundler/cli/info.rb +15 -4
  20. data/lib/bundler/cli/init.rb +2 -2
  21. data/lib/bundler/cli/inject.rb +1 -1
  22. data/lib/bundler/cli/install.rb +13 -11
  23. data/lib/bundler/cli/issue.rb +2 -2
  24. data/lib/bundler/cli/list.rb +12 -10
  25. data/lib/bundler/cli/outdated.rb +88 -67
  26. data/lib/bundler/cli/plugin.rb +10 -0
  27. data/lib/bundler/cli/pristine.rb +5 -0
  28. data/lib/bundler/cli/show.rb +1 -1
  29. data/lib/bundler/cli/update.rb +3 -1
  30. data/lib/bundler/compact_index_client.rb +1 -1
  31. data/lib/bundler/compact_index_client/cache.rb +6 -14
  32. data/lib/bundler/compact_index_client/gem_parser.rb +28 -0
  33. data/lib/bundler/compact_index_client/updater.rb +13 -17
  34. data/lib/bundler/current_ruby.rb +1 -0
  35. data/lib/bundler/definition.rb +121 -131
  36. data/lib/bundler/dep_proxy.rb +16 -9
  37. data/lib/bundler/dependency.rb +3 -10
  38. data/lib/bundler/dsl.rb +40 -33
  39. data/lib/bundler/endpoint_specification.rb +1 -1
  40. data/lib/bundler/env.rb +1 -1
  41. data/lib/bundler/environment_preserver.rb +26 -2
  42. data/lib/bundler/errors.rb +1 -0
  43. data/lib/bundler/feature_flag.rb +0 -5
  44. data/lib/bundler/fetcher.rb +5 -4
  45. data/lib/bundler/fetcher/base.rb +1 -1
  46. data/lib/bundler/fetcher/compact_index.rb +1 -1
  47. data/lib/bundler/fetcher/downloader.rb +9 -5
  48. data/lib/bundler/fetcher/index.rb +3 -4
  49. data/lib/bundler/friendly_errors.rb +22 -13
  50. data/lib/bundler/gem_helper.rb +51 -18
  51. data/lib/bundler/gem_helpers.rb +36 -25
  52. data/lib/bundler/gem_version_promoter.rb +4 -4
  53. data/lib/bundler/graph.rb +1 -1
  54. data/lib/bundler/index.rb +12 -7
  55. data/lib/bundler/injector.rb +23 -5
  56. data/lib/bundler/inline.rb +3 -2
  57. data/lib/bundler/installer.rb +37 -49
  58. data/lib/bundler/installer/gem_installer.rb +3 -3
  59. data/lib/bundler/installer/parallel_installer.rb +46 -25
  60. data/lib/bundler/installer/standalone.rb +17 -2
  61. data/lib/bundler/lazy_specification.rb +45 -25
  62. data/lib/bundler/lockfile_generator.rb +1 -1
  63. data/lib/bundler/lockfile_parser.rb +4 -14
  64. data/lib/bundler/man/.document +1 -0
  65. data/{man → lib/bundler/man}/bundle-add.1 +1 -1
  66. data/{man/bundle-add.ronn → lib/bundler/man/bundle-add.1.ronn} +0 -0
  67. data/{man → lib/bundler/man}/bundle-binstubs.1 +5 -3
  68. data/{man/bundle-binstubs.ronn → lib/bundler/man/bundle-binstubs.1.ronn} +2 -4
  69. data/{man → lib/bundler/man}/bundle-cache.1 +1 -1
  70. data/{man/bundle-cache.ronn → lib/bundler/man/bundle-cache.1.ronn} +0 -0
  71. data/{man → lib/bundler/man}/bundle-check.1 +1 -1
  72. data/{man/bundle-check.ronn → lib/bundler/man/bundle-check.1.ronn} +0 -0
  73. data/{man → lib/bundler/man}/bundle-clean.1 +1 -1
  74. data/{man/bundle-clean.ronn → lib/bundler/man/bundle-clean.1.ronn} +0 -0
  75. data/{man → lib/bundler/man}/bundle-config.1 +42 -34
  76. data/{man/bundle-config.ronn → lib/bundler/man/bundle-config.1.ronn} +51 -43
  77. data/{man → lib/bundler/man}/bundle-doctor.1 +1 -1
  78. data/{man/bundle-doctor.ronn → lib/bundler/man/bundle-doctor.1.ronn} +0 -0
  79. data/{man → lib/bundler/man}/bundle-exec.1 +1 -1
  80. data/{man/bundle-exec.ronn → lib/bundler/man/bundle-exec.1.ronn} +0 -0
  81. data/{man → lib/bundler/man}/bundle-gem.1 +25 -3
  82. data/{man/bundle-gem.ronn → lib/bundler/man/bundle-gem.1.ronn} +30 -7
  83. data/{man → lib/bundler/man}/bundle-info.1 +1 -1
  84. data/{man/bundle-info.ronn → lib/bundler/man/bundle-info.1.ronn} +0 -0
  85. data/{man → lib/bundler/man}/bundle-init.1 +1 -1
  86. data/{man/bundle-init.ronn → lib/bundler/man/bundle-init.1.ronn} +0 -0
  87. data/{man → lib/bundler/man}/bundle-inject.1 +1 -1
  88. data/{man/bundle-inject.ronn → lib/bundler/man/bundle-inject.1.ronn} +0 -0
  89. data/{man → lib/bundler/man}/bundle-install.1 +30 -3
  90. data/{man/bundle-install.ronn → lib/bundler/man/bundle-install.1.ronn} +25 -3
  91. data/{man → lib/bundler/man}/bundle-list.1 +7 -7
  92. data/{man/bundle-list.ronn → lib/bundler/man/bundle-list.1.ronn} +6 -6
  93. data/{man → lib/bundler/man}/bundle-lock.1 +1 -1
  94. data/{man/bundle-lock.ronn → lib/bundler/man/bundle-lock.1.ronn} +0 -0
  95. data/{man → lib/bundler/man}/bundle-open.1 +1 -1
  96. data/{man/bundle-open.ronn → lib/bundler/man/bundle-open.1.ronn} +0 -0
  97. data/{man → lib/bundler/man}/bundle-outdated.1 +1 -1
  98. data/{man/bundle-outdated.ronn → lib/bundler/man/bundle-outdated.1.ronn} +0 -0
  99. data/{man → lib/bundler/man}/bundle-platform.1 +1 -1
  100. data/{man/bundle-platform.ronn → lib/bundler/man/bundle-platform.1.ronn} +0 -0
  101. data/{man → lib/bundler/man}/bundle-pristine.1 +1 -1
  102. data/{man/bundle-pristine.ronn → lib/bundler/man/bundle-pristine.1.ronn} +0 -0
  103. data/{man → lib/bundler/man}/bundle-remove.1 +1 -1
  104. data/{man/bundle-remove.ronn → lib/bundler/man/bundle-remove.1.ronn} +0 -0
  105. data/{man → lib/bundler/man}/bundle-show.1 +1 -1
  106. data/{man/bundle-show.ronn → lib/bundler/man/bundle-show.1.ronn} +0 -0
  107. data/{man → lib/bundler/man}/bundle-update.1 +1 -1
  108. data/{man/bundle-update.ronn → lib/bundler/man/bundle-update.1.ronn} +0 -0
  109. data/{man → lib/bundler/man}/bundle-viz.1 +1 -1
  110. data/{man/bundle-viz.ronn → lib/bundler/man/bundle-viz.1.ronn} +0 -0
  111. data/{man → lib/bundler/man}/bundle.1 +1 -1
  112. data/{man/bundle.ronn → lib/bundler/man/bundle.1.ronn} +0 -0
  113. data/{man → lib/bundler/man}/gemfile.5 +4 -4
  114. data/{man → lib/bundler/man}/gemfile.5.ronn +4 -4
  115. data/{man → lib/bundler/man}/index.txt +0 -0
  116. data/lib/bundler/mirror.rb +2 -2
  117. data/lib/bundler/plugin.rb +33 -7
  118. data/lib/bundler/plugin/api/source.rb +8 -1
  119. data/lib/bundler/plugin/dsl.rb +1 -1
  120. data/lib/bundler/plugin/index.rb +10 -1
  121. data/lib/bundler/plugin/installer.rb +9 -11
  122. data/lib/bundler/plugin/installer/rubygems.rb +1 -1
  123. data/lib/bundler/plugin/source_list.rb +5 -1
  124. data/lib/bundler/psyched_yaml.rb +0 -15
  125. data/lib/bundler/remote_specification.rb +5 -2
  126. data/lib/bundler/resolver.rb +133 -77
  127. data/lib/bundler/resolver/spec_group.rb +75 -48
  128. data/lib/bundler/retry.rb +2 -2
  129. data/lib/bundler/ruby_version.rb +1 -1
  130. data/lib/bundler/rubygems_ext.rb +69 -9
  131. data/lib/bundler/rubygems_gem_installer.rb +50 -9
  132. data/lib/bundler/rubygems_integration.rb +25 -60
  133. data/lib/bundler/runtime.rb +4 -14
  134. data/lib/bundler/settings.rb +107 -54
  135. data/lib/bundler/shared_helpers.rb +3 -3
  136. data/lib/bundler/similarity_detector.rb +1 -1
  137. data/lib/bundler/source.rb +7 -1
  138. data/lib/bundler/source/git.rb +24 -22
  139. data/lib/bundler/source/git/git_proxy.rb +82 -80
  140. data/lib/bundler/source/metadata.rb +0 -4
  141. data/lib/bundler/source/path.rb +10 -4
  142. data/lib/bundler/source/path/installer.rb +10 -10
  143. data/lib/bundler/source/rubygems.rb +45 -24
  144. data/lib/bundler/source/rubygems/remote.rb +1 -1
  145. data/lib/bundler/source_list.rb +31 -26
  146. data/lib/bundler/spec_set.rb +29 -17
  147. data/lib/bundler/stub_specification.rb +25 -7
  148. data/lib/bundler/templates/Gemfile +1 -1
  149. data/lib/bundler/templates/gems.rb +1 -1
  150. data/lib/bundler/templates/newgem/CHANGELOG.md.tt +5 -0
  151. data/lib/bundler/templates/newgem/CODE_OF_CONDUCT.md.tt +57 -47
  152. data/lib/bundler/templates/newgem/Gemfile.tt +9 -1
  153. data/lib/bundler/templates/newgem/README.md.tt +6 -5
  154. data/lib/bundler/templates/newgem/Rakefile.tt +19 -5
  155. data/lib/bundler/templates/newgem/bin/console.tt +1 -0
  156. data/lib/bundler/templates/newgem/circleci/config.yml.tt +13 -0
  157. data/lib/bundler/templates/newgem/ext/newgem/extconf.rb.tt +2 -0
  158. data/lib/bundler/templates/newgem/github/workflows/main.yml.tt +16 -0
  159. data/lib/bundler/templates/newgem/gitlab-ci.yml.tt +9 -0
  160. data/lib/bundler/templates/newgem/lib/newgem.rb.tt +4 -2
  161. data/lib/bundler/templates/newgem/lib/newgem/version.rb.tt +2 -0
  162. data/lib/bundler/templates/newgem/newgem.gemspec.tt +15 -7
  163. data/lib/bundler/templates/newgem/rubocop.yml.tt +13 -0
  164. data/lib/bundler/templates/newgem/spec/newgem_spec.rb.tt +2 -0
  165. data/lib/bundler/templates/newgem/spec/spec_helper.rb.tt +2 -1
  166. data/lib/bundler/templates/newgem/test/{newgem_test.rb.tt → minitest/newgem_test.rb.tt} +2 -0
  167. data/lib/bundler/templates/newgem/test/{test_helper.rb.tt → minitest/test_helper.rb.tt} +2 -0
  168. data/lib/bundler/templates/newgem/test/test-unit/newgem_test.rb.tt +15 -0
  169. data/lib/bundler/templates/newgem/test/test-unit/test_helper.rb.tt +6 -0
  170. data/lib/bundler/ui/shell.rb +5 -5
  171. data/lib/bundler/uri_credentials_filter.rb +3 -1
  172. data/lib/bundler/vendor/molinillo/lib/molinillo.rb +0 -1
  173. data/lib/bundler/vendor/molinillo/lib/molinillo/delegates/specification_provider.rb +7 -0
  174. data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph.rb +34 -2
  175. data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/tag.rb +2 -2
  176. data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/vertex.rb +11 -5
  177. data/lib/bundler/vendor/molinillo/lib/molinillo/errors.rb +3 -3
  178. data/lib/bundler/vendor/molinillo/lib/molinillo/gem_metadata.rb +1 -1
  179. data/lib/bundler/vendor/molinillo/lib/molinillo/modules/specification_provider.rb +12 -1
  180. data/lib/bundler/vendor/molinillo/lib/molinillo/resolution.rb +49 -47
  181. data/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb +82 -189
  182. data/lib/bundler/vendor/thor/lib/thor.rb +5 -13
  183. data/lib/bundler/vendor/thor/lib/thor/actions.rb +1 -1
  184. data/lib/bundler/vendor/thor/lib/thor/actions/create_link.rb +2 -1
  185. data/lib/bundler/vendor/thor/lib/thor/actions/file_manipulation.rb +4 -2
  186. data/lib/bundler/vendor/thor/lib/thor/base.rb +9 -0
  187. data/lib/bundler/vendor/thor/lib/thor/error.rb +1 -1
  188. data/lib/bundler/vendor/thor/lib/thor/parser/arguments.rb +5 -1
  189. data/lib/bundler/vendor/thor/lib/thor/parser/options.rb +9 -8
  190. data/lib/bundler/vendor/thor/lib/thor/shell/basic.rb +5 -2
  191. data/lib/bundler/vendor/thor/lib/thor/shell/color.rb +5 -1
  192. data/lib/bundler/vendor/thor/lib/thor/version.rb +1 -1
  193. data/lib/bundler/vendor/tmpdir/lib/tmpdir.rb +154 -0
  194. data/lib/bundler/vendored_persistent.rb +0 -7
  195. data/lib/bundler/vendored_tmpdir.rb +4 -0
  196. data/lib/bundler/version.rb +1 -1
  197. data/lib/bundler/worker.rb +1 -1
  198. data/lib/bundler/yaml_serializer.rb +1 -1
  199. metadata +71 -85
  200. data/lib/bundler/vendor/molinillo/lib/molinillo/compatibility.rb +0 -26
  201. data/man/bundle-add.1.txt +0 -58
  202. data/man/bundle-binstubs.1.txt +0 -48
  203. data/man/bundle-cache.1.txt +0 -78
  204. data/man/bundle-check.1.txt +0 -33
  205. data/man/bundle-clean.1.txt +0 -26
  206. data/man/bundle-config.1.txt +0 -528
  207. data/man/bundle-doctor.1.txt +0 -44
  208. data/man/bundle-exec.1.txt +0 -178
  209. data/man/bundle-gem.1.txt +0 -91
  210. data/man/bundle-info.1.txt +0 -21
  211. data/man/bundle-init.1.txt +0 -34
  212. data/man/bundle-inject.1.txt +0 -32
  213. data/man/bundle-install.1.txt +0 -401
  214. data/man/bundle-list.1.txt +0 -43
  215. data/man/bundle-lock.1.txt +0 -93
  216. data/man/bundle-open.1.txt +0 -29
  217. data/man/bundle-outdated.1.txt +0 -131
  218. data/man/bundle-platform.1.txt +0 -57
  219. data/man/bundle-pristine.1.txt +0 -44
  220. data/man/bundle-remove.1.txt +0 -34
  221. data/man/bundle-show.1.txt +0 -27
  222. data/man/bundle-update.1.txt +0 -390
  223. data/man/bundle-viz.1.txt +0 -39
  224. data/man/bundle.1.txt +0 -116
  225. data/man/gemfile.5.txt +0 -649
data/README.md CHANGED
@@ -1,7 +1,5 @@
1
- [![Version ](https://img.shields.io/gem/v/bundler.svg?style=flat)](https://rubygems.org/gems/bundler)
2
- [![Build Status](https://img.shields.io/travis/bundler/bundler/master.svg?style=flat)](https://travis-ci.org/bundler/bundler)
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)
1
+ [![Version ](https://img.shields.io/gem/v/bundler.svg?style=flat)](https://rubygems.org/gems/bundler)
2
+ [![Slack ](https://bundler-slackin.herokuapp.com/badge.svg)](https://bundler-slackin.herokuapp.com)
5
3
 
6
4
  # Bundler: a gem to bundle gems
7
5
 
@@ -44,9 +42,9 @@ To get in touch with the Bundler core team and other Bundler users, please see [
44
42
 
45
43
  ### Contributing
46
44
 
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.
45
+ 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/rubygems/rubygems/blob/master/bundler/doc/contributing/README.md) with all of the information you need to get started.
48
46
 
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.
47
+ If you'd like to request a substantial change to Bundler or its documentation, refer to the [Bundler RFC process](https://github.com/bundler/rfcs) for more information.
50
48
 
51
49
  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.
52
50
 
@@ -57,8 +55,8 @@ While some Bundler contributors are compensated by Ruby Together, the project ma
57
55
 
58
56
  ### Code of Conduct
59
57
 
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).
58
+ 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/rubygems/rubygems/blob/master/CODE_OF_CONDUCT.md).
61
59
 
62
60
  ### License
63
61
 
64
- Bundler is available under an [MIT License](https://github.com/bundler/bundler/blob/master/LICENSE.md).
62
+ Bundler is available under an [MIT License](https://github.com/rubygems/rubygems/blob/master/bundler/LICENSE.md).
data/bundler.gemspec CHANGED
@@ -24,17 +24,17 @@ Gem::Specification.new do |s|
24
24
 
25
25
  if s.respond_to?(:metadata=)
26
26
  s.metadata = {
27
- "bug_tracker_uri" => "https://github.com/bundler/bundler/issues",
28
- "changelog_uri" => "https://github.com/bundler/bundler/blob/master/CHANGELOG.md",
27
+ "bug_tracker_uri" => "https://github.com/rubygems/rubygems/issues?q=is%3Aopen+is%3Aissue+label%3ABundler",
28
+ "changelog_uri" => "https://github.com/rubygems/rubygems/blob/master/bundler/CHANGELOG.md",
29
29
  "homepage_uri" => "https://bundler.io/",
30
- "source_code_uri" => "https://github.com/bundler/bundler/",
30
+ "source_code_uri" => "https://github.com/rubygems/rubygems/",
31
31
  }
32
32
  end
33
33
 
34
34
  s.required_ruby_version = ">= 2.3.0"
35
35
  s.required_rubygems_version = ">= 2.5.2"
36
36
 
37
- s.files = Dir.glob("{lib,man,exe}/**/*", File::FNM_DOTMATCH).reject {|f| File.directory?(f) }
37
+ s.files = Dir.glob("{lib,exe}/**/*", File::FNM_DOTMATCH).reject {|f| File.directory?(f) }
38
38
 
39
39
  # Include the CHANGELOG.md, LICENSE.md, README.md manually
40
40
  s.files += %w[CHANGELOG.md LICENSE.md README.md]
data/exe/bundle CHANGED
@@ -15,6 +15,9 @@ else
15
15
  require "bundler"
16
16
  end
17
17
 
18
+ # Workaround for non-activated bundler spec due to missing https://github.com/rubygems/rubygems/commit/4e306d7bcdee924b8d80ca9db6125aa59ee4e5a3
19
+ gem "bundler", Bundler::VERSION if Gem.rubygems_version < Gem::Version.new("2.6.2")
20
+
18
21
  # Check if an older version of bundler is installed
19
22
  $LOAD_PATH.each do |path|
20
23
  next unless path =~ %r{/bundler-0\.(\d+)} && $1.to_i < 9
data/lib/bundler.rb CHANGED
@@ -34,9 +34,9 @@ require_relative "bundler/build_metadata"
34
34
  # of loaded and required modules.
35
35
  #
36
36
  module Bundler
37
- environment_preserver = EnvironmentPreserver.new(ENV, EnvironmentPreserver::BUNDLER_KEYS)
37
+ environment_preserver = EnvironmentPreserver.from_env
38
38
  ORIGINAL_ENV = environment_preserver.restore
39
- ENV.replace(environment_preserver.backup)
39
+ environment_preserver.replace_with_backup
40
40
  SUDO_MUTEX = Mutex.new
41
41
 
42
42
  autoload :Definition, File.expand_path("bundler/definition", __dir__)
@@ -63,7 +63,6 @@ module Bundler
63
63
  autoload :Resolver, File.expand_path("bundler/resolver", __dir__)
64
64
  autoload :Retry, File.expand_path("bundler/retry", __dir__)
65
65
  autoload :RubyDsl, File.expand_path("bundler/ruby_dsl", __dir__)
66
- autoload :RubyGemsGemInstaller, File.expand_path("bundler/rubygems_gem_installer", __dir__)
67
66
  autoload :RubyVersion, File.expand_path("bundler/ruby_version", __dir__)
68
67
  autoload :Runtime, File.expand_path("bundler/runtime", __dir__)
69
68
  autoload :Settings, File.expand_path("bundler/settings", __dir__)
@@ -212,6 +211,12 @@ module Bundler
212
211
  end
213
212
  end
214
213
 
214
+ def most_specific_locked_platform?(platform)
215
+ return false unless defined?(@definition) && @definition
216
+
217
+ definition.most_specific_locked_platform == platform
218
+ end
219
+
215
220
  def ruby_scope
216
221
  "#{Bundler.rubygems.ruby_engine}/#{RbConfig::CONFIG["ruby_version"]}"
217
222
  end
@@ -285,7 +290,13 @@ module Bundler
285
290
 
286
291
  def app_config_path
287
292
  if app_config = ENV["BUNDLE_APP_CONFIG"]
288
- Pathname.new(app_config).expand_path(root)
293
+ app_config_pathname = Pathname.new(app_config)
294
+
295
+ if app_config_pathname.absolute?
296
+ app_config_pathname
297
+ else
298
+ app_config_pathname.expand_path(root)
299
+ end
289
300
  else
290
301
  root.join(".bundle")
291
302
  end
@@ -347,7 +358,10 @@ EOF
347
358
  env.delete_if {|k, _| k[0, 7] == "BUNDLE_" }
348
359
 
349
360
  if env.key?("RUBYOPT")
350
- env["RUBYOPT"] = env["RUBYOPT"].sub "-rbundler/setup", ""
361
+ rubyopt = env["RUBYOPT"].split(" ")
362
+ rubyopt.delete("-r#{File.expand_path("bundler/setup", __dir__)}")
363
+ rubyopt.delete("-rbundler/setup")
364
+ env["RUBYOPT"] = rubyopt.join(" ")
351
365
  end
352
366
 
353
367
  if env.key?("RUBYLIB")
@@ -426,7 +440,7 @@ EOF
426
440
  end
427
441
 
428
442
  def local_platform
429
- return Gem::Platform::RUBY if settings[:force_ruby_platform]
443
+ return Gem::Platform::RUBY if settings[:force_ruby_platform] || Gem.platforms == [Gem::Platform::RUBY]
430
444
  Gem::Platform.local
431
445
  end
432
446
 
@@ -447,10 +461,14 @@ EOF
447
461
  # system binaries. If you put '-n foo' in your .gemrc, RubyGems will
448
462
  # install binstubs there instead. Unfortunately, RubyGems doesn't expose
449
463
  # that directory at all, so rather than parse .gemrc ourselves, we allow
450
- # the directory to be set as well, via `bundle config set bindir foo`.
464
+ # the directory to be set as well, via `bundle config set --local bindir foo`.
451
465
  Bundler.settings[:system_bindir] || Bundler.rubygems.gem_bindir
452
466
  end
453
467
 
468
+ def preferred_gemfile_name
469
+ Bundler.settings[:init_gems_rb] ? "gems.rb" : "Gemfile"
470
+ end
471
+
454
472
  def use_system_gems?
455
473
  configured_bundle_path.use_system_gems?
456
474
  end
@@ -512,7 +530,8 @@ EOF
512
530
  Your user account isn't allowed to install to the system RubyGems.
513
531
  You can cancel this installation and run:
514
532
 
515
- bundle install --path vendor/bundle
533
+ bundle config set --local path 'vendor/bundle'
534
+ bundle install
516
535
 
517
536
  to install the gems into ./vendor/bundle/, or you can enter your password
518
537
  and install the bundled gems to RubyGems using sudo.
@@ -588,6 +607,11 @@ EOF
588
607
  reset_rubygems!
589
608
  end
590
609
 
610
+ def reset_settings_and_root!
611
+ @settings = nil
612
+ @root = nil
613
+ end
614
+
591
615
  def reset_paths!
592
616
  @bin_path = nil
593
617
  @bundler_major_version = nil
@@ -610,7 +634,7 @@ EOF
610
634
  @rubygems = nil
611
635
  end
612
636
 
613
- private
637
+ private
614
638
 
615
639
  def eval_yaml_gemspec(path, contents)
616
640
  require_relative "bundler/psyched_yaml"
@@ -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 = "2020-01-05".freeze
8
- @git_commit_sha = "32a4159325".freeze
7
+ @built_at = "2021-05-05".freeze
8
+ @git_commit_sha = "69cbd6e10e".freeze
9
9
  @release = true
10
10
  # end ivars
11
11
 
@@ -29,19 +29,11 @@ module Bundler
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.
32
- git_dir = File.join(File.expand_path("../../..", __FILE__), ".git")
32
+ git_dir = File.join(File.expand_path("../../../..", __FILE__), ".git")
33
33
  if File.directory?(git_dir)
34
34
  return @git_commit_sha = Dir.chdir(git_dir) { `git rev-parse --short HEAD`.strip.freeze }
35
35
  end
36
36
 
37
- # If Bundler is a submodule in RubyGems, get the submodule commit
38
- git_sub_dir = File.join(File.expand_path("../../../..", __FILE__), ".git")
39
- if File.directory?(git_sub_dir)
40
- return @git_commit_sha = Dir.chdir(git_sub_dir) do
41
- `git ls-tree --abbrev=8 HEAD bundler`.split(/\s/).fetch(2, "").strip.freeze
42
- end
43
- end
44
-
45
37
  @git_commit_sha ||= "unknown"
46
38
  end
47
39
 
data/lib/bundler/cli.rb CHANGED
@@ -57,7 +57,7 @@ module Bundler
57
57
  custom_gemfile = options[:gemfile] || Bundler.settings[:gemfile]
58
58
  if custom_gemfile && !custom_gemfile.empty?
59
59
  Bundler::SharedHelpers.set_env "BUNDLE_GEMFILE", File.expand_path(custom_gemfile)
60
- Bundler.reset_paths!
60
+ Bundler.reset_settings_and_root!
61
61
  end
62
62
 
63
63
  Bundler.settings.set_command_option_if_given :retry, options[:retry]
@@ -122,16 +122,17 @@ module Bundler
122
122
  else command = "bundle-#{cli}"
123
123
  end
124
124
 
125
- man_path = File.expand_path("../../../man", __FILE__)
126
- man_pages = Hash[Dir.glob(File.join(man_path, "*")).grep(/.*\.\d*\Z/).collect do |f|
125
+ man_path = File.expand_path("man", __dir__)
126
+ man_pages = Hash[Dir.glob(File.join(man_path, "**", "*")).grep(/.*\.\d*\Z/).collect do |f|
127
127
  [File.basename(f, ".*"), f]
128
128
  end]
129
129
 
130
130
  if man_pages.include?(command)
131
+ man_page = man_pages[command]
131
132
  if Bundler.which("man") && man_path !~ %r{^file:/.+!/META-INF/jruby.home/.+}
132
- Kernel.exec "man #{man_pages[command]}"
133
+ Kernel.exec "man #{man_page}"
133
134
  else
134
- puts File.read("#{man_path}/#{File.basename(man_pages[command])}.txt")
135
+ puts File.read("#{man_path}/#{File.basename(man_page)}.ronn")
135
136
  end
136
137
  elsif command_path = Bundler.which("bundler-#{cli}")
137
138
  Kernel.exec(command_path, "--help")
@@ -247,10 +248,12 @@ module Bundler
247
248
  def install
248
249
  SharedHelpers.major_deprecation(2, "The `--force` option has been renamed to `--redownload`") if ARGV.include?("--force")
249
250
 
250
- %w[clean deployment frozen no-cache no-prune path shebang system without with].each do |option|
251
+ %w[clean deployment frozen no-prune path shebang system without with].each do |option|
251
252
  remembered_flag_deprecation(option)
252
253
  end
253
254
 
255
+ remembered_negative_flag_deprecation("no-deployment")
256
+
254
257
  require_relative "cli/install"
255
258
  Bundler.settings.temporary(:no_install => false) do
256
259
  Install.new(options.dup).run
@@ -342,8 +345,8 @@ module Bundler
342
345
 
343
346
  desc "list", "List all gems in the bundle"
344
347
  method_option "name-only", :type => :boolean, :banner => "print only the gem names"
345
- method_option "only-group", :type => :string, :banner => "print gems from a particular group"
346
- method_option "without-group", :type => :string, :banner => "print all gems except from a group"
348
+ method_option "only-group", :type => :array, :default => [], :banner => "print gems from a given set of groups"
349
+ method_option "without-group", :type => :array, :default => [], :banner => "print all gems except from a given set of groups"
347
350
  method_option "paths", :type => :boolean, :banner => "print the path to each gem in the bundle"
348
351
  def list
349
352
  require_relative "cli/list"
@@ -375,6 +378,8 @@ module Bundler
375
378
  "Make binstubs that can work without the Bundler runtime"
376
379
  method_option "all", :type => :boolean, :banner =>
377
380
  "Install binstubs for all gems"
381
+ method_option "all-platforms", :type => :boolean, :default => false, :banner =>
382
+ "Install binstubs for all platforms"
378
383
  def binstubs(*gems)
379
384
  require_relative "cli/binstubs"
380
385
  Binstubs.new(options, gems).run
@@ -434,11 +439,18 @@ module Bundler
434
439
  Outdated.new(options, gems).run
435
440
  end
436
441
 
437
- desc "cache [OPTIONS]", "Locks and then caches all of the gems into vendor/cache"
438
- unless Bundler.feature_flag.cache_all?
439
- method_option "all", :type => :boolean,
440
- :banner => "Include all sources (including path and git)."
442
+ desc "fund [OPTIONS]", "Lists information about gems seeking funding assistance"
443
+ method_option "group", :aliases => "-g", :type => :array, :banner =>
444
+ "Fetch funding information for a specific group"
445
+ def fund
446
+ require_relative "cli/fund"
447
+ Fund.new(options).run
441
448
  end
449
+
450
+ desc "cache [OPTIONS]", "Locks and then caches all of the gems into vendor/cache"
451
+ method_option "all", :type => :boolean,
452
+ :default => Bundler.feature_flag.cache_all?,
453
+ :banner => "Include all sources (including path and git)."
442
454
  method_option "all-platforms", :type => :boolean, :banner => "Include gems for all platforms present in the lockfile, not only the current one"
443
455
  method_option "cache-path", :type => :string, :banner =>
444
456
  "Specify a different cache path than the default (vendor/cache)."
@@ -457,6 +469,12 @@ module Bundler
457
469
  bundle without having to download any additional gems.
458
470
  D
459
471
  def cache
472
+ SharedHelpers.major_deprecation 2,
473
+ "The `--all` flag is deprecated because it relies on being " \
474
+ "remembered across bundler invocations, which bundler will no longer " \
475
+ "do in future versions. Instead please use `bundle config set cache_all true`, " \
476
+ "and stop using this flag" if ARGV.include?("--all")
477
+
460
478
  require_relative "cli/cache"
461
479
  Cache.new(options).run
462
480
  end
@@ -486,8 +504,8 @@ module Bundler
486
504
  By default, setting a configuration value sets it for all projects
487
505
  on the machine.
488
506
 
489
- If a global setting is superceded by local configuration, this command
490
- will show the current value, as well as any superceded values and
507
+ If a global setting is superseded by local configuration, this command
508
+ will show the current value, as well as any superseded values and
491
509
  where they were specified.
492
510
  D
493
511
  require_relative "cli/config"
@@ -560,15 +578,21 @@ module Bundler
560
578
 
561
579
  desc "gem NAME [OPTIONS]", "Creates a skeleton for creating a rubygem"
562
580
  method_option :exe, :type => :boolean, :default => false, :aliases => ["--bin", "-b"], :desc => "Generate a binary executable for your library."
563
- method_option :coc, :type => :boolean, :desc => "Generate a code of conduct file. Set a default with `bundle config set gem.coc true`."
581
+ method_option :coc, :type => :boolean, :desc => "Generate a code of conduct file. Set a default with `bundle config set --global gem.coc true`."
564
582
  method_option :edit, :type => :string, :aliases => "-e", :required => false, :banner => "EDITOR",
565
583
  :lazy_default => [ENV["BUNDLER_EDITOR"], ENV["VISUAL"], ENV["EDITOR"]].find {|e| !e.nil? && !e.empty? },
566
584
  :desc => "Open generated gemspec in the specified editor (defaults to $EDITOR or $BUNDLER_EDITOR)"
567
585
  method_option :ext, :type => :boolean, :default => false, :desc => "Generate the boilerplate for C extension code"
568
586
  method_option :git, :type => :boolean, :default => true, :desc => "Initialize a git repo inside your library."
569
- method_option :mit, :type => :boolean, :desc => "Generate an MIT license file. Set a default with `bundle config set gem.mit true`."
570
- method_option :test, :type => :string, :lazy_default => "rspec", :aliases => "-t", :banner => "rspec",
571
- :desc => "Generate a test directory for your library, either rspec or minitest. Set a default with `bundle config set gem.test rspec`."
587
+ method_option :mit, :type => :boolean, :desc => "Generate an MIT license file. Set a default with `bundle config set --global gem.mit true`."
588
+ method_option :rubocop, :type => :boolean, :desc => "Add rubocop to the generated Rakefile and gemspec. Set a default with `bundle config set --global gem.rubocop true`."
589
+ method_option :changelog, :type => :boolean, :desc => "Generate changelog file. Set a default with `bundle config set --global gem.changelog true`."
590
+ method_option :test, :type => :string, :lazy_default => Bundler.settings["gem.test"] || "", :aliases => "-t", :banner => "Use the specified test framework for your library",
591
+ :desc => "Generate a test directory for your library, either rspec, minitest or test-unit. Set a default with `bundle config set --global gem.test (rspec|minitest|test-unit)`."
592
+ method_option :ci, :type => :string, :lazy_default => Bundler.settings["gem.ci"] || "",
593
+ :desc => "Generate CI configuration, either GitHub Actions, Travis CI, GitLab CI or CircleCI. Set a default with `bundle config set --global gem.ci (github|travis|gitlab|circle)`"
594
+ method_option :github_username, :type => :string, :default => Bundler.settings["gem.github_username"], :banner => "Set your username on GitHub", :desc => "Fill in GitHub username on README so that you don't have to do it manually. Set a default with `bundle config set --global gem.github_username <your_username>`."
595
+
572
596
  def gem(name)
573
597
  end
574
598
 
@@ -731,11 +755,11 @@ module Bundler
731
755
  end
732
756
  end
733
757
 
734
- private
758
+ private
735
759
 
736
760
  # Automatically invoke `bundle install` and resume if
737
761
  # Bundler.settings[:auto_install] exists. This is set through config cmd
738
- # `bundle config set auto_install 1`.
762
+ # `bundle config set --global auto_install 1`.
739
763
  #
740
764
  # Note that this method `nil`s out the global Definition object, so it
741
765
  # should be called first, before you instantiate anything like an
@@ -808,20 +832,32 @@ module Bundler
808
832
  nil
809
833
  end
810
834
 
835
+ def remembered_negative_flag_deprecation(name)
836
+ positive_name = name.gsub(/\Ano-/, "")
837
+ option = current_command.options[positive_name]
838
+ flag_name = "--no-" + option.switch_name.gsub(/\A--/, "")
839
+
840
+ flag_deprecation(positive_name, flag_name, option)
841
+ end
842
+
811
843
  def remembered_flag_deprecation(name)
812
844
  option = current_command.options[name]
813
845
  flag_name = option.switch_name
814
846
 
815
- name_index = ARGV.find {|arg| flag_name == arg }
847
+ flag_deprecation(name, flag_name, option)
848
+ end
849
+
850
+ def flag_deprecation(name, flag_name, option)
851
+ name_index = ARGV.find {|arg| flag_name == arg.split("=")[0] }
816
852
  return unless name_index
817
853
 
818
854
  value = options[name]
819
855
  value = value.join(" ").to_s if option.type == :array
820
856
 
821
- Bundler::SharedHelpers.major_deprecation 2,\
857
+ Bundler::SharedHelpers.major_deprecation 2,
822
858
  "The `#{flag_name}` flag is deprecated because it relies on being " \
823
859
  "remembered across bundler invocations, which bundler will no longer " \
824
- "do in future versions. Instead please use `bundle config set #{name} " \
860
+ "do in future versions. Instead please use `bundle config set --local #{name.tr("-", "_")} " \
825
861
  "'#{value}'`, and stop using this flag"
826
862
  end
827
863
  end
@@ -17,7 +17,7 @@ module Bundler
17
17
  perform_bundle_install unless options["skip-install"]
18
18
  end
19
19
 
20
- private
20
+ private
21
21
 
22
22
  def perform_bundle_install
23
23
  Installer.install(Bundler.root, Bundler.definition)
@@ -16,7 +16,11 @@ module Bundler
16
16
  Bundler.settings.set_command_option_if_given :shebang, options["shebang"]
17
17
  installer = Installer.new(Bundler.root, Bundler.definition)
18
18
 
19
- installer_opts = { :force => options[:force], :binstubs_cmd => true }
19
+ installer_opts = {
20
+ :force => options[:force],
21
+ :binstubs_cmd => true,
22
+ :all_platforms => options["all-platforms"],
23
+ }
20
24
 
21
25
  if options[:all]
22
26
  raise InvalidOption, "Cannot specify --all with specific gems" unless gems.empty?
@@ -38,7 +42,7 @@ module Bundler
38
42
  if options[:standalone]
39
43
  next Bundler.ui.warn("Sorry, Bundler can only be run via RubyGems.") if gem_name == "bundler"
40
44
  Bundler.settings.temporary(:path => (Bundler.settings[:path] || Bundler.root)) do
41
- installer.generate_standalone_bundler_executable_stubs(spec)
45
+ installer.generate_standalone_bundler_executable_stubs(spec, installer_opts)
42
46
  end
43
47
  else
44
48
  installer.generate_bundler_executable_stubs(spec, installer_opts)
@@ -24,12 +24,13 @@ module Bundler
24
24
  end
25
25
  end
26
26
 
27
- private
27
+ private
28
28
 
29
29
  def install
30
30
  require_relative "install"
31
31
  options = self.options.dup
32
32
  options["local"] = false if Bundler.settings[:cache_all_platforms]
33
+ options["no-cache"] = true
33
34
  Bundler::CLI::Install.new(options).run
34
35
  end
35
36
 
@@ -37,12 +38,6 @@ module Bundler
37
38
  all = options.fetch(:all, Bundler.feature_flag.cache_all? || nil)
38
39
 
39
40
  Bundler.settings.set_command_option_if_given :cache_all, all
40
-
41
- if Bundler.definition.has_local_dependencies? && !Bundler.feature_flag.cache_all?
42
- Bundler.ui.warn "Your Gemfile contains path and git dependencies. If you want " \
43
- "to cache them as well, please pass the --all flag. This will be the default " \
44
- "on Bundler 3.0."
45
- end
46
41
  end
47
42
  end
48
43
  end