bundler 2.1.1 → 2.2.0.rc.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.

Files changed (194) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +1543 -1418
  3. data/README.md +6 -8
  4. data/bundler.gemspec +3 -3
  5. data/exe/bundle +3 -0
  6. data/lib/bundler.rb +21 -7
  7. data/lib/bundler/build_metadata.rb +3 -11
  8. data/lib/bundler/cli.rb +54 -20
  9. data/lib/bundler/cli/add.rb +1 -1
  10. data/lib/bundler/cli/cache.rb +1 -7
  11. data/lib/bundler/cli/clean.rb +1 -1
  12. data/lib/bundler/cli/common.rb +14 -0
  13. data/lib/bundler/cli/console.rb +1 -1
  14. data/lib/bundler/cli/doctor.rb +1 -1
  15. data/lib/bundler/cli/exec.rb +1 -1
  16. data/lib/bundler/cli/fund.rb +36 -0
  17. data/lib/bundler/cli/gem.rb +84 -11
  18. data/lib/bundler/cli/info.rb +15 -4
  19. data/lib/bundler/cli/init.rb +2 -2
  20. data/lib/bundler/cli/inject.rb +1 -1
  21. data/lib/bundler/cli/install.rb +12 -18
  22. data/lib/bundler/cli/issue.rb +2 -2
  23. data/lib/bundler/cli/list.rb +12 -10
  24. data/lib/bundler/cli/outdated.rb +89 -66
  25. data/lib/bundler/cli/plugin.rb +10 -0
  26. data/lib/bundler/cli/pristine.rb +5 -0
  27. data/lib/bundler/cli/show.rb +1 -1
  28. data/lib/bundler/cli/update.rb +2 -0
  29. data/lib/bundler/compact_index_client.rb +1 -1
  30. data/lib/bundler/compact_index_client/cache.rb +1 -1
  31. data/lib/bundler/definition.rb +51 -60
  32. data/lib/bundler/dep_proxy.rb +1 -1
  33. data/lib/bundler/dependency.rb +0 -9
  34. data/lib/bundler/dsl.rb +5 -9
  35. data/lib/bundler/endpoint_specification.rb +1 -1
  36. data/lib/bundler/environment_preserver.rb +26 -2
  37. data/lib/bundler/errors.rb +1 -0
  38. data/lib/bundler/feature_flag.rb +0 -2
  39. data/lib/bundler/fetcher.rb +4 -3
  40. data/lib/bundler/fetcher/base.rb +1 -1
  41. data/lib/bundler/fetcher/compact_index.rb +1 -1
  42. data/lib/bundler/fetcher/downloader.rb +1 -1
  43. data/lib/bundler/fetcher/index.rb +1 -1
  44. data/lib/bundler/friendly_errors.rb +7 -13
  45. data/lib/bundler/gem_helper.rb +33 -19
  46. data/lib/bundler/gem_helpers.rb +6 -1
  47. data/lib/bundler/gem_version_promoter.rb +2 -2
  48. data/lib/bundler/graph.rb +1 -1
  49. data/lib/bundler/index.rb +1 -1
  50. data/lib/bundler/injector.rb +15 -4
  51. data/lib/bundler/inline.rb +2 -2
  52. data/lib/bundler/installer.rb +30 -29
  53. data/lib/bundler/installer/gem_installer.rb +3 -3
  54. data/lib/bundler/installer/parallel_installer.rb +10 -10
  55. data/lib/bundler/installer/standalone.rb +2 -2
  56. data/lib/bundler/lazy_specification.rb +19 -6
  57. data/lib/bundler/lockfile_generator.rb +1 -1
  58. data/lib/bundler/lockfile_parser.rb +1 -1
  59. data/lib/bundler/mirror.rb +2 -2
  60. data/lib/bundler/plugin.rb +30 -5
  61. data/lib/bundler/plugin/index.rb +10 -1
  62. data/lib/bundler/plugin/installer.rb +1 -1
  63. data/lib/bundler/plugin/installer/rubygems.rb +1 -1
  64. data/lib/bundler/plugin/source_list.rb +1 -1
  65. data/lib/bundler/psyched_yaml.rb +0 -15
  66. data/lib/bundler/remote_specification.rb +5 -2
  67. data/lib/bundler/resolver.rb +32 -9
  68. data/lib/bundler/resolver/spec_group.rb +27 -6
  69. data/lib/bundler/retry.rb +1 -1
  70. data/lib/bundler/ruby_version.rb +1 -1
  71. data/lib/bundler/rubygems_ext.rb +53 -9
  72. data/lib/bundler/rubygems_gem_installer.rb +3 -9
  73. data/lib/bundler/rubygems_integration.rb +23 -54
  74. data/lib/bundler/runtime.rb +4 -14
  75. data/lib/bundler/settings.rb +49 -45
  76. data/lib/bundler/shared_helpers.rb +2 -2
  77. data/lib/bundler/similarity_detector.rb +1 -1
  78. data/lib/bundler/source.rb +1 -1
  79. data/lib/bundler/source/git.rb +5 -5
  80. data/lib/bundler/source/git/git_proxy.rb +56 -59
  81. data/lib/bundler/source/path.rb +7 -3
  82. data/lib/bundler/source/path/installer.rb +8 -10
  83. data/lib/bundler/source/rubygems.rb +13 -16
  84. data/lib/bundler/source/rubygems/remote.rb +1 -1
  85. data/lib/bundler/source_list.rb +2 -2
  86. data/lib/bundler/spec_set.rb +1 -1
  87. data/lib/bundler/stub_specification.rb +17 -5
  88. data/lib/bundler/templates/newgem/CODE_OF_CONDUCT.md.tt +57 -47
  89. data/lib/bundler/templates/newgem/Gemfile.tt +9 -1
  90. data/lib/bundler/templates/newgem/README.md.tt +1 -1
  91. data/lib/bundler/templates/newgem/Rakefile.tt +19 -5
  92. data/lib/bundler/templates/newgem/bin/console.tt +1 -0
  93. data/lib/bundler/templates/newgem/circleci/config.yml.tt +13 -0
  94. data/lib/bundler/templates/newgem/ext/newgem/extconf.rb.tt +2 -0
  95. data/lib/bundler/templates/newgem/github/workflows/main.yml.tt +18 -0
  96. data/lib/bundler/templates/newgem/gitlab-ci.yml.tt +9 -0
  97. data/lib/bundler/templates/newgem/lib/newgem.rb.tt +2 -0
  98. data/lib/bundler/templates/newgem/lib/newgem/version.rb.tt +2 -0
  99. data/lib/bundler/templates/newgem/newgem.gemspec.tt +8 -6
  100. data/lib/bundler/templates/newgem/rubocop.yml.tt +10 -0
  101. data/lib/bundler/templates/newgem/spec/newgem_spec.rb.tt +2 -0
  102. data/lib/bundler/templates/newgem/spec/spec_helper.rb.tt +2 -1
  103. data/lib/bundler/templates/newgem/test/{newgem_test.rb.tt → minitest/newgem_test.rb.tt} +2 -0
  104. data/lib/bundler/templates/newgem/test/{test_helper.rb.tt → minitest/test_helper.rb.tt} +2 -0
  105. data/lib/bundler/templates/newgem/test/test-unit/newgem_test.rb.tt +15 -0
  106. data/lib/bundler/templates/newgem/test/test-unit/test_helper.rb.tt +6 -0
  107. data/lib/bundler/ui/shell.rb +5 -5
  108. data/lib/bundler/uri_credentials_filter.rb +1 -1
  109. data/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb +79 -212
  110. data/lib/bundler/vendor/thor/lib/thor.rb +0 -7
  111. data/lib/bundler/vendor/thor/lib/thor/actions/create_link.rb +2 -1
  112. data/lib/bundler/vendor/thor/lib/thor/base.rb +9 -0
  113. data/lib/bundler/vendor/thor/lib/thor/version.rb +1 -1
  114. data/lib/bundler/vendored_persistent.rb +0 -7
  115. data/lib/bundler/version.rb +1 -1
  116. data/lib/bundler/worker.rb +1 -1
  117. data/lib/bundler/yaml_serializer.rb +1 -1
  118. data/man/bundle-add.1 +1 -1
  119. data/man/{bundle-add.ronn → bundle-add.1.ronn} +0 -0
  120. data/man/bundle-binstubs.1 +5 -3
  121. data/man/{bundle-binstubs.ronn → bundle-binstubs.1.ronn} +2 -4
  122. data/man/bundle-cache.1 +1 -1
  123. data/man/{bundle-cache.ronn → bundle-cache.1.ronn} +0 -0
  124. data/man/bundle-check.1 +1 -1
  125. data/man/{bundle-check.ronn → bundle-check.1.ronn} +0 -0
  126. data/man/bundle-clean.1 +1 -1
  127. data/man/{bundle-clean.ronn → bundle-clean.1.ronn} +0 -0
  128. data/man/bundle-config.1 +16 -22
  129. data/man/{bundle-config.ronn → bundle-config.1.ronn} +19 -22
  130. data/man/bundle-doctor.1 +1 -1
  131. data/man/{bundle-doctor.ronn → bundle-doctor.1.ronn} +0 -0
  132. data/man/bundle-exec.1 +1 -1
  133. data/man/{bundle-exec.ronn → bundle-exec.1.ronn} +0 -0
  134. data/man/bundle-gem.1 +25 -3
  135. data/man/{bundle-gem.ronn → bundle-gem.1.ronn} +30 -7
  136. data/man/bundle-info.1 +1 -1
  137. data/man/{bundle-info.ronn → bundle-info.1.ronn} +0 -0
  138. data/man/bundle-init.1 +1 -1
  139. data/man/{bundle-init.ronn → bundle-init.1.ronn} +0 -0
  140. data/man/bundle-inject.1 +1 -1
  141. data/man/{bundle-inject.ronn → bundle-inject.1.ronn} +0 -0
  142. data/man/bundle-install.1 +29 -2
  143. data/man/{bundle-install.ronn → bundle-install.1.ronn} +24 -2
  144. data/man/bundle-list.1 +7 -7
  145. data/man/{bundle-list.ronn → bundle-list.1.ronn} +6 -6
  146. data/man/bundle-lock.1 +1 -1
  147. data/man/{bundle-lock.ronn → bundle-lock.1.ronn} +0 -0
  148. data/man/bundle-open.1 +1 -1
  149. data/man/{bundle-open.ronn → bundle-open.1.ronn} +0 -0
  150. data/man/bundle-outdated.1 +1 -1
  151. data/man/{bundle-outdated.ronn → bundle-outdated.1.ronn} +0 -0
  152. data/man/bundle-platform.1 +1 -1
  153. data/man/{bundle-platform.ronn → bundle-platform.1.ronn} +0 -0
  154. data/man/bundle-pristine.1 +1 -1
  155. data/man/{bundle-pristine.ronn → bundle-pristine.1.ronn} +0 -0
  156. data/man/bundle-remove.1 +1 -1
  157. data/man/{bundle-remove.ronn → bundle-remove.1.ronn} +0 -0
  158. data/man/bundle-show.1 +1 -1
  159. data/man/{bundle-show.ronn → bundle-show.1.ronn} +0 -0
  160. data/man/bundle-update.1 +1 -1
  161. data/man/{bundle-update.ronn → bundle-update.1.ronn} +0 -0
  162. data/man/bundle-viz.1 +1 -1
  163. data/man/{bundle-viz.ronn → bundle-viz.1.ronn} +0 -0
  164. data/man/bundle.1 +1 -1
  165. data/man/{bundle.ronn → bundle.1.ronn} +0 -0
  166. data/man/gemfile.5 +4 -4
  167. data/man/gemfile.5.ronn +4 -4
  168. metadata +39 -58
  169. data/man/bundle-add.1.txt +0 -58
  170. data/man/bundle-binstubs.1.txt +0 -48
  171. data/man/bundle-cache.1.txt +0 -78
  172. data/man/bundle-check.1.txt +0 -33
  173. data/man/bundle-clean.1.txt +0 -26
  174. data/man/bundle-config.1.txt +0 -528
  175. data/man/bundle-doctor.1.txt +0 -44
  176. data/man/bundle-exec.1.txt +0 -178
  177. data/man/bundle-gem.1.txt +0 -91
  178. data/man/bundle-info.1.txt +0 -21
  179. data/man/bundle-init.1.txt +0 -34
  180. data/man/bundle-inject.1.txt +0 -32
  181. data/man/bundle-install.1.txt +0 -401
  182. data/man/bundle-list.1.txt +0 -43
  183. data/man/bundle-lock.1.txt +0 -93
  184. data/man/bundle-open.1.txt +0 -29
  185. data/man/bundle-outdated.1.txt +0 -131
  186. data/man/bundle-platform.1.txt +0 -57
  187. data/man/bundle-pristine.1.txt +0 -44
  188. data/man/bundle-remove.1.txt +0 -34
  189. data/man/bundle-show.1.txt +0 -27
  190. data/man/bundle-update.1.txt +0 -390
  191. data/man/bundle-viz.1.txt +0 -39
  192. data/man/bundle.1.txt +0 -116
  193. data/man/gemfile.5.txt +0 -649
  194. data/man/index.txt +0 -25
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).
@@ -24,10 +24,10 @@ 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
 
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
@@ -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__)
@@ -285,7 +285,13 @@ module Bundler
285
285
 
