bundler 2.1.4 → 2.2.18
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of bundler might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/CHANGELOG.md +1790 -1430
- data/README.md +6 -8
- data/bundler.gemspec +5 -6
- data/exe/bundle +3 -0
- data/lib/bundler/build_metadata.rb +3 -11
- data/lib/bundler/cli/add.rb +1 -1
- data/lib/bundler/cli/binstubs.rb +6 -2
- data/lib/bundler/cli/cache.rb +2 -7
- data/lib/bundler/cli/clean.rb +1 -1
- data/lib/bundler/cli/common.rb +29 -2
- data/lib/bundler/cli/console.rb +1 -1
- data/lib/bundler/cli/doctor.rb +1 -1
- data/lib/bundler/cli/exec.rb +4 -4
- data/lib/bundler/cli/fund.rb +36 -0
- data/lib/bundler/cli/gem.rb +129 -28
- data/lib/bundler/cli/info.rb +15 -4
- data/lib/bundler/cli/init.rb +2 -2
- data/lib/bundler/cli/inject.rb +1 -1
- data/lib/bundler/cli/install.rb +13 -11
- data/lib/bundler/cli/issue.rb +2 -2
- data/lib/bundler/cli/list.rb +12 -10
- data/lib/bundler/cli/outdated.rb +94 -76
- data/lib/bundler/cli/plugin.rb +10 -0
- data/lib/bundler/cli/pristine.rb +5 -0
- data/lib/bundler/cli/show.rb +1 -1
- data/lib/bundler/cli/update.rb +3 -1
- data/lib/bundler/cli.rb +72 -56
- data/lib/bundler/compact_index_client/cache.rb +6 -14
- data/lib/bundler/compact_index_client/gem_parser.rb +28 -0
- data/lib/bundler/compact_index_client/updater.rb +13 -17
- data/lib/bundler/compact_index_client.rb +1 -1
- data/lib/bundler/current_ruby.rb +1 -0
- data/lib/bundler/definition.rb +117 -188
- data/lib/bundler/dep_proxy.rb +16 -9
- data/lib/bundler/dependency.rb +3 -10
- data/lib/bundler/dsl.rb +40 -33
- data/lib/bundler/endpoint_specification.rb +1 -1
- data/lib/bundler/env.rb +1 -1
- data/lib/bundler/environment_preserver.rb +26 -2
- data/lib/bundler/errors.rb +1 -0
- data/lib/bundler/feature_flag.rb +0 -6
- data/lib/bundler/fetcher/base.rb +1 -1
- data/lib/bundler/fetcher/compact_index.rb +1 -1
- data/lib/bundler/fetcher/downloader.rb +9 -5
- data/lib/bundler/fetcher/index.rb +3 -4
- data/lib/bundler/fetcher.rb +5 -4
- data/lib/bundler/friendly_errors.rb +22 -13
- data/lib/bundler/gem_helper.rb +51 -18
- data/lib/bundler/gem_helpers.rb +36 -25
- data/lib/bundler/gem_version_promoter.rb +4 -4
- data/lib/bundler/graph.rb +1 -1
- data/lib/bundler/index.rb +13 -9
- data/lib/bundler/injector.rb +23 -5
- data/lib/bundler/inline.rb +3 -2
- data/lib/bundler/installer/gem_installer.rb +3 -3
- data/lib/bundler/installer/parallel_installer.rb +46 -25
- data/lib/bundler/installer/standalone.rb +17 -2
- data/lib/bundler/installer.rb +37 -49
- data/lib/bundler/lazy_specification.rb +45 -25
- data/lib/bundler/lockfile_generator.rb +1 -1
- data/lib/bundler/lockfile_parser.rb +4 -14
- data/lib/bundler/man/.document +1 -0
- data/{man → lib/bundler/man}/bundle-add.1 +1 -1
- data/{man/bundle-add.ronn → lib/bundler/man/bundle-add.1.ronn} +0 -0
- data/{man → lib/bundler/man}/bundle-binstubs.1 +5 -3
- data/{man/bundle-binstubs.ronn → lib/bundler/man/bundle-binstubs.1.ronn} +2 -4
- data/{man → lib/bundler/man}/bundle-cache.1 +1 -1
- data/{man/bundle-cache.ronn → lib/bundler/man/bundle-cache.1.ronn} +0 -0
- data/{man → lib/bundler/man}/bundle-check.1 +1 -1
- data/{man/bundle-check.ronn → lib/bundler/man/bundle-check.1.ronn} +0 -0
- data/{man → lib/bundler/man}/bundle-clean.1 +1 -1
- data/{man/bundle-clean.ronn → lib/bundler/man/bundle-clean.1.ronn} +0 -0
- data/{man → lib/bundler/man}/bundle-config.1 +40 -38
- data/{man/bundle-config.ronn → lib/bundler/man/bundle-config.1.ronn} +50 -50
- data/{man → lib/bundler/man}/bundle-doctor.1 +1 -1
- data/{man/bundle-doctor.ronn → lib/bundler/man/bundle-doctor.1.ronn} +0 -0
- data/{man → lib/bundler/man}/bundle-exec.1 +1 -1
- data/{man/bundle-exec.ronn → lib/bundler/man/bundle-exec.1.ronn} +0 -0
- data/{man → lib/bundler/man}/bundle-gem.1 +25 -3
- data/{man/bundle-gem.ronn → lib/bundler/man/bundle-gem.1.ronn} +30 -7
- data/{man → lib/bundler/man}/bundle-info.1 +1 -1
- data/{man/bundle-info.ronn → lib/bundler/man/bundle-info.1.ronn} +0 -0
- data/{man → lib/bundler/man}/bundle-init.1 +1 -1
- data/{man/bundle-init.ronn → lib/bundler/man/bundle-init.1.ronn} +0 -0
- data/{man → lib/bundler/man}/bundle-inject.1 +1 -1
- data/{man/bundle-inject.ronn → lib/bundler/man/bundle-inject.1.ronn} +0 -0
- data/{man → lib/bundler/man}/bundle-install.1 +30 -3
- data/{man/bundle-install.ronn → lib/bundler/man/bundle-install.1.ronn} +25 -3
- data/{man → lib/bundler/man}/bundle-list.1 +7 -7
- data/{man/bundle-list.ronn → lib/bundler/man/bundle-list.1.ronn} +6 -6
- data/{man → lib/bundler/man}/bundle-lock.1 +1 -1
- data/{man/bundle-lock.ronn → lib/bundler/man/bundle-lock.1.ronn} +0 -0
- data/{man → lib/bundler/man}/bundle-open.1 +1 -1
- data/{man/bundle-open.ronn → lib/bundler/man/bundle-open.1.ronn} +0 -0
- data/{man → lib/bundler/man}/bundle-outdated.1 +1 -1
- data/{man/bundle-outdated.ronn → lib/bundler/man/bundle-outdated.1.ronn} +0 -0
- data/{man → lib/bundler/man}/bundle-platform.1 +1 -1
- data/{man/bundle-platform.ronn → lib/bundler/man/bundle-platform.1.ronn} +0 -0
- data/{man → lib/bundler/man}/bundle-pristine.1 +1 -1
- data/{man/bundle-pristine.ronn → lib/bundler/man/bundle-pristine.1.ronn} +0 -0
- data/{man → lib/bundler/man}/bundle-remove.1 +1 -1
- data/{man/bundle-remove.ronn → lib/bundler/man/bundle-remove.1.ronn} +0 -0
- data/{man → lib/bundler/man}/bundle-show.1 +1 -1
- data/{man/bundle-show.ronn → lib/bundler/man/bundle-show.1.ronn} +0 -0
- data/{man → lib/bundler/man}/bundle-update.1 +1 -1
- data/{man/bundle-update.ronn → lib/bundler/man/bundle-update.1.ronn} +0 -0
- data/{man → lib/bundler/man}/bundle-viz.1 +1 -1
- data/{man/bundle-viz.ronn → lib/bundler/man/bundle-viz.1.ronn} +0 -0
- data/{man → lib/bundler/man}/bundle.1 +1 -1
- data/{man/bundle.ronn → lib/bundler/man/bundle.1.ronn} +0 -0
- data/{man → lib/bundler/man}/gemfile.5 +4 -4
- data/{man → lib/bundler/man}/gemfile.5.ronn +4 -4
- data/{man → lib/bundler/man}/index.txt +0 -0
- data/lib/bundler/mirror.rb +2 -2
- data/lib/bundler/plugin/api/source.rb +22 -1
- data/lib/bundler/plugin/dsl.rb +1 -1
- data/lib/bundler/plugin/index.rb +10 -1
- data/lib/bundler/plugin/installer/rubygems.rb +1 -1
- data/lib/bundler/plugin/installer.rb +9 -11
- data/lib/bundler/plugin/source_list.rb +5 -1
- data/lib/bundler/plugin.rb +33 -7
- data/lib/bundler/psyched_yaml.rb +0 -15
- data/lib/bundler/remote_specification.rb +5 -2
- data/lib/bundler/resolver/spec_group.rb +56 -53
- data/lib/bundler/resolver.rb +88 -115
- data/lib/bundler/retry.rb +2 -2
- data/lib/bundler/ruby_version.rb +1 -1
- data/lib/bundler/rubygems_ext.rb +71 -11
- data/lib/bundler/rubygems_gem_installer.rb +50 -9
- data/lib/bundler/rubygems_integration.rb +25 -60
- data/lib/bundler/runtime.rb +4 -14
- data/lib/bundler/settings.rb +107 -55
- data/lib/bundler/shared_helpers.rb +3 -3
- data/lib/bundler/similarity_detector.rb +1 -1
- data/lib/bundler/source/git/git_proxy.rb +82 -80
- data/lib/bundler/source/git.rb +24 -22
- data/lib/bundler/source/metadata.rb +0 -4
- data/lib/bundler/source/path/installer.rb +10 -10
- data/lib/bundler/source/path.rb +10 -4
- data/lib/bundler/source/rubygems/remote.rb +1 -1
- data/lib/bundler/source/rubygems.rb +60 -28
- data/lib/bundler/source/rubygems_aggregate.rb +64 -0
- data/lib/bundler/source.rb +16 -1
- data/lib/bundler/source_list.rb +52 -28
- data/lib/bundler/source_map.rb +58 -0
- data/lib/bundler/spec_set.rb +29 -17
- data/lib/bundler/stub_specification.rb +25 -7
- data/lib/bundler/templates/Gemfile +1 -1
- data/lib/bundler/templates/gems.rb +1 -1
- data/lib/bundler/templates/newgem/CHANGELOG.md.tt +5 -0
- data/lib/bundler/templates/newgem/CODE_OF_CONDUCT.md.tt +57 -47
- data/lib/bundler/templates/newgem/Gemfile.tt +9 -1
- data/lib/bundler/templates/newgem/README.md.tt +6 -5
- data/lib/bundler/templates/newgem/Rakefile.tt +19 -5
- data/lib/bundler/templates/newgem/bin/console.tt +1 -0
- data/lib/bundler/templates/newgem/circleci/config.yml.tt +13 -0
- data/lib/bundler/templates/newgem/ext/newgem/extconf.rb.tt +2 -0
- data/lib/bundler/templates/newgem/github/workflows/main.yml.tt +16 -0
- data/lib/bundler/templates/newgem/gitlab-ci.yml.tt +9 -0
- data/lib/bundler/templates/newgem/lib/newgem/version.rb.tt +2 -0
- data/lib/bundler/templates/newgem/lib/newgem.rb.tt +4 -2
- data/lib/bundler/templates/newgem/newgem.gemspec.tt +15 -7
- data/lib/bundler/templates/newgem/rubocop.yml.tt +13 -0
- data/lib/bundler/templates/newgem/spec/newgem_spec.rb.tt +2 -0
- data/lib/bundler/templates/newgem/spec/spec_helper.rb.tt +2 -1
- data/lib/bundler/templates/newgem/test/{newgem_test.rb.tt → minitest/newgem_test.rb.tt} +2 -0
- data/lib/bundler/templates/newgem/test/{test_helper.rb.tt → minitest/test_helper.rb.tt} +2 -0
- data/lib/bundler/templates/newgem/test/test-unit/newgem_test.rb.tt +15 -0
- data/lib/bundler/templates/newgem/test/test-unit/test_helper.rb.tt +6 -0
- data/lib/bundler/ui/shell.rb +5 -5
- data/lib/bundler/uri_credentials_filter.rb +3 -1
- data/lib/bundler/vendor/molinillo/lib/molinillo/delegates/specification_provider.rb +7 -0
- data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/tag.rb +2 -2
- data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/vertex.rb +11 -5
- data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph.rb +34 -2
- data/lib/bundler/vendor/molinillo/lib/molinillo/errors.rb +3 -3
- data/lib/bundler/vendor/molinillo/lib/molinillo/gem_metadata.rb +1 -1
- data/lib/bundler/vendor/molinillo/lib/molinillo/modules/specification_provider.rb +12 -1
- data/lib/bundler/vendor/molinillo/lib/molinillo/resolution.rb +49 -47
- data/lib/bundler/vendor/molinillo/lib/molinillo.rb +0 -1
- data/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb +82 -189
- data/lib/bundler/vendor/thor/lib/thor/actions/create_link.rb +2 -1
- data/lib/bundler/vendor/thor/lib/thor/actions/file_manipulation.rb +4 -2
- data/lib/bundler/vendor/thor/lib/thor/actions.rb +1 -1
- data/lib/bundler/vendor/thor/lib/thor/base.rb +9 -0
- data/lib/bundler/vendor/thor/lib/thor/error.rb +1 -1
- data/lib/bundler/vendor/thor/lib/thor/parser/arguments.rb +5 -1
- data/lib/bundler/vendor/thor/lib/thor/parser/options.rb +9 -8
- data/lib/bundler/vendor/thor/lib/thor/shell/basic.rb +5 -2
- data/lib/bundler/vendor/thor/lib/thor/shell/color.rb +5 -1
- data/lib/bundler/vendor/thor/lib/thor/version.rb +1 -1
- data/lib/bundler/vendor/thor/lib/thor.rb +5 -13
- data/lib/bundler/vendor/tmpdir/lib/tmpdir.rb +154 -0
- data/lib/bundler/vendored_persistent.rb +0 -7
- data/lib/bundler/vendored_tmpdir.rb +4 -0
- data/lib/bundler/version.rb +1 -1
- data/lib/bundler/worker.rb +1 -1
- data/lib/bundler/yaml_serializer.rb +1 -1
- data/lib/bundler.rb +34 -9
- metadata +77 -86
- data/lib/bundler/vendor/molinillo/lib/molinillo/compatibility.rb +0 -26
- data/man/bundle-add.1.txt +0 -58
- data/man/bundle-binstubs.1.txt +0 -48
- data/man/bundle-cache.1.txt +0 -78
- data/man/bundle-check.1.txt +0 -33
- data/man/bundle-clean.1.txt +0 -26
- data/man/bundle-config.1.txt +0 -528
- data/man/bundle-doctor.1.txt +0 -44
- data/man/bundle-exec.1.txt +0 -178
- data/man/bundle-gem.1.txt +0 -91
- data/man/bundle-info.1.txt +0 -21
- data/man/bundle-init.1.txt +0 -34
- data/man/bundle-inject.1.txt +0 -32
- data/man/bundle-install.1.txt +0 -401
- data/man/bundle-list.1.txt +0 -43
- data/man/bundle-lock.1.txt +0 -93
- data/man/bundle-open.1.txt +0 -29
- data/man/bundle-outdated.1.txt +0 -131
- data/man/bundle-platform.1.txt +0 -57
- data/man/bundle-pristine.1.txt +0 -44
- data/man/bundle-remove.1.txt +0 -34
- data/man/bundle-show.1.txt +0 -27
- data/man/bundle-update.1.txt +0 -390
- data/man/bundle-viz.1.txt +0 -39
- data/man/bundle.1.txt +0 -116
- data/man/gemfile.5.txt +0 -649
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.
|
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
|
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 #{
|
133
|
+
Kernel.exec "man #{man_page}"
|
133
134
|
else
|
134
|
-
puts File.read("#{man_path}/#{File.basename(
|
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-
|
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
|
@@ -305,45 +308,25 @@ module Bundler
|
|
305
308
|
end
|
306
309
|
end
|
307
310
|
|
308
|
-
|
309
|
-
|
310
|
-
|
311
|
-
|
312
|
-
|
313
|
-
|
314
|
-
|
315
|
-
|
316
|
-
|
317
|
-
|
318
|
-
|
319
|
-
|
320
|
-
|
321
|
-
|
322
|
-
if flag = rest.find{|arg| ["--verbose", "--outdated"].include?(arg) }
|
323
|
-
Bundler::SharedHelpers.major_deprecation(2, "the `#{flag}` flag to `bundle show` was undocumented and will be removed without replacement")
|
324
|
-
else
|
325
|
-
new_command = rest.find {|arg| !arg.start_with?("--") } ? "info" : "list"
|
326
|
-
|
327
|
-
new_arguments = rest.map do |arg|
|
328
|
-
next arg if arg != "--paths"
|
329
|
-
next "--path" if new_command == "info"
|
330
|
-
end
|
331
|
-
|
332
|
-
old_argv = ARGV.join(" ")
|
333
|
-
new_argv = [new_command, *new_arguments.compact].join(" ")
|
334
|
-
|
335
|
-
Bundler::SharedHelpers.major_deprecation(2, "use `bundle #{new_argv}` instead of `bundle #{old_argv}`")
|
336
|
-
end
|
337
|
-
end
|
338
|
-
require_relative "cli/show"
|
339
|
-
Show.new(options, gem_name).run
|
340
|
-
end
|
311
|
+
desc "show GEM [OPTIONS]", "Shows all gems that are part of the bundle, or the path to a given gem"
|
312
|
+
long_desc <<-D
|
313
|
+
Show lists the names and versions of all gems that are required by your Gemfile.
|
314
|
+
Calling show with [GEM] will list the exact location of that gem on your machine.
|
315
|
+
D
|
316
|
+
method_option "paths", :type => :boolean,
|
317
|
+
:banner => "List the paths of all gems that are required by your Gemfile."
|
318
|
+
method_option "outdated", :type => :boolean,
|
319
|
+
:banner => "Show verbose output including whether gems are outdated."
|
320
|
+
def show(gem_name = nil)
|
321
|
+
SharedHelpers.major_deprecation(2, "the `--outdated` flag to `bundle show` was undocumented and will be removed without replacement") if ARGV.include?("--outdated")
|
322
|
+
require_relative "cli/show"
|
323
|
+
Show.new(options, gem_name).run
|
341
324
|
end
|
342
325
|
|
343
326
|
desc "list", "List all gems in the bundle"
|
344
327
|
method_option "name-only", :type => :boolean, :banner => "print only the gem names"
|
345
|
-
method_option "only-group", :type => :
|
346
|
-
method_option "without-group", :type => :
|
328
|
+
method_option "only-group", :type => :array, :default => [], :banner => "print gems from a given set of groups"
|
329
|
+
method_option "without-group", :type => :array, :default => [], :banner => "print all gems except from a given set of groups"
|
347
330
|
method_option "paths", :type => :boolean, :banner => "print the path to each gem in the bundle"
|
348
331
|
def list
|
349
332
|
require_relative "cli/list"
|
@@ -375,6 +358,8 @@ module Bundler
|
|
375
358
|
"Make binstubs that can work without the Bundler runtime"
|
376
359
|
method_option "all", :type => :boolean, :banner =>
|
377
360
|
"Install binstubs for all gems"
|
361
|
+
method_option "all-platforms", :type => :boolean, :default => false, :banner =>
|
362
|
+
"Install binstubs for all platforms"
|
378
363
|
def binstubs(*gems)
|
379
364
|
require_relative "cli/binstubs"
|
380
365
|
Binstubs.new(options, gems).run
|
@@ -434,11 +419,18 @@ module Bundler
|
|
434
419
|
Outdated.new(options, gems).run
|
435
420
|
end
|
436
421
|
|
437
|
-
desc "
|
438
|
-
|
439
|
-
|
440
|
-
|
422
|
+
desc "fund [OPTIONS]", "Lists information about gems seeking funding assistance"
|
423
|
+
method_option "group", :aliases => "-g", :type => :array, :banner =>
|
424
|
+
"Fetch funding information for a specific group"
|
425
|
+
def fund
|
426
|
+
require_relative "cli/fund"
|
427
|
+
Fund.new(options).run
|
441
428
|
end
|
429
|
+
|
430
|
+
desc "cache [OPTIONS]", "Locks and then caches all of the gems into vendor/cache"
|
431
|
+
method_option "all", :type => :boolean,
|
432
|
+
:default => Bundler.feature_flag.cache_all?,
|
433
|
+
:banner => "Include all sources (including path and git)."
|
442
434
|
method_option "all-platforms", :type => :boolean, :banner => "Include gems for all platforms present in the lockfile, not only the current one"
|
443
435
|
method_option "cache-path", :type => :string, :banner =>
|
444
436
|
"Specify a different cache path than the default (vendor/cache)."
|
@@ -457,6 +449,12 @@ module Bundler
|
|
457
449
|
bundle without having to download any additional gems.
|
458
450
|
D
|
459
451
|
def cache
|
452
|
+
SharedHelpers.major_deprecation 2,
|
453
|
+
"The `--all` flag is deprecated because it relies on being " \
|
454
|
+
"remembered across bundler invocations, which bundler will no longer " \
|
455
|
+
"do in future versions. Instead please use `bundle config set cache_all true`, " \
|
456
|
+
"and stop using this flag" if ARGV.include?("--all")
|
457
|
+
|
460
458
|
require_relative "cli/cache"
|
461
459
|
Cache.new(options).run
|
462
460
|
end
|
@@ -486,8 +484,8 @@ module Bundler
|
|
486
484
|
By default, setting a configuration value sets it for all projects
|
487
485
|
on the machine.
|
488
486
|
|
489
|
-
If a global setting is
|
490
|
-
will show the current value, as well as any
|
487
|
+
If a global setting is superseded by local configuration, this command
|
488
|
+
will show the current value, as well as any superseded values and
|
491
489
|
where they were specified.
|
492
490
|
D
|
493
491
|
require_relative "cli/config"
|
@@ -560,15 +558,21 @@ module Bundler
|
|
560
558
|
|
561
559
|
desc "gem NAME [OPTIONS]", "Creates a skeleton for creating a rubygem"
|
562
560
|
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`."
|
561
|
+
method_option :coc, :type => :boolean, :desc => "Generate a code of conduct file. Set a default with `bundle config set --global gem.coc true`."
|
564
562
|
method_option :edit, :type => :string, :aliases => "-e", :required => false, :banner => "EDITOR",
|
565
563
|
:lazy_default => [ENV["BUNDLER_EDITOR"], ENV["VISUAL"], ENV["EDITOR"]].find {|e| !e.nil? && !e.empty? },
|
566
564
|
:desc => "Open generated gemspec in the specified editor (defaults to $EDITOR or $BUNDLER_EDITOR)"
|
567
565
|
method_option :ext, :type => :boolean, :default => false, :desc => "Generate the boilerplate for C extension code"
|
568
566
|
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 :
|
571
|
-
|
567
|
+
method_option :mit, :type => :boolean, :desc => "Generate an MIT license file. Set a default with `bundle config set --global gem.mit true`."
|
568
|
+
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`."
|
569
|
+
method_option :changelog, :type => :boolean, :desc => "Generate changelog file. Set a default with `bundle config set --global gem.changelog true`."
|
570
|
+
method_option :test, :type => :string, :lazy_default => Bundler.settings["gem.test"] || "", :aliases => "-t", :banner => "Use the specified test framework for your library",
|
571
|
+
: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)`."
|
572
|
+
method_option :ci, :type => :string, :lazy_default => Bundler.settings["gem.ci"] || "",
|
573
|
+
: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)`"
|
574
|
+
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>`."
|
575
|
+
|
572
576
|
def gem(name)
|
573
577
|
end
|
574
578
|
|
@@ -731,11 +735,11 @@ module Bundler
|
|
731
735
|
end
|
732
736
|
end
|
733
737
|
|
734
|
-
|
738
|
+
private
|
735
739
|
|
736
740
|
# Automatically invoke `bundle install` and resume if
|
737
741
|
# Bundler.settings[:auto_install] exists. This is set through config cmd
|
738
|
-
# `bundle config set auto_install 1`.
|
742
|
+
# `bundle config set --global auto_install 1`.
|
739
743
|
#
|
740
744
|
# Note that this method `nil`s out the global Definition object, so it
|
741
745
|
# should be called first, before you instantiate anything like an
|
@@ -808,20 +812,32 @@ module Bundler
|
|
808
812
|
nil
|
809
813
|
end
|
810
814
|
|
815
|
+
def remembered_negative_flag_deprecation(name)
|
816
|
+
positive_name = name.gsub(/\Ano-/, "")
|
817
|
+
option = current_command.options[positive_name]
|
818
|
+
flag_name = "--no-" + option.switch_name.gsub(/\A--/, "")
|
819
|
+
|
820
|
+
flag_deprecation(positive_name, flag_name, option)
|
821
|
+
end
|
822
|
+
|
811
823
|
def remembered_flag_deprecation(name)
|
812
824
|
option = current_command.options[name]
|
813
825
|
flag_name = option.switch_name
|
814
826
|
|
815
|
-
|
827
|
+
flag_deprecation(name, flag_name, option)
|
828
|
+
end
|
829
|
+
|
830
|
+
def flag_deprecation(name, flag_name, option)
|
831
|
+
name_index = ARGV.find {|arg| flag_name == arg.split("=")[0] }
|
816
832
|
return unless name_index
|
817
833
|
|
818
834
|
value = options[name]
|
819
835
|
value = value.join(" ").to_s if option.type == :array
|
820
836
|
|
821
|
-
Bundler::SharedHelpers.major_deprecation 2
|
837
|
+
Bundler::SharedHelpers.major_deprecation 2,
|
822
838
|
"The `#{flag_name}` flag is deprecated because it relies on being " \
|
823
839
|
"remembered across bundler invocations, which bundler will no longer " \
|
824
|
-
"do in future versions. Instead please use `bundle config set #{name} " \
|
840
|
+
"do in future versions. Instead please use `bundle config set --local #{name.tr("-", "_")} " \
|
825
841
|
"'#{value}'`, and stop using this flag"
|
826
842
|
end
|
827
843
|
end
|
@@ -1,5 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
require_relative "gem_parser"
|
4
|
+
|
3
5
|
module Bundler
|
4
6
|
class CompactIndexClient
|
5
7
|
class Cache
|
@@ -83,7 +85,7 @@ module Bundler
|
|
83
85
|
gem_line ? parse_gem(gem_line) : nil
|
84
86
|
end
|
85
87
|
|
86
|
-
|
88
|
+
private
|
87
89
|
|
88
90
|
def lines(path)
|
89
91
|
return [] unless path.file?
|
@@ -92,19 +94,9 @@ module Bundler
|
|
92
94
|
header ? lines[header + 1..-1] : lines
|
93
95
|
end
|
94
96
|
|
95
|
-
def parse_gem(
|
96
|
-
|
97
|
-
|
98
|
-
dependencies, requirements = rest.split("|", 2).map {|s| s.split(",") } if rest
|
99
|
-
dependencies = dependencies ? dependencies.map {|d| parse_dependency(d) } : []
|
100
|
-
requirements = requirements ? requirements.map {|r| parse_dependency(r) } : []
|
101
|
-
[version, platform, dependencies, requirements]
|
102
|
-
end
|
103
|
-
|
104
|
-
def parse_dependency(string)
|
105
|
-
dependency = string.split(":")
|
106
|
-
dependency[-1] = dependency[-1].split("&") if dependency.size > 1
|
107
|
-
dependency
|
97
|
+
def parse_gem(line)
|
98
|
+
@dependency_parser ||= GemParser.new
|
99
|
+
@dependency_parser.parse(line)
|
108
100
|
end
|
109
101
|
|
110
102
|
def info_roots
|
@@ -0,0 +1,28 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Bundler
|
4
|
+
class CompactIndexClient
|
5
|
+
if defined?(Gem::Resolver::APISet::GemParser)
|
6
|
+
GemParser = Gem::Resolver::APISet::GemParser
|
7
|
+
else
|
8
|
+
class GemParser
|
9
|
+
def parse(line)
|
10
|
+
version_and_platform, rest = line.split(" ", 2)
|
11
|
+
version, platform = version_and_platform.split("-", 2)
|
12
|
+
dependencies, requirements = rest.split("|", 2).map {|s| s.split(",") } if rest
|
13
|
+
dependencies = dependencies ? dependencies.map {|d| parse_dependency(d) } : []
|
14
|
+
requirements = requirements ? requirements.map {|d| parse_dependency(d) } : []
|
15
|
+
[version, platform, dependencies, requirements]
|
16
|
+
end
|
17
|
+
|
18
|
+
private
|
19
|
+
|
20
|
+
def parse_dependency(string)
|
21
|
+
dependency = string.split(":")
|
22
|
+
dependency[-1] = dependency[-1].split("&") if dependency.size > 1
|
23
|
+
dependency
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
@@ -1,8 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require_relative "../vendored_fileutils"
|
4
|
-
require "stringio"
|
5
|
-
require "zlib"
|
6
4
|
|
7
5
|
module Bundler
|
8
6
|
class CompactIndexClient
|
@@ -22,13 +20,13 @@ module Bundler
|
|
22
20
|
|
23
21
|
def initialize(fetcher)
|
24
22
|
@fetcher = fetcher
|
25
|
-
|
23
|
+
require_relative "../vendored_tmpdir"
|
26
24
|
end
|
27
25
|
|
28
26
|
def update(local_path, remote_path, retrying = nil)
|
29
27
|
headers = {}
|
30
28
|
|
31
|
-
Dir.mktmpdir("bundler-compact-index-") do |local_temp_dir|
|
29
|
+
Bundler::Dir.mktmpdir("bundler-compact-index-") do |local_temp_dir|
|
32
30
|
local_temp_path = Pathname.new(local_temp_dir).join(local_path.basename)
|
33
31
|
|
34
32
|
# first try to fetch any new bytes on the existing file
|
@@ -45,29 +43,27 @@ module Bundler
|
|
45
43
|
else
|
46
44
|
"bytes=#{local_temp_path.size}-"
|
47
45
|
end
|
48
|
-
else
|
49
|
-
# Fastly ignores Range when Accept-Encoding: gzip is set
|
50
|
-
headers["Accept-Encoding"] = "gzip"
|
51
46
|
end
|
52
47
|
|
53
48
|
response = @fetcher.call(remote_path, headers)
|
54
49
|
return nil if response.is_a?(Net::HTTPNotModified)
|
55
50
|
|
56
51
|
content = response.body
|
57
|
-
if response["Content-Encoding"] == "gzip"
|
58
|
-
content = Zlib::GzipReader.new(StringIO.new(content)).read
|
59
|
-
end
|
60
52
|
|
61
|
-
|
53
|
+
etag = (response["ETag"] || "").gsub(%r{\AW/}, "")
|
54
|
+
correct_response = SharedHelpers.filesystem_access(local_temp_path) do
|
62
55
|
if response.is_a?(Net::HTTPPartialContent) && local_temp_path.size.nonzero?
|
63
56
|
local_temp_path.open("a") {|f| f << slice_body(content, 1..-1) }
|
57
|
+
|
58
|
+
etag_for(local_temp_path) == etag
|
64
59
|
else
|
65
|
-
local_temp_path.open("
|
60
|
+
local_temp_path.open("wb") {|f| f << content }
|
61
|
+
|
62
|
+
etag.length.zero? || etag_for(local_temp_path) == etag
|
66
63
|
end
|
67
64
|
end
|
68
65
|
|
69
|
-
|
70
|
-
if etag_for(local_temp_path) == response_etag
|
66
|
+
if correct_response
|
71
67
|
SharedHelpers.filesystem_access(local_path) do
|
72
68
|
FileUtils.mv(local_temp_path, local_path)
|
73
69
|
end
|
@@ -75,7 +71,7 @@ module Bundler
|
|
75
71
|
end
|
76
72
|
|
77
73
|
if retrying
|
78
|
-
raise MisMatchedChecksumError.new(remote_path,
|
74
|
+
raise MisMatchedChecksumError.new(remote_path, etag, etag_for(local_temp_path))
|
79
75
|
end
|
80
76
|
|
81
77
|
update(local_path, remote_path, :retrying)
|
@@ -100,11 +96,11 @@ module Bundler
|
|
100
96
|
|
101
97
|
def checksum_for_file(path)
|
102
98
|
return nil unless path.file?
|
103
|
-
# This must use
|
99
|
+
# This must use File.read instead of Digest.file().hexdigest
|
104
100
|
# because we need to preserve \n line endings on windows when calculating
|
105
101
|
# the checksum
|
106
102
|
SharedHelpers.filesystem_access(path, :read) do
|
107
|
-
SharedHelpers.digest(:MD5).hexdigest(
|
103
|
+
SharedHelpers.digest(:MD5).hexdigest(File.read(path))
|
108
104
|
end
|
109
105
|
end
|
110
106
|
end
|