286
286
  def app_config_path
287
287
  if app_config = ENV["BUNDLE_APP_CONFIG"]
288
- Pathname.new(app_config).expand_path(root)
288
+ app_config_pathname = Pathname.new(app_config)
289
+
290
+ if app_config_pathname.absolute?
291
+ app_config_pathname
292
+ else
293
+ app_config_pathname.expand_path(root)
294
+ end
289
295
  else
290
296
  root.join(".bundle")
291
297
  end
@@ -347,7 +353,10 @@ EOF
347
353
  env.delete_if {|k, _| k[0, 7] == "BUNDLE_" }
348
354
 
349
355
  if env.key?("RUBYOPT")
350
- env["RUBYOPT"] = env["RUBYOPT"].sub "-rbundler/setup", ""
356
+ rubyopt = env["RUBYOPT"].split(" ")
357
+ rubyopt.delete("-r#{File.expand_path("bundler/setup", __dir__)}")
358
+ rubyopt.delete("-rbundler/setup")
359
+ env["RUBYOPT"] = rubyopt.join(" ")
351
360
  end
352
361
 
353
362
  if env.key?("RUBYLIB")
@@ -447,10 +456,14 @@ EOF
447
456
  # system binaries. If you put '-n foo' in your .gemrc, RubyGems will
448
457
  # install binstubs there instead. Unfortunately, RubyGems doesn't expose
449
458
  # 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`.
459
+ # the directory to be set as well, via `bundle config set --local bindir foo`.
451
460
  Bundler.settings[:system_bindir] || Bundler.rubygems.gem_bindir
452
461
  end
453
462
 
463
+ def preferred_gemfile_name
464
+ Bundler.settings[:init_gems_rb] ? "gems.rb" : "Gemfile"
465
+ end
466
+
454
467
  def use_system_gems?
455
468
  configured_bundle_path.use_system_gems?
456
469
  end
@@ -512,7 +525,8 @@ EOF
512
525
  Your user account isn't allowed to install to the system RubyGems.
513
526
  You can cancel this installation and run:
514
527
 
515
- bundle install --path vendor/bundle
528
+ bundle config set --local path 'vendor/bundle'
529
+ bundle install
516
530
 
517
531
  to install the gems into ./vendor/bundle/, or you can enter your password
518
532
  and install the bundled gems to RubyGems using sudo.
@@ -610,7 +624,7 @@ EOF
610
624
  @rubygems = nil
611
625
  end
612
626
 
613
- private
627
+ private
614
628
 
615
629
  def eval_yaml_gemspec(path, contents)
616
630
  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 = "2019-12-18".freeze
8
- @git_commit_sha = "8bd21aa0f5".freeze
7
+ @built_at = "2020-10-07".freeze
8
+ @git_commit_sha = "d7c0467653".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
 
@@ -122,16 +122,19 @@ 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", __FILE__)
126
+ # man files are located under ruby's mandir with the default gems of bundler
127
+ man_path = RbConfig::CONFIG["mandir"] unless File.directory?(man_path)
128
+ man_pages = Hash[Dir.glob(File.join(man_path, "**", "*")).grep(/.*\.\d*\Z/).collect do |f|
127
129
  [File.basename(f, ".*"), f]
128
130
  end]
129
131
 
130
132
  if man_pages.include?(command)
133
+ man_page = man_pages[command]
131
134
  if Bundler.which("man") && man_path !~ %r{^file:/.+!/META-INF/jruby.home/.+}
132
- Kernel.exec "man #{man_pages[command]}"
135
+ Kernel.exec "man #{man_page}"
133
136
  else
134
- puts File.read("#{man_path}/#{File.basename(man_pages[command])}.txt")
137
+ puts File.read("#{File.dirname(man_page)}/#{File.basename(man_page)}.ronn")
135
138
  end
136
139
  elsif command_path = Bundler.which("bundler-#{cli}")
137
140
  Kernel.exec(command_path, "--help")
@@ -247,10 +250,12 @@ module Bundler
247
250
  def install
248
251
  SharedHelpers.major_deprecation(2, "The `--force` option has been renamed to `--redownload`") if ARGV.include?("--force")
249
252
 
250
- %w[clean deployment frozen no-cache no-prune path shebang system without with].each do |option|
253
+ %w[clean deployment frozen no-prune path shebang system without with].each do |option|
251
254
  remembered_flag_deprecation(option)
252
255
  end
253
256
 
257
+ remembered_negative_flag_deprecation("no-deployment")
258
+
254
259
  require_relative "cli/install"
255
260
  Bundler.settings.temporary(:no_install => false) do
256
261
  Install.new(options.dup).run
@@ -342,8 +347,8 @@ module Bundler
342
347
 
343
348
  desc "list", "List all gems in the bundle"
344
349
  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"
350
+ method_option "only-group", :type => :array, :default => [], :banner => "print gems from a given set of groups"
351
+ method_option "without-group", :type => :array, :default => [], :banner => "print all gems except from a given set of groups"
347
352
  method_option "paths", :type => :boolean, :banner => "print the path to each gem in the bundle"
348
353
  def list
349
354
  require_relative "cli/list"
@@ -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
@@ -560,15 +578,19 @@ 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 :test, :type => :string, :lazy_default => Bundler.settings["gem.test"] || "", :aliases => "-t", :banner => "Use the specified test framework for your library",
590
+ :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)`."
591
+ method_option :ci, :type => :string, :lazy_default => Bundler.settings["gem.ci"] || "",
592
+ :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)`"
593
+
572
594
  def gem(name)
573
595
  end
574
596
 
@@ -731,11 +753,11 @@ module Bundler
731
753
  end
732
754
  end
733
755
 
734
- private
756
+ private
735
757
 
736
758
  # Automatically invoke `bundle install` and resume if
737
759
  # Bundler.settings[:auto_install] exists. This is set through config cmd
738
- # `bundle config set auto_install 1`.
760
+ # `bundle config set --global auto_install 1`.
739
761
  #
740
762
  # Note that this method `nil`s out the global Definition object, so it
741
763
  # should be called first, before you instantiate anything like an
@@ -808,20 +830,32 @@ module Bundler
808
830
  nil
809
831
  end
810
832
 
833
+ def remembered_negative_flag_deprecation(name)
834
+ positive_name = name.gsub(/\Ano-/, "")
835
+ option = current_command.options[positive_name]
836
+ flag_name = "--no-" + option.switch_name.gsub(/\A--/, "")
837
+
838
+ flag_deprecation(positive_name, flag_name, option)
839
+ end
840
+
811
841
  def remembered_flag_deprecation(name)
812
842
  option = current_command.options[name]
813
843
  flag_name = option.switch_name
814
844
 
815
- name_index = ARGV.find {|arg| flag_name == arg }
845
+ flag_deprecation(name, flag_name, option)
846
+ end
847
+
848
+ def flag_deprecation(name, flag_name, option)
849
+ name_index = ARGV.find {|arg| flag_name == arg.split("=")[0] }
816
850
  return unless name_index
817
851
 
818
852
  value = options[name]
819
853
  value = value.join(" ").to_s if option.type == :array
820
854
 
821
- Bundler::SharedHelpers.major_deprecation 2,\
855
+ Bundler::SharedHelpers.major_deprecation 2,
822
856
  "The `#{flag_name}` flag is deprecated because it relies on being " \
823
857
  "remembered across bundler invocations, which bundler will no longer " \
824
- "do in future versions. Instead please use `bundle config set #{name} " \
858
+ "do in future versions. Instead please use `bundle config set --local #{name.tr("-", "_")} " \
825
859
  "'#{value}'`, and stop using this flag"
826
860
  end
827
861
  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)
@@ -24,7 +24,7 @@ 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"
@@ -37,12 +37,6 @@ module Bundler
37
37
  all = options.fetch(:all, Bundler.feature_flag.cache_all? || nil)
38
38
 
39
39
  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
40
  end
47
41
  end
48
42
  end
@@ -13,7 +13,7 @@ module Bundler
13
13
  Bundler.load.clean(options[:"dry-run"])
14
14
  end
15
15
 
16
- protected
16
+ protected
17
17
 
18
18
  def require_path_or_force
19
19
  return unless Bundler.use_system_gems? && !options[:force]
@@ -14,6 +14,20 @@ module Bundler
14
14
  Bundler.ui.info msg
15
15
  end
16
16
 
17
+ def self.output_fund_metadata_summary
18
+ definition = Bundler.definition
19
+ current_dependencies = definition.requested_dependencies
20
+ current_specs = definition.specs
21
+
22
+ count = current_dependencies.count {|dep| current_specs[dep.name].first.metadata.key?("funding_uri") }
23
+
24
+ return if count.zero?
25
+
26
+ intro = count > 1 ? "#{count} installed gems you directly depend on are" : "#{count} installed gem you directly depend on is"
27
+ message = "#{intro} looking for funding.\n Run `bundle fund` for details"
28
+ Bundler.ui.info message
29
+ end
30
+
17
31
  def self.output_without_groups_message(command)
18
32
  return if Bundler.settings[:without].empty?
19
33
  Bundler.ui.confirm without_groups_message(command)
@@ -12,7 +12,7 @@ module Bundler
12
12
  Bundler::SharedHelpers.major_deprecation 2, "bundle console will be replaced " \
13
13
  "by `bin/console` generated by `bundle gem <name>`"
14
14
 
15
- group ? Bundler.require(:default, *group.split.map!(&:to_sym)) : Bundler.require
15
+ group ? Bundler.require(:default, *group.split(" ").map!(&:to_sym)) : Bundler.require
16
16
  ARGV.clear
17
17
 
18
18
  console = get_console(Bundler.settings[:console] || "irb")
@@ -93,7 +93,7 @@ module Bundler
93
93
  end
94
94
  end
95
95
 
96
- private
96
+ private
97
97
 
98
98
  def check_home_permissions
99
99
  require "find"
@@ -34,7 +34,7 @@ module Bundler
34
34
  end
35
35
  end
36
36
 
37
- private
37
+ private
38
38
 
39
39
  def validate_cmd!
40
40
  return unless cmd.nil?
@@ -0,0 +1,36 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Bundler
4
+ class CLI::Fund
5
+ attr_reader :options
6
+
7
+ def initialize(options)
8
+ @options = options
9
+ end
10
+
11
+ def run
12
+ Bundler.definition.validate_runtime!
13
+
14
+ groups = Array(options[:group]).map(&:to_sym)
15
+
16
+ deps = if groups.any?
17
+ Bundler.definition.dependencies_for(groups)
18
+ else
19
+ Bundler.definition.current_dependencies
20
+ end
21
+
22
+ fund_info = deps.each_with_object([]) do |dep, arr|
23
+ spec = Bundler.definition.specs[dep.name].first
24
+ if spec.metadata.key?("funding_uri")
25
+ arr << "* #{spec.name} (#{spec.version})\n Funding: #{spec.metadata["funding_uri"]}"
26
+ end
27
+ end
28
+
29
+ if fund_info.empty?
30
+ Bundler.ui.info "None of the installed gems you directly depend on are looking for funding."
31
+ else
32
+ Bundler.ui.info fund_info.join("\n")
33
+ end
34
+ end
35
+ end
36
+ end