rubygems-update 3.3.18 → 3.6.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +2182 -1067
- data/CODE_OF_CONDUCT.md +79 -28
- data/Manifest.txt +184 -290
- data/README.md +35 -19
- data/bundler/CHANGELOG.md +1003 -3
- data/bundler/README.md +3 -7
- data/bundler/bundler.gemspec +11 -11
- data/bundler/exe/bundle +5 -25
- data/bundler/lib/bundler/build_metadata.rb +3 -3
- data/bundler/lib/bundler/capistrano.rb +1 -1
- data/bundler/lib/bundler/checksum.rb +254 -0
- data/bundler/lib/bundler/ci_detector.rb +75 -0
- data/bundler/lib/bundler/cli/add.rb +7 -5
- data/bundler/lib/bundler/cli/binstubs.rb +10 -6
- data/bundler/lib/bundler/cli/cache.rb +1 -1
- data/bundler/lib/bundler/cli/check.rb +4 -4
- data/bundler/lib/bundler/cli/common.rb +11 -1
- data/bundler/lib/bundler/cli/config.rb +8 -7
- data/bundler/lib/bundler/cli/console.rb +2 -5
- data/bundler/lib/bundler/cli/doctor.rb +10 -12
- data/bundler/lib/bundler/cli/exec.rb +2 -1
- data/bundler/lib/bundler/cli/fund.rb +1 -1
- data/bundler/lib/bundler/cli/gem.rb +77 -53
- data/bundler/lib/bundler/cli/info.rb +4 -15
- data/bundler/lib/bundler/cli/init.rb +6 -2
- data/bundler/lib/bundler/cli/inject.rb +1 -1
- data/bundler/lib/bundler/cli/install.rb +27 -15
- data/bundler/lib/bundler/cli/issue.rb +1 -1
- data/bundler/lib/bundler/cli/lock.rb +54 -28
- data/bundler/lib/bundler/cli/open.rb +9 -9
- data/bundler/lib/bundler/cli/outdated.rb +34 -29
- data/bundler/lib/bundler/cli/platform.rb +7 -5
- data/bundler/lib/bundler/cli/plugin.rb +9 -15
- data/bundler/lib/bundler/cli/pristine.rb +38 -30
- data/bundler/lib/bundler/cli/show.rb +4 -4
- data/bundler/lib/bundler/cli/update.rb +6 -5
- data/bundler/lib/bundler/cli/viz.rb +1 -1
- data/bundler/lib/bundler/cli.rb +258 -307
- data/bundler/lib/bundler/compact_index_client/cache.rb +55 -60
- data/bundler/lib/bundler/compact_index_client/cache_file.rb +148 -0
- data/bundler/lib/bundler/compact_index_client/gem_parser.rb +7 -3
- data/bundler/lib/bundler/compact_index_client/parser.rb +84 -0
- data/bundler/lib/bundler/compact_index_client/updater.rb +71 -83
- data/bundler/lib/bundler/compact_index_client.rb +58 -80
- data/bundler/lib/bundler/constants.rb +9 -2
- data/bundler/lib/bundler/current_ruby.rb +11 -16
- data/bundler/lib/bundler/definition.rb +547 -228
- data/bundler/lib/bundler/dependency.rb +30 -87
- data/bundler/lib/bundler/digest.rb +3 -3
- data/bundler/lib/bundler/dsl.rb +115 -65
- data/bundler/lib/bundler/endpoint_specification.rb +27 -14
- data/bundler/lib/bundler/env.rb +5 -7
- data/bundler/lib/bundler/environment_preserver.rb +8 -25
- data/bundler/lib/bundler/errors.rb +85 -11
- data/bundler/lib/bundler/feature_flag.rb +1 -2
- data/bundler/lib/bundler/fetcher/base.rb +5 -3
- data/bundler/lib/bundler/fetcher/compact_index.rb +28 -43
- data/bundler/lib/bundler/fetcher/dependency.rb +3 -7
- data/bundler/lib/bundler/fetcher/downloader.rb +17 -16
- data/bundler/lib/bundler/fetcher/gem_remote_fetcher.rb +16 -0
- data/bundler/lib/bundler/fetcher/index.rb +2 -3
- data/bundler/lib/bundler/fetcher.rb +91 -74
- data/bundler/lib/bundler/force_platform.rb +16 -0
- data/bundler/lib/bundler/friendly_errors.rb +6 -9
- data/bundler/lib/bundler/gem_helper.rb +5 -6
- data/bundler/lib/bundler/gem_helpers.rb +45 -7
- data/bundler/lib/bundler/gem_version_promoter.rb +68 -109
- data/bundler/lib/bundler/graph.rb +9 -9
- data/bundler/lib/bundler/index.rb +69 -73
- data/bundler/lib/bundler/injector.rb +12 -13
- data/bundler/lib/bundler/inline.rb +40 -17
- data/bundler/lib/bundler/installer/gem_installer.rb +13 -12
- data/bundler/lib/bundler/installer/parallel_installer.rb +19 -66
- data/bundler/lib/bundler/installer/standalone.rb +29 -15
- data/bundler/lib/bundler/installer.rb +27 -77
- data/bundler/lib/bundler/lazy_specification.rb +134 -71
- data/bundler/lib/bundler/lockfile_generator.rb +13 -4
- data/bundler/lib/bundler/lockfile_parser.rb +134 -61
- data/bundler/lib/bundler/man/bundle-add.1 +46 -48
- data/bundler/lib/bundler/man/bundle-add.1.ronn +54 -22
- data/bundler/lib/bundler/man/bundle-binstubs.1 +10 -19
- data/bundler/lib/bundler/man/bundle-binstubs.1.ronn +6 -3
- data/bundler/lib/bundler/man/bundle-cache.1 +38 -25
- data/bundler/lib/bundler/man/bundle-cache.1.ronn +40 -4
- data/bundler/lib/bundler/man/bundle-check.1 +7 -14
- data/bundler/lib/bundler/man/bundle-check.1.ronn +7 -2
- data/bundler/lib/bundler/man/bundle-clean.1 +4 -11
- data/bundler/lib/bundler/man/bundle-clean.1.ronn +1 -1
- data/bundler/lib/bundler/man/bundle-config.1 +41 -220
- data/bundler/lib/bundler/man/bundle-config.1.ronn +27 -22
- data/bundler/lib/bundler/man/bundle-console.1 +33 -0
- data/bundler/lib/bundler/man/bundle-console.1.ronn +39 -0
- data/bundler/lib/bundler/man/bundle-doctor.1 +5 -19
- data/bundler/lib/bundler/man/bundle-doctor.1.ronn +1 -1
- data/bundler/lib/bundler/man/bundle-env.1 +9 -0
- data/bundler/lib/bundler/man/bundle-env.1.ronn +10 -0
- data/bundler/lib/bundler/man/bundle-exec.1 +20 -78
- data/bundler/lib/bundler/man/bundle-exec.1.ronn +12 -10
- data/bundler/lib/bundler/man/bundle-fund.1 +22 -0
- data/bundler/lib/bundler/man/bundle-fund.1.ronn +25 -0
- data/bundler/lib/bundler/man/bundle-gem.1 +53 -81
- data/bundler/lib/bundler/man/bundle-gem.1.ronn +41 -9
- data/bundler/lib/bundler/man/bundle-help.1 +9 -0
- data/bundler/lib/bundler/man/bundle-help.1.ronn +12 -0
- data/bundler/lib/bundler/man/bundle-info.1 +8 -11
- data/bundler/lib/bundler/man/bundle-info.1.ronn +9 -5
- data/bundler/lib/bundler/man/bundle-init.1 +7 -12
- data/bundler/lib/bundler/man/bundle-init.1.ronn +4 -1
- data/bundler/lib/bundler/man/bundle-inject.1 +17 -19
- data/bundler/lib/bundler/man/bundle-inject.1.ronn +12 -2
- data/bundler/lib/bundler/man/bundle-install.1 +42 -162
- data/bundler/lib/bundler/man/bundle-install.1.ronn +31 -49
- data/bundler/lib/bundler/man/bundle-issue.1 +45 -0
- data/bundler/lib/bundler/man/bundle-issue.1.ronn +37 -0
- data/bundler/lib/bundler/man/bundle-licenses.1 +9 -0
- data/bundler/lib/bundler/man/bundle-licenses.1.ronn +10 -0
- data/bundler/lib/bundler/man/bundle-list.1 +4 -19
- data/bundler/lib/bundler/man/bundle-list.1.ronn +4 -1
- data/bundler/lib/bundler/man/bundle-lock.1 +25 -34
- data/bundler/lib/bundler/man/bundle-lock.1.ronn +25 -4
- data/bundler/lib/bundler/man/bundle-open.1 +18 -18
- data/bundler/lib/bundler/man/bundle-open.1.ronn +10 -1
- data/bundler/lib/bundler/man/bundle-outdated.1 +22 -67
- data/bundler/lib/bundler/man/bundle-outdated.1.ronn +20 -12
- data/bundler/lib/bundler/man/bundle-platform.1 +16 -28
- data/bundler/lib/bundler/man/bundle-platform.1.ronn +14 -7
- data/bundler/lib/bundler/man/bundle-plugin.1 +58 -0
- data/bundler/lib/bundler/man/bundle-plugin.1.ronn +63 -0
- data/bundler/lib/bundler/man/bundle-pristine.1 +5 -16
- data/bundler/lib/bundler/man/bundle-pristine.1.ronn +1 -1
- data/bundler/lib/bundler/man/bundle-remove.1 +4 -14
- data/bundler/lib/bundler/man/bundle-remove.1.ronn +1 -1
- data/bundler/lib/bundler/man/bundle-show.1 +7 -11
- data/bundler/lib/bundler/man/bundle-show.1.ronn +4 -0
- data/bundler/lib/bundler/man/bundle-update.1 +30 -143
- data/bundler/lib/bundler/man/bundle-update.1.ronn +14 -6
- data/bundler/lib/bundler/man/bundle-version.1 +22 -0
- data/bundler/lib/bundler/man/bundle-version.1.ronn +24 -0
- data/bundler/lib/bundler/man/bundle-viz.1 +9 -18
- data/bundler/lib/bundler/man/bundle-viz.1.ronn +9 -3
- data/bundler/lib/bundler/man/bundle.1 +17 -51
- data/bundler/lib/bundler/man/bundle.1.ronn +12 -7
- data/bundler/lib/bundler/man/gemfile.5 +77 -341
- data/bundler/lib/bundler/man/gemfile.5.ronn +73 -54
- data/bundler/lib/bundler/man/index.txt +8 -0
- data/bundler/lib/bundler/match_metadata.rb +17 -0
- data/bundler/lib/bundler/match_platform.rb +1 -1
- data/bundler/lib/bundler/match_remote_metadata.rb +29 -0
- data/bundler/lib/bundler/materialization.rb +59 -0
- data/bundler/lib/bundler/mirror.rb +8 -10
- data/bundler/lib/bundler/plugin/api/source.rb +7 -5
- data/bundler/lib/bundler/plugin/events.rb +24 -0
- data/bundler/lib/bundler/plugin/index.rb +13 -5
- data/bundler/lib/bundler/plugin/installer/path.rb +18 -0
- data/bundler/lib/bundler/plugin/installer/rubygems.rb +0 -4
- data/bundler/lib/bundler/plugin/installer.rb +42 -19
- data/bundler/lib/bundler/plugin/source_list.rb +4 -4
- data/bundler/lib/bundler/plugin.rb +35 -7
- data/bundler/lib/bundler/process_lock.rb +10 -14
- data/bundler/lib/bundler/remote_specification.rb +17 -13
- data/bundler/lib/bundler/resolver/base.rb +117 -0
- data/bundler/lib/bundler/resolver/candidate.rb +82 -0
- data/bundler/lib/bundler/resolver/incompatibility.rb +15 -0
- data/bundler/lib/bundler/resolver/package.rb +90 -0
- data/bundler/lib/bundler/resolver/root.rb +25 -0
- data/bundler/lib/bundler/resolver/spec_group.rb +54 -67
- data/bundler/lib/bundler/resolver.rb +432 -329
- data/bundler/lib/bundler/retry.rb +2 -2
- data/bundler/lib/bundler/ruby_dsl.rb +42 -7
- data/bundler/lib/bundler/ruby_version.rb +23 -10
- data/bundler/lib/bundler/rubygems_ext.rb +286 -81
- data/bundler/lib/bundler/rubygems_gem_installer.rb +77 -68
- data/bundler/lib/bundler/rubygems_integration.rb +57 -155
- data/bundler/lib/bundler/runtime.rb +28 -17
- data/bundler/lib/bundler/safe_marshal.rb +31 -0
- data/bundler/lib/bundler/self_manager.rb +50 -12
- data/bundler/lib/bundler/settings.rb +144 -58
- data/bundler/lib/bundler/setup.rb +13 -1
- data/bundler/lib/bundler/shared_helpers.rb +87 -36
- data/bundler/lib/bundler/source/git/git_proxy.rb +278 -80
- data/bundler/lib/bundler/source/git.rb +161 -68
- data/bundler/lib/bundler/source/metadata.rb +16 -16
- data/bundler/lib/bundler/source/path/installer.rb +1 -22
- data/bundler/lib/bundler/source/path.rb +16 -26
- data/bundler/lib/bundler/source/rubygems/remote.rb +1 -1
- data/bundler/lib/bundler/source/rubygems.rb +94 -154
- data/bundler/lib/bundler/source.rb +3 -1
- data/bundler/lib/bundler/source_list.rb +34 -4
- data/bundler/lib/bundler/spec_set.rb +195 -65
- data/bundler/lib/bundler/stub_specification.rb +34 -4
- data/bundler/lib/bundler/templates/Executable +1 -1
- data/bundler/lib/bundler/templates/Executable.bundler +6 -11
- data/bundler/lib/bundler/templates/Executable.standalone +2 -0
- data/bundler/lib/bundler/templates/newgem/CODE_OF_CONDUCT.md.tt +77 -29
- data/bundler/lib/bundler/templates/newgem/Cargo.toml.tt +7 -0
- data/bundler/lib/bundler/templates/newgem/README.md.tt +11 -5
- data/bundler/lib/bundler/templates/newgem/Rakefile.tt +19 -8
- data/bundler/lib/bundler/templates/newgem/bin/console.tt +0 -4
- data/bundler/lib/bundler/templates/newgem/circleci/config.yml.tt +12 -0
- data/bundler/lib/bundler/templates/newgem/ext/newgem/Cargo.toml.tt +15 -0
- data/bundler/lib/bundler/templates/newgem/ext/newgem/extconf-c.rb.tt +10 -0
- data/bundler/lib/bundler/templates/newgem/ext/newgem/extconf-rust.rb.tt +6 -0
- data/bundler/lib/bundler/templates/newgem/ext/newgem/newgem.c.tt +1 -1
- data/bundler/lib/bundler/templates/newgem/ext/newgem/src/lib.rs.tt +12 -0
- data/bundler/lib/bundler/templates/newgem/github/workflows/main.yml.tt +18 -8
- data/bundler/lib/bundler/templates/newgem/gitignore.tt +3 -0
- data/bundler/lib/bundler/templates/newgem/gitlab-ci.yml.tt +13 -4
- data/bundler/lib/bundler/templates/newgem/newgem.gemspec.tt +12 -4
- data/bundler/lib/bundler/templates/newgem/rubocop.yml.tt +0 -5
- data/bundler/lib/bundler/templates/newgem/standard.yml.tt +1 -1
- data/bundler/lib/bundler/ui/rg_proxy.rb +1 -1
- data/bundler/lib/bundler/ui/shell.rb +60 -15
- data/bundler/lib/bundler/ui/silent.rb +33 -6
- data/bundler/lib/bundler/uri_credentials_filter.rb +3 -3
- data/bundler/lib/bundler/uri_normalizer.rb +23 -0
- data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/timed_stack.rb +3 -3
- data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/version.rb +1 -1
- data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/wrapper.rb +0 -1
- data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool.rb +56 -7
- data/bundler/lib/bundler/vendor/fileutils/lib/fileutils.rb +1350 -418
- data/bundler/lib/bundler/vendor/net-http-persistent/.document +1 -0
- data/bundler/lib/bundler/vendor/net-http-persistent/README.rdoc +1 -1
- data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/connection.rb +4 -3
- data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/pool.rb +23 -11
- data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/timed_stack_multi.rb +1 -1
- data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb +102 -64
- data/bundler/lib/bundler/vendor/pub_grub/.document +1 -0
- data/bundler/lib/bundler/vendor/pub_grub/LICENSE.txt +21 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/assignment.rb +20 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/basic_package_source.rb +189 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/failure_writer.rb +182 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/incompatibility.rb +150 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/package.rb +43 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/partial_solution.rb +121 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/rubygems.rb +45 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/solve_failure.rb +19 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/static_package_source.rb +61 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/term.rb +105 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version.rb +3 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_constraint.rb +129 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_range.rb +411 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_solver.rb +248 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_union.rb +178 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub.rb +31 -0
- data/bundler/lib/bundler/vendor/securerandom/.document +1 -0
- data/bundler/lib/bundler/vendor/securerandom/COPYING +56 -0
- data/bundler/lib/bundler/vendor/securerandom/lib/securerandom.rb +102 -0
- data/bundler/lib/bundler/vendor/thor/.document +1 -0
- data/bundler/lib/bundler/vendor/thor/lib/thor/actions/create_file.rb +3 -2
- data/bundler/lib/bundler/vendor/thor/lib/thor/actions/directory.rb +1 -1
- data/bundler/lib/bundler/vendor/thor/lib/thor/actions/empty_directory.rb +1 -1
- data/bundler/lib/bundler/vendor/thor/lib/thor/actions/file_manipulation.rb +11 -15
- data/bundler/lib/bundler/vendor/thor/lib/thor/actions/inject_into_file.rb +15 -4
- data/bundler/lib/bundler/vendor/thor/lib/thor/actions.rb +15 -15
- data/bundler/lib/bundler/vendor/thor/lib/thor/base.rb +140 -14
- data/bundler/lib/bundler/vendor/thor/lib/thor/command.rb +13 -4
- data/bundler/lib/bundler/vendor/thor/lib/thor/core_ext/hash_with_indifferent_access.rb +4 -0
- data/bundler/lib/bundler/vendor/thor/lib/thor/error.rb +16 -25
- data/bundler/lib/bundler/vendor/thor/lib/thor/group.rb +12 -1
- data/bundler/lib/bundler/vendor/thor/lib/thor/invocation.rb +1 -1
- data/bundler/lib/bundler/vendor/thor/lib/thor/nested_context.rb +2 -2
- data/bundler/lib/bundler/vendor/thor/lib/thor/parser/argument.rb +17 -1
- data/bundler/lib/bundler/vendor/thor/lib/thor/parser/arguments.rb +33 -17
- data/bundler/lib/bundler/vendor/thor/lib/thor/parser/option.rb +28 -9
- data/bundler/lib/bundler/vendor/thor/lib/thor/parser/options.rb +46 -7
- data/bundler/lib/bundler/vendor/thor/lib/thor/rake_compat.rb +2 -2
- data/bundler/lib/bundler/vendor/thor/lib/thor/runner.rb +40 -30
- data/bundler/lib/bundler/vendor/thor/lib/thor/shell/basic.rb +35 -159
- data/bundler/lib/bundler/vendor/thor/lib/thor/shell/color.rb +1 -46
- data/bundler/lib/bundler/vendor/thor/lib/thor/shell/column_printer.rb +29 -0
- data/bundler/lib/bundler/vendor/thor/lib/thor/shell/html.rb +1 -46
- data/bundler/lib/bundler/vendor/thor/lib/thor/shell/table_printer.rb +118 -0
- data/bundler/lib/bundler/vendor/thor/lib/thor/shell/terminal.rb +42 -0
- data/bundler/lib/bundler/vendor/thor/lib/thor/shell/wrapped_printer.rb +38 -0
- data/bundler/lib/bundler/vendor/thor/lib/thor/shell.rb +1 -1
- data/bundler/lib/bundler/vendor/thor/lib/thor/util.rb +8 -7
- data/bundler/lib/bundler/vendor/thor/lib/thor/version.rb +1 -1
- data/bundler/lib/bundler/vendor/thor/lib/thor.rb +166 -8
- data/bundler/lib/bundler/vendor/tsort/.document +1 -0
- data/bundler/lib/bundler/vendor/tsort/lib/tsort.rb +3 -0
- data/bundler/lib/bundler/vendor/uri/.document +1 -0
- data/bundler/lib/bundler/vendor/uri/COPYING +56 -0
- data/bundler/lib/bundler/vendor/uri/lib/uri/common.rb +343 -148
- data/bundler/lib/bundler/vendor/uri/lib/uri/file.rb +10 -4
- data/bundler/lib/bundler/vendor/uri/lib/uri/ftp.rb +3 -2
- data/bundler/lib/bundler/vendor/uri/lib/uri/generic.rb +44 -33
- data/bundler/lib/bundler/vendor/uri/lib/uri/http.rb +40 -2
- data/bundler/lib/bundler/vendor/uri/lib/uri/https.rb +2 -1
- data/bundler/lib/bundler/vendor/uri/lib/uri/ldap.rb +1 -1
- data/bundler/lib/bundler/vendor/uri/lib/uri/ldaps.rb +2 -1
- data/bundler/lib/bundler/vendor/uri/lib/uri/mailto.rb +2 -2
- data/bundler/lib/bundler/vendor/uri/lib/uri/rfc2396_parser.rb +25 -12
- data/bundler/lib/bundler/vendor/uri/lib/uri/rfc3986_parser.rb +130 -38
- data/bundler/lib/bundler/vendor/uri/lib/uri/version.rb +1 -1
- data/bundler/lib/bundler/vendor/uri/lib/uri/ws.rb +1 -2
- data/bundler/lib/bundler/vendor/uri/lib/uri/wss.rb +2 -1
- data/bundler/lib/bundler/vendor/uri/lib/uri.rb +12 -11
- data/bundler/lib/bundler/vendored_net_http.rb +23 -0
- data/bundler/lib/bundler/vendored_persistent.rb +0 -36
- data/bundler/lib/bundler/{vendored_tmpdir.rb → vendored_pub_grub.rb} +1 -1
- data/bundler/lib/bundler/vendored_securerandom.rb +12 -0
- data/bundler/lib/bundler/vendored_timeout.rb +12 -0
- data/bundler/lib/bundler/vendored_uri.rb +18 -1
- data/bundler/lib/bundler/version.rb +5 -1
- data/bundler/lib/bundler/vlad.rb +1 -1
- data/bundler/lib/bundler/worker.rb +5 -7
- data/bundler/lib/bundler/yaml_serializer.rb +22 -13
- data/bundler/lib/bundler.rb +155 -148
- data/{bundler → doc/bundler}/UPGRADING.md +11 -4
- data/{CONTRIBUTING.md → doc/rubygems/CONTRIBUTING.md} +40 -17
- data/doc/rubygems/POLICIES.md +204 -0
- data/{test/rubygems/fake_certlib/openssl.rb → exe/gem} +5 -1
- data/{bin → exe}/update_rubygems +12 -10
- data/lib/rubygems/available_set.rb +8 -7
- data/lib/rubygems/basic_specification.rb +90 -52
- data/lib/rubygems/bundler_version_finder.rb +6 -6
- data/lib/rubygems/ci_detector.rb +75 -0
- data/lib/rubygems/command.rb +68 -64
- data/lib/rubygems/command_manager.rb +39 -24
- data/lib/rubygems/commands/build_command.rb +14 -19
- data/lib/rubygems/commands/cert_command.rb +39 -39
- data/lib/rubygems/commands/check_command.rb +30 -25
- data/lib/rubygems/commands/cleanup_command.rb +32 -43
- data/lib/rubygems/commands/contents_command.rb +33 -25
- data/lib/rubygems/commands/dependency_command.rb +22 -23
- data/lib/rubygems/commands/environment_command.rb +8 -9
- data/lib/rubygems/commands/exec_command.rb +247 -0
- data/lib/rubygems/commands/fetch_command.rb +25 -10
- data/lib/rubygems/commands/generate_index_command.rb +40 -74
- data/lib/rubygems/commands/help_command.rb +15 -14
- data/lib/rubygems/commands/info_command.rb +5 -5
- data/lib/rubygems/commands/install_command.rb +31 -38
- data/lib/rubygems/commands/list_command.rb +6 -5
- data/lib/rubygems/commands/lock_command.rb +6 -5
- data/lib/rubygems/commands/mirror_command.rb +4 -3
- data/lib/rubygems/commands/open_command.rb +11 -12
- data/lib/rubygems/commands/outdated_command.rb +6 -5
- data/lib/rubygems/commands/owner_command.rb +23 -22
- data/lib/rubygems/commands/pristine_command.rb +83 -62
- data/lib/rubygems/commands/push_command.rb +38 -13
- data/lib/rubygems/commands/query_command.rb +11 -11
- data/lib/rubygems/commands/rdoc_command.rb +23 -28
- data/lib/rubygems/commands/rebuild_command.rb +262 -0
- data/lib/rubygems/commands/search_command.rb +6 -5
- data/lib/rubygems/commands/server_command.rb +4 -3
- data/lib/rubygems/commands/setup_command.rb +137 -154
- data/lib/rubygems/commands/signin_command.rb +10 -9
- data/lib/rubygems/commands/signout_command.rb +8 -7
- data/lib/rubygems/commands/sources_command.rb +34 -33
- data/lib/rubygems/commands/specification_command.rb +25 -20
- data/lib/rubygems/commands/stale_command.rb +5 -4
- data/lib/rubygems/commands/uninstall_command.rb +66 -59
- data/lib/rubygems/commands/unpack_command.rb +23 -30
- data/lib/rubygems/commands/update_command.rb +62 -94
- data/lib/rubygems/commands/which_command.rb +9 -8
- data/lib/rubygems/commands/yank_command.rb +14 -13
- data/lib/rubygems/compatibility.rb +5 -6
- data/lib/rubygems/config_file.rb +160 -50
- data/lib/rubygems/core_ext/kernel_gem.rb +3 -10
- data/lib/rubygems/core_ext/kernel_require.rb +88 -114
- data/lib/rubygems/core_ext/kernel_warn.rb +30 -39
- data/lib/rubygems/core_ext/tcpsocket_init.rb +4 -2
- data/lib/rubygems/defaults.rb +53 -22
- data/lib/rubygems/dependency.rb +34 -36
- data/lib/rubygems/dependency_installer.rb +52 -56
- data/lib/rubygems/dependency_list.rb +8 -7
- data/lib/rubygems/deprecate.rb +80 -75
- data/lib/rubygems/doctor.rb +23 -22
- data/lib/rubygems/errors.rb +6 -8
- data/lib/rubygems/exceptions.rb +20 -18
- data/lib/rubygems/ext/build_error.rb +2 -1
- data/lib/rubygems/ext/builder.rb +56 -32
- data/lib/rubygems/ext/cargo_builder/link_flag_converter.rb +9 -5
- data/lib/rubygems/ext/cargo_builder.rb +158 -131
- data/lib/rubygems/ext/cmake_builder.rb +9 -4
- data/lib/rubygems/ext/configure_builder.rb +9 -3
- data/lib/rubygems/ext/ext_conf_builder.rb +19 -15
- data/lib/rubygems/ext/rake_builder.rb +14 -7
- data/lib/rubygems/ext.rb +8 -7
- data/lib/rubygems/gem_runner.rb +23 -9
- data/lib/rubygems/gemcutter_utilities/webauthn_listener/response.rb +163 -0
- data/lib/rubygems/gemcutter_utilities/webauthn_listener.rb +105 -0
- data/lib/rubygems/gemcutter_utilities/webauthn_poller.rb +80 -0
- data/lib/rubygems/gemcutter_utilities.rb +141 -63
- data/lib/rubygems/gemspec_helpers.rb +19 -0
- data/lib/rubygems/install_default_message.rb +3 -2
- data/lib/rubygems/install_message.rb +3 -2
- data/lib/rubygems/install_update_options.rb +72 -67
- data/lib/rubygems/installer.rb +148 -130
- data/lib/rubygems/installer_uninstaller_utils.rb +2 -4
- data/lib/rubygems/local_remote_options.rb +24 -28
- data/lib/rubygems/name_tuple.rb +10 -11
- data/lib/rubygems/package/digest_io.rb +2 -1
- data/lib/rubygems/package/file_source.rb +3 -2
- data/lib/rubygems/package/io_source.rb +1 -0
- data/lib/rubygems/package/old.rb +11 -10
- data/lib/rubygems/package/source.rb +1 -0
- data/lib/rubygems/package/tar_header.rb +125 -91
- data/lib/rubygems/package/tar_reader/entry.rb +106 -29
- data/lib/rubygems/package/tar_reader.rb +16 -39
- data/lib/rubygems/package/tar_writer.rb +29 -26
- data/lib/rubygems/package.rb +122 -84
- data/lib/rubygems/package_task.rb +7 -6
- data/lib/rubygems/path_support.rb +11 -11
- data/lib/rubygems/platform.rb +119 -70
- data/lib/rubygems/psych_tree.rb +6 -1
- data/lib/rubygems/query_utils.rb +46 -48
- data/lib/rubygems/rdoc.rb +13 -3
- data/lib/rubygems/remote_fetcher.rb +47 -39
- data/lib/rubygems/request/connection_pools.rb +6 -6
- data/lib/rubygems/request/http_pool.rb +2 -1
- data/lib/rubygems/request/https_pool.rb +1 -0
- data/lib/rubygems/request.rb +48 -44
- data/lib/rubygems/request_set/gem_dependency_api.rb +141 -144
- data/lib/rubygems/request_set/lockfile/parser.rb +31 -30
- data/lib/rubygems/request_set/lockfile/tokenizer.rb +24 -14
- data/lib/rubygems/request_set/lockfile.rb +11 -15
- data/lib/rubygems/request_set.rb +25 -23
- data/lib/rubygems/requirement.rb +30 -27
- data/lib/rubygems/resolver/activation_request.rb +7 -10
- data/lib/rubygems/resolver/api_set/gem_parser.rb +7 -3
- data/lib/rubygems/resolver/api_set.rb +20 -13
- data/lib/rubygems/resolver/api_specification.rb +8 -7
- data/lib/rubygems/resolver/best_set.rb +5 -32
- data/lib/rubygems/resolver/composed_set.rb +4 -3
- data/lib/rubygems/resolver/conflict.rb +14 -21
- data/lib/rubygems/resolver/current_set.rb +1 -0
- data/lib/rubygems/resolver/dependency_request.rb +3 -2
- data/lib/rubygems/resolver/git_set.rb +2 -2
- data/lib/rubygems/resolver/git_specification.rb +7 -6
- data/lib/rubygems/resolver/index_set.rb +10 -9
- data/lib/rubygems/resolver/index_specification.rb +8 -6
- data/lib/rubygems/resolver/installed_specification.rb +6 -5
- data/lib/rubygems/resolver/installer_set.rb +19 -22
- data/lib/rubygems/resolver/local_specification.rb +4 -3
- data/lib/rubygems/resolver/lock_set.rb +6 -5
- data/lib/rubygems/resolver/lock_specification.rb +5 -4
- data/lib/rubygems/resolver/requirement_list.rb +1 -0
- data/lib/rubygems/resolver/set.rb +1 -0
- data/lib/rubygems/resolver/source_set.rb +2 -0
- data/lib/rubygems/resolver/spec_specification.rb +8 -0
- data/lib/rubygems/resolver/specification.rb +2 -1
- data/lib/rubygems/resolver/stats.rb +2 -1
- data/lib/rubygems/resolver/vendor_set.rb +2 -1
- data/lib/rubygems/resolver/vendor_specification.rb +4 -3
- data/lib/rubygems/resolver.rb +51 -57
- data/lib/rubygems/s3_uri_signer.rb +18 -16
- data/lib/rubygems/safe_marshal/elements.rb +146 -0
- data/lib/rubygems/safe_marshal/reader.rb +325 -0
- data/lib/rubygems/safe_marshal/visitors/stream_printer.rb +31 -0
- data/lib/rubygems/safe_marshal/visitors/to_ruby.rb +428 -0
- data/lib/rubygems/safe_marshal/visitors/visitor.rb +74 -0
- data/lib/rubygems/safe_marshal.rb +74 -0
- data/lib/rubygems/safe_yaml.rb +14 -26
- data/lib/rubygems/security/policies.rb +48 -49
- data/lib/rubygems/security/policy.rb +25 -28
- data/lib/rubygems/security/signer.rb +16 -7
- data/lib/rubygems/security/trust_dir.rb +12 -13
- data/lib/rubygems/security.rb +40 -66
- data/lib/rubygems/security_option.rb +7 -6
- data/lib/rubygems/shellwords.rb +3 -0
- data/lib/rubygems/source/git.rb +34 -31
- data/lib/rubygems/source/installed.rb +4 -3
- data/lib/rubygems/source/local.rb +49 -49
- data/lib/rubygems/source/lock.rb +2 -3
- data/lib/rubygems/source/specific_file.rb +6 -4
- data/lib/rubygems/source/vendor.rb +1 -2
- data/lib/rubygems/source.rb +37 -31
- data/lib/rubygems/source_list.rb +8 -8
- data/lib/rubygems/spec_fetcher.rb +95 -66
- data/lib/rubygems/specification.rb +342 -404
- data/lib/rubygems/specification_policy.rb +147 -75
- data/lib/rubygems/specification_record.rb +212 -0
- data/lib/rubygems/stub_specification.rb +56 -30
- data/lib/rubygems/target_rbconfig.rb +50 -0
- data/lib/rubygems/text.rb +3 -4
- data/lib/rubygems/uninstaller.rb +67 -48
- data/lib/rubygems/update_suggestion.rb +56 -0
- data/lib/rubygems/uri.rb +10 -10
- data/lib/rubygems/uri_formatter.rb +2 -2
- data/lib/rubygems/user_interaction.rb +50 -40
- data/lib/rubygems/util/licenses.rb +310 -39
- data/lib/rubygems/util/list.rb +4 -1
- data/lib/rubygems/util.rb +19 -20
- data/lib/rubygems/validator.rb +15 -14
- data/lib/rubygems/vendor/molinillo/.document +1 -0
- data/lib/rubygems/vendor/molinillo/lib/molinillo/delegates/resolution_state.rb +57 -0
- data/{bundler/lib/bundler → lib/rubygems}/vendor/molinillo/lib/molinillo/delegates/specification_provider.rb +11 -11
- data/{bundler/lib/bundler → lib/rubygems}/vendor/molinillo/lib/molinillo/dependency_graph/action.rb +1 -1
- data/{bundler/lib/bundler → lib/rubygems}/vendor/molinillo/lib/molinillo/dependency_graph/add_edge_no_circular.rb +1 -1
- data/{bundler/lib/bundler → lib/rubygems}/vendor/molinillo/lib/molinillo/dependency_graph/add_vertex.rb +1 -1
- data/{bundler/lib/bundler → lib/rubygems}/vendor/molinillo/lib/molinillo/dependency_graph/delete_edge.rb +1 -1
- data/{bundler/lib/bundler → lib/rubygems}/vendor/molinillo/lib/molinillo/dependency_graph/detach_vertex_named.rb +1 -1
- data/{bundler/lib/bundler → lib/rubygems}/vendor/molinillo/lib/molinillo/dependency_graph/log.rb +1 -1
- data/{bundler/lib/bundler → lib/rubygems}/vendor/molinillo/lib/molinillo/dependency_graph/set_payload.rb +1 -1
- data/{bundler/lib/bundler → lib/rubygems}/vendor/molinillo/lib/molinillo/dependency_graph/tag.rb +1 -1
- data/{bundler/lib/bundler → lib/rubygems}/vendor/molinillo/lib/molinillo/dependency_graph/vertex.rb +1 -1
- data/{bundler/lib/bundler → lib/rubygems}/vendor/molinillo/lib/molinillo/dependency_graph.rb +3 -3
- data/{bundler/lib/bundler → lib/rubygems}/vendor/molinillo/lib/molinillo/errors.rb +1 -1
- data/lib/rubygems/vendor/molinillo/lib/molinillo/gem_metadata.rb +6 -0
- data/{bundler/lib/bundler → lib/rubygems}/vendor/molinillo/lib/molinillo/modules/specification_provider.rb +2 -2
- data/{bundler/lib/bundler → lib/rubygems}/vendor/molinillo/lib/molinillo/modules/ui.rb +1 -1
- data/{bundler/lib/bundler → lib/rubygems}/vendor/molinillo/lib/molinillo/resolution.rb +4 -4
- data/{bundler/lib/bundler → lib/rubygems}/vendor/molinillo/lib/molinillo/resolver.rb +1 -1
- data/{bundler/lib/bundler → lib/rubygems}/vendor/molinillo/lib/molinillo/state.rb +1 -1
- data/{bundler/lib/bundler → lib/rubygems}/vendor/molinillo/lib/molinillo.rb +2 -2
- data/lib/rubygems/vendor/net-http/.document +1 -0
- data/lib/rubygems/vendor/net-http/COPYING +56 -0
- data/lib/rubygems/vendor/net-http/lib/net/http/exceptions.rb +34 -0
- data/lib/rubygems/vendor/net-http/lib/net/http/generic_request.rb +414 -0
- data/lib/rubygems/vendor/net-http/lib/net/http/header.rb +981 -0
- data/lib/rubygems/vendor/net-http/lib/net/http/proxy_delta.rb +17 -0
- data/lib/rubygems/vendor/net-http/lib/net/http/request.rb +88 -0
- data/lib/rubygems/vendor/net-http/lib/net/http/requests.rb +430 -0
- data/lib/rubygems/vendor/net-http/lib/net/http/response.rb +738 -0
- data/lib/rubygems/vendor/net-http/lib/net/http/responses.rb +1174 -0
- data/lib/rubygems/vendor/net-http/lib/net/http/status.rb +84 -0
- data/lib/rubygems/vendor/net-http/lib/net/http.rb +2580 -0
- data/lib/rubygems/vendor/net-http/lib/net/https.rb +23 -0
- data/lib/rubygems/vendor/net-protocol/.document +1 -0
- data/lib/rubygems/vendor/net-protocol/lib/net/protocol.rb +544 -0
- data/lib/rubygems/vendor/optparse/.document +1 -0
- data/lib/rubygems/vendor/optparse/COPYING +56 -0
- data/lib/rubygems/{optparse → vendor/optparse}/lib/optparse/ac.rb +16 -0
- data/lib/rubygems/{optparse → vendor/optparse}/lib/optparse/kwargs.rb +8 -3
- data/lib/rubygems/vendor/optparse/lib/optparse/uri.rb +7 -0
- data/lib/rubygems/{optparse → vendor/optparse}/lib/optparse/version.rb +9 -0
- data/lib/rubygems/{optparse → vendor/optparse}/lib/optparse.rb +206 -83
- data/lib/rubygems/vendor/resolv/.document +1 -0
- data/lib/rubygems/vendor/resolv/COPYING +56 -0
- data/lib/rubygems/vendor/resolv/lib/resolv.rb +3455 -0
- data/lib/rubygems/vendor/securerandom/.document +1 -0
- data/lib/rubygems/vendor/securerandom/COPYING +56 -0
- data/lib/rubygems/vendor/securerandom/lib/securerandom.rb +102 -0
- data/lib/rubygems/vendor/timeout/.document +1 -0
- data/lib/rubygems/vendor/timeout/COPYING +56 -0
- data/lib/rubygems/vendor/timeout/lib/timeout.rb +198 -0
- data/lib/rubygems/vendor/tsort/.document +1 -0
- data/lib/rubygems/vendor/tsort/lib/tsort.rb +455 -0
- data/lib/rubygems/vendor/uri/.document +1 -0
- data/lib/rubygems/vendor/uri/COPYING +56 -0
- data/lib/rubygems/vendor/uri/lib/uri/common.rb +876 -0
- data/lib/rubygems/vendor/uri/lib/uri/file.rb +100 -0
- data/lib/rubygems/vendor/uri/lib/uri/ftp.rb +267 -0
- data/lib/rubygems/vendor/uri/lib/uri/generic.rb +1578 -0
- data/lib/rubygems/vendor/uri/lib/uri/http.rb +125 -0
- data/lib/rubygems/vendor/uri/lib/uri/https.rb +23 -0
- data/lib/rubygems/vendor/uri/lib/uri/ldap.rb +261 -0
- data/lib/rubygems/vendor/uri/lib/uri/ldaps.rb +22 -0
- data/lib/rubygems/vendor/uri/lib/uri/mailto.rb +293 -0
- data/lib/rubygems/vendor/uri/lib/uri/rfc2396_parser.rb +546 -0
- data/lib/rubygems/vendor/uri/lib/uri/rfc3986_parser.rb +206 -0
- data/lib/rubygems/vendor/uri/lib/uri/version.rb +6 -0
- data/lib/rubygems/vendor/uri/lib/uri/ws.rb +83 -0
- data/lib/rubygems/vendor/uri/lib/uri/wss.rb +23 -0
- data/lib/rubygems/vendor/uri/lib/uri.rb +104 -0
- data/{bundler/lib/bundler → lib/rubygems}/vendored_molinillo.rb +0 -1
- data/lib/rubygems/vendored_net_http.rb +5 -0
- data/lib/rubygems/vendored_optparse.rb +3 -0
- data/lib/rubygems/vendored_securerandom.rb +3 -0
- data/lib/rubygems/vendored_timeout.rb +5 -0
- data/lib/rubygems/vendored_tsort.rb +3 -0
- data/lib/rubygems/version.rb +57 -45
- data/lib/rubygems/version_option.rb +6 -8
- data/lib/rubygems/yaml_serializer.rb +98 -0
- data/lib/rubygems.rb +191 -133
- data/rubygems-update.gemspec +16 -9
- data/setup.rb +12 -9
- metadata +233 -307
- data/POLICIES.md +0 -100
- data/bin/gem +0 -13
- data/bundler/lib/bundler/dep_proxy.rb +0 -55
- data/bundler/lib/bundler/templates/gems.rb +0 -5
- data/bundler/lib/bundler/templates/newgem/ext/newgem/extconf.rb.tt +0 -5
- data/bundler/lib/bundler/templates/newgem/travis.yml.tt +0 -6
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/delegates/resolution_state.rb +0 -57
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/gem_metadata.rb +0 -6
- data/bundler/lib/bundler/vendor/tmpdir/lib/tmpdir.rb +0 -154
- data/bundler/lib/bundler/version_ranges.rb +0 -122
- data/lib/rubygems/indexer.rb +0 -427
- data/lib/rubygems/mock_gem_ui.rb +0 -85
- data/lib/rubygems/optparse/lib/optparse/uri.rb +0 -7
- data/lib/rubygems/optparse.rb +0 -3
- data/lib/rubygems/resolver/molinillo/LICENSE +0 -9
- data/lib/rubygems/resolver/molinillo/lib/molinillo/delegates/resolution_state.rb +0 -57
- data/lib/rubygems/resolver/molinillo/lib/molinillo/delegates/specification_provider.rb +0 -88
- data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/action.rb +0 -36
- data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/add_edge_no_circular.rb +0 -66
- data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/add_vertex.rb +0 -62
- data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/delete_edge.rb +0 -63
- data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/detach_vertex_named.rb +0 -61
- data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/log.rb +0 -126
- data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/set_payload.rb +0 -46
- data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/tag.rb +0 -36
- data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/vertex.rb +0 -164
- data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph.rb +0 -255
- data/lib/rubygems/resolver/molinillo/lib/molinillo/errors.rb +0 -143
- data/lib/rubygems/resolver/molinillo/lib/molinillo/gem_metadata.rb +0 -6
- data/lib/rubygems/resolver/molinillo/lib/molinillo/modules/specification_provider.rb +0 -112
- data/lib/rubygems/resolver/molinillo/lib/molinillo/modules/ui.rb +0 -67
- data/lib/rubygems/resolver/molinillo/lib/molinillo/resolution.rb +0 -839
- data/lib/rubygems/resolver/molinillo/lib/molinillo/resolver.rb +0 -46
- data/lib/rubygems/resolver/molinillo/lib/molinillo/state.rb +0 -58
- data/lib/rubygems/resolver/molinillo/lib/molinillo.rb +0 -11
- data/lib/rubygems/resolver/molinillo.rb +0 -2
- data/lib/rubygems/tsort/LICENSE.txt +0 -22
- data/lib/rubygems/tsort/lib/tsort.rb +0 -454
- data/lib/rubygems/tsort.rb +0 -3
- data/test/rubygems/alternate_cert.pem +0 -19
- data/test/rubygems/alternate_cert_32.pem +0 -19
- data/test/rubygems/alternate_key.pem +0 -27
- data/test/rubygems/bad_rake.rb +0 -2
- data/test/rubygems/ca_cert.pem +0 -77
- data/test/rubygems/child_cert.pem +0 -20
- data/test/rubygems/child_cert_32.pem +0 -20
- data/test/rubygems/child_key.pem +0 -27
- data/test/rubygems/client.pem +0 -107
- data/test/rubygems/data/excon-0.7.7.gemspec.rz +0 -0
- data/test/rubygems/data/gem-private_key.pem +0 -27
- data/test/rubygems/data/gem-public_cert.pem +0 -20
- data/test/rubygems/data/null-required-ruby-version.gemspec.rz +0 -0
- data/test/rubygems/data/null-required-rubygems-version.gemspec.rz +0 -0
- data/test/rubygems/data/pry-0.4.7.gemspec.rz +0 -0
- data/test/rubygems/encrypted_private_key.pem +0 -30
- data/test/rubygems/expired_cert.pem +0 -19
- data/test/rubygems/foo/discover.rb +0 -1
- data/test/rubygems/future_cert.pem +0 -19
- data/test/rubygems/future_cert_32.pem +0 -19
- data/test/rubygems/good_rake.rb +0 -2
- data/test/rubygems/grandchild_cert.pem +0 -20
- data/test/rubygems/grandchild_cert_32.pem +0 -20
- data/test/rubygems/grandchild_key.pem +0 -27
- data/test/rubygems/helper.rb +0 -1622
- data/test/rubygems/installer_test_case.rb +0 -247
- data/test/rubygems/invalid_client.pem +0 -49
- data/test/rubygems/invalid_issuer_cert.pem +0 -20
- data/test/rubygems/invalid_issuer_cert_32.pem +0 -20
- data/test/rubygems/invalid_key.pem +0 -27
- data/test/rubygems/invalid_signer_cert.pem +0 -19
- data/test/rubygems/invalid_signer_cert_32.pem +0 -19
- data/test/rubygems/invalidchild_cert.pem +0 -20
- data/test/rubygems/invalidchild_cert_32.pem +0 -20
- data/test/rubygems/invalidchild_key.pem +0 -27
- data/test/rubygems/package/tar_test_case.rb +0 -139
- data/test/rubygems/packages/ascii_binder-0.1.10.1.gem +0 -0
- data/test/rubygems/packages/ill-formatted-platform-1.0.0.10.gem +0 -0
- data/test/rubygems/plugin/exception/rubygems_plugin.rb +0 -3
- data/test/rubygems/plugin/load/rubygems_plugin.rb +0 -4
- data/test/rubygems/plugin/standarderror/rubygems_plugin.rb +0 -3
- data/test/rubygems/private3072_key.pem +0 -40
- data/test/rubygems/private_ec_key.pem +0 -9
- data/test/rubygems/private_key.pem +0 -27
- data/test/rubygems/public3072_cert.pem +0 -25
- data/test/rubygems/public_cert.pem +0 -20
- data/test/rubygems/public_cert_32.pem +0 -19
- data/test/rubygems/public_key.pem +0 -9
- data/test/rubygems/rubygems/commands/crash_command.rb +0 -4
- data/test/rubygems/rubygems_plugin.rb +0 -23
- data/test/rubygems/sff/discover.rb +0 -1
- data/test/rubygems/simple_gem.rb +0 -67
- data/test/rubygems/specifications/bar-0.0.2.gemspec +0 -7
- data/test/rubygems/specifications/foo-0.0.1-x86-mswin32.gemspec +0 -0
- data/test/rubygems/specifications/rubyforge-0.0.1.gemspec +0 -12
- data/test/rubygems/ssl_cert.pem +0 -80
- data/test/rubygems/ssl_key.pem +0 -27
- data/test/rubygems/test_bundled_ca.rb +0 -60
- data/test/rubygems/test_config.rb +0 -27
- data/test/rubygems/test_deprecate.rb +0 -157
- data/test/rubygems/test_exit.rb +0 -11
- data/test/rubygems/test_gem.rb +0 -2112
- data/test/rubygems/test_gem_available_set.rb +0 -129
- data/test/rubygems/test_gem_bundler_version_finder.rb +0 -125
- data/test/rubygems/test_gem_command.rb +0 -400
- data/test/rubygems/test_gem_command_manager.rb +0 -334
- data/test/rubygems/test_gem_commands_build_command.rb +0 -727
- data/test/rubygems/test_gem_commands_cert_command.rb +0 -867
- data/test/rubygems/test_gem_commands_check_command.rb +0 -67
- data/test/rubygems/test_gem_commands_cleanup_command.rb +0 -291
- data/test/rubygems/test_gem_commands_contents_command.rb +0 -270
- data/test/rubygems/test_gem_commands_dependency_command.rb +0 -227
- data/test/rubygems/test_gem_commands_environment_command.rb +0 -167
- data/test/rubygems/test_gem_commands_fetch_command.rb +0 -257
- data/test/rubygems/test_gem_commands_generate_index_command.rb +0 -80
- data/test/rubygems/test_gem_commands_help_command.rb +0 -93
- data/test/rubygems/test_gem_commands_info_command.rb +0 -43
- data/test/rubygems/test_gem_commands_install_command.rb +0 -1553
- data/test/rubygems/test_gem_commands_list_command.rb +0 -32
- data/test/rubygems/test_gem_commands_lock_command.rb +0 -66
- data/test/rubygems/test_gem_commands_mirror.rb +0 -19
- data/test/rubygems/test_gem_commands_open_command.rb +0 -97
- data/test/rubygems/test_gem_commands_outdated_command.rb +0 -49
- data/test/rubygems/test_gem_commands_owner_command.rb +0 -326
- data/test/rubygems/test_gem_commands_pristine_command.rb +0 -659
- data/test/rubygems/test_gem_commands_push_command.rb +0 -477
- data/test/rubygems/test_gem_commands_query_command.rb +0 -857
- data/test/rubygems/test_gem_commands_search_command.rb +0 -15
- data/test/rubygems/test_gem_commands_server_command.rb +0 -19
- data/test/rubygems/test_gem_commands_setup_command.rb +0 -447
- data/test/rubygems/test_gem_commands_signin_command.rb +0 -219
- data/test/rubygems/test_gem_commands_signout_command.rb +0 -30
- data/test/rubygems/test_gem_commands_sources_command.rb +0 -534
- data/test/rubygems/test_gem_commands_specification_command.rb +0 -276
- data/test/rubygems/test_gem_commands_stale_command.rb +0 -42
- data/test/rubygems/test_gem_commands_uninstall_command.rb +0 -504
- data/test/rubygems/test_gem_commands_unpack_command.rb +0 -223
- data/test/rubygems/test_gem_commands_update_command.rb +0 -835
- data/test/rubygems/test_gem_commands_which_command.rb +0 -84
- data/test/rubygems/test_gem_commands_yank_command.rb +0 -180
- data/test/rubygems/test_gem_config_file.rb +0 -504
- data/test/rubygems/test_gem_dependency.rb +0 -395
- data/test/rubygems/test_gem_dependency_installer.rb +0 -1155
- data/test/rubygems/test_gem_dependency_list.rb +0 -264
- data/test/rubygems/test_gem_dependency_resolution_error.rb +0 -26
- data/test/rubygems/test_gem_doctor.rb +0 -194
- data/test/rubygems/test_gem_ext_builder.rb +0 -338
- data/test/rubygems/test_gem_ext_cargo_builder/custom_name/.gitignore +0 -1
- data/test/rubygems/test_gem_ext_cargo_builder/custom_name/Cargo.lock +0 -243
- data/test/rubygems/test_gem_ext_cargo_builder/custom_name/Cargo.toml +0 -10
- data/test/rubygems/test_gem_ext_cargo_builder/custom_name/build.rb +0 -21
- data/test/rubygems/test_gem_ext_cargo_builder/custom_name/custom_name.gemspec +0 -10
- data/test/rubygems/test_gem_ext_cargo_builder/custom_name/src/lib.rs +0 -27
- data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/.gitignore +0 -1
- data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/Cargo.lock +0 -243
- data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/Cargo.toml +0 -10
- data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/build.rb +0 -21
- data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/rust_ruby_example.gemspec +0 -8
- data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/src/lib.rs +0 -39
- data/test/rubygems/test_gem_ext_cargo_builder.rb +0 -178
- data/test/rubygems/test_gem_ext_cargo_builder_link_flag_converter.rb +0 -33
- data/test/rubygems/test_gem_ext_cargo_builder_unit.rb +0 -75
- data/test/rubygems/test_gem_ext_cmake_builder.rb +0 -83
- data/test/rubygems/test_gem_ext_configure_builder.rb +0 -79
- data/test/rubygems/test_gem_ext_ext_conf_builder.rb +0 -230
- data/test/rubygems/test_gem_ext_rake_builder.rb +0 -112
- data/test/rubygems/test_gem_gem_runner.rb +0 -113
- data/test/rubygems/test_gem_gemcutter_utilities.rb +0 -272
- data/test/rubygems/test_gem_impossible_dependencies_error.rb +0 -59
- data/test/rubygems/test_gem_indexer.rb +0 -361
- data/test/rubygems/test_gem_install_update_options.rb +0 -207
- data/test/rubygems/test_gem_installer.rb +0 -2394
- data/test/rubygems/test_gem_local_remote_options.rb +0 -132
- data/test/rubygems/test_gem_name_tuple.rb +0 -42
- data/test/rubygems/test_gem_package.rb +0 -1178
- data/test/rubygems/test_gem_package_old.rb +0 -90
- data/test/rubygems/test_gem_package_tar_header.rb +0 -225
- data/test/rubygems/test_gem_package_tar_reader.rb +0 -87
- data/test/rubygems/test_gem_package_tar_reader_entry.rb +0 -152
- data/test/rubygems/test_gem_package_tar_writer.rb +0 -330
- data/test/rubygems/test_gem_package_task.rb +0 -117
- data/test/rubygems/test_gem_path_support.rb +0 -138
- data/test/rubygems/test_gem_platform.rb +0 -391
- data/test/rubygems/test_gem_rdoc.rb +0 -136
- data/test/rubygems/test_gem_remote_fetcher.rb +0 -1226
- data/test/rubygems/test_gem_request.rb +0 -541
- data/test/rubygems/test_gem_request_connection_pools.rb +0 -150
- data/test/rubygems/test_gem_request_set.rb +0 -671
- data/test/rubygems/test_gem_request_set_gem_dependency_api.rb +0 -847
- data/test/rubygems/test_gem_request_set_lockfile.rb +0 -468
- data/test/rubygems/test_gem_request_set_lockfile_parser.rb +0 -543
- data/test/rubygems/test_gem_request_set_lockfile_tokenizer.rb +0 -306
- data/test/rubygems/test_gem_requirement.rb +0 -498
- data/test/rubygems/test_gem_resolver.rb +0 -791
- data/test/rubygems/test_gem_resolver_activation_request.rb +0 -42
- data/test/rubygems/test_gem_resolver_api_set.rb +0 -209
- data/test/rubygems/test_gem_resolver_api_specification.rb +0 -166
- data/test/rubygems/test_gem_resolver_best_set.rb +0 -158
- data/test/rubygems/test_gem_resolver_composed_set.rb +0 -43
- data/test/rubygems/test_gem_resolver_conflict.rb +0 -81
- data/test/rubygems/test_gem_resolver_dependency_request.rb +0 -82
- data/test/rubygems/test_gem_resolver_git_set.rb +0 -187
- data/test/rubygems/test_gem_resolver_git_specification.rb +0 -113
- data/test/rubygems/test_gem_resolver_index_set.rb +0 -87
- data/test/rubygems/test_gem_resolver_index_specification.rb +0 -92
- data/test/rubygems/test_gem_resolver_installed_specification.rb +0 -46
- data/test/rubygems/test_gem_resolver_installer_set.rb +0 -275
- data/test/rubygems/test_gem_resolver_local_specification.rb +0 -43
- data/test/rubygems/test_gem_resolver_lock_set.rb +0 -61
- data/test/rubygems/test_gem_resolver_lock_specification.rb +0 -97
- data/test/rubygems/test_gem_resolver_requirement_list.rb +0 -18
- data/test/rubygems/test_gem_resolver_specification.rb +0 -62
- data/test/rubygems/test_gem_resolver_vendor_set.rb +0 -81
- data/test/rubygems/test_gem_resolver_vendor_specification.rb +0 -81
- data/test/rubygems/test_gem_security.rb +0 -340
- data/test/rubygems/test_gem_security_policy.rb +0 -535
- data/test/rubygems/test_gem_security_signer.rb +0 -217
- data/test/rubygems/test_gem_security_trust_dir.rb +0 -98
- data/test/rubygems/test_gem_silent_ui.rb +0 -116
- data/test/rubygems/test_gem_source.rb +0 -253
- data/test/rubygems/test_gem_source_fetch_problem.rb +0 -36
- data/test/rubygems/test_gem_source_git.rb +0 -303
- data/test/rubygems/test_gem_source_installed.rb +0 -34
- data/test/rubygems/test_gem_source_list.rb +0 -118
- data/test/rubygems/test_gem_source_local.rb +0 -106
- data/test/rubygems/test_gem_source_lock.rb +0 -112
- data/test/rubygems/test_gem_source_specific_file.rb +0 -75
- data/test/rubygems/test_gem_source_subpath_problem.rb +0 -49
- data/test/rubygems/test_gem_source_vendor.rb +0 -29
- data/test/rubygems/test_gem_spec_fetcher.rb +0 -337
- data/test/rubygems/test_gem_specification.rb +0 -3756
- data/test/rubygems/test_gem_stream_ui.rb +0 -224
- data/test/rubygems/test_gem_stub_specification.rb +0 -277
- data/test/rubygems/test_gem_text.rb +0 -102
- data/test/rubygems/test_gem_uninstaller.rb +0 -674
- data/test/rubygems/test_gem_unsatisfiable_dependency_error.rb +0 -30
- data/test/rubygems/test_gem_uri.rb +0 -39
- data/test/rubygems/test_gem_uri_formatter.rb +0 -26
- data/test/rubygems/test_gem_util.rb +0 -90
- data/test/rubygems/test_gem_validator.rb +0 -42
- data/test/rubygems/test_gem_version.rb +0 -295
- data/test/rubygems/test_gem_version_option.rb +0 -164
- data/test/rubygems/test_kernel.rb +0 -129
- data/test/rubygems/test_project_sanity.rb +0 -20
- data/test/rubygems/test_remote_fetch_error.rb +0 -19
- data/test/rubygems/test_require.rb +0 -719
- data/test/rubygems/test_rubygems.rb +0 -74
- data/test/rubygems/utilities.rb +0 -371
- data/test/rubygems/wrong_key_cert.pem +0 -19
- data/test/rubygems/wrong_key_cert_32.pem +0 -19
- data/test/test_changelog_generator.rb +0 -17
- /data/{lib/rubygems/optparse → bundler/lib/bundler/vendor/connection_pool}/.document +0 -0
- /data/{lib/rubygems/tsort → bundler/lib/bundler/vendor/fileutils}/.document +0 -0
- /data/{lib/rubygems/optparse → bundler/lib/bundler/vendor/fileutils}/COPYING +0 -0
- /data/{MAINTAINERS.txt → doc/MAINTAINERS.txt} +0 -0
- /data/{UPGRADING.md → doc/rubygems/UPGRADING.md} +0 -0
- /data/{bundler/lib/bundler → lib/rubygems}/vendor/molinillo/LICENSE +0 -0
- /data/{bundler/lib/bundler/vendor/fileutils → lib/rubygems/vendor/net-protocol}/LICENSE.txt +0 -0
- /data/lib/rubygems/{optparse → vendor/optparse}/lib/optionparser.rb +0 -0
- /data/lib/rubygems/{optparse → vendor/optparse}/lib/optparse/date.rb +0 -0
- /data/lib/rubygems/{optparse → vendor/optparse}/lib/optparse/shellwords.rb +0 -0
- /data/lib/rubygems/{optparse → vendor/optparse}/lib/optparse/time.rb +0 -0
- /data/{bundler/lib/bundler/vendor/uri → lib/rubygems/vendor/tsort}/LICENSE.txt +0 -0
data/bundler/lib/bundler.rb
CHANGED
@@ -10,14 +10,13 @@ require_relative "bundler/plugin"
|
|
10
10
|
require_relative "bundler/rubygems_ext"
|
11
11
|
require_relative "bundler/rubygems_integration"
|
12
12
|
require_relative "bundler/version"
|
13
|
-
require_relative "bundler/constants"
|
14
13
|
require_relative "bundler/current_ruby"
|
15
14
|
require_relative "bundler/build_metadata"
|
16
15
|
|
17
16
|
# Bundler provides a consistent environment for Ruby projects by
|
18
17
|
# tracking and installing the exact gems and versions that are needed.
|
19
18
|
#
|
20
|
-
#
|
19
|
+
# Bundler is a part of Ruby's standard library.
|
21
20
|
#
|
22
21
|
# Bundler is used by creating _gemfiles_ listing all the project dependencies
|
23
22
|
# and (optionally) their versions and then using
|
@@ -39,9 +38,12 @@ module Bundler
|
|
39
38
|
environment_preserver.replace_with_backup
|
40
39
|
SUDO_MUTEX = Thread::Mutex.new
|
41
40
|
|
41
|
+
autoload :Checksum, File.expand_path("bundler/checksum", __dir__)
|
42
|
+
autoload :CLI, File.expand_path("bundler/cli", __dir__)
|
43
|
+
autoload :CIDetector, File.expand_path("bundler/ci_detector", __dir__)
|
44
|
+
autoload :CompactIndexClient, File.expand_path("bundler/compact_index_client", __dir__)
|
42
45
|
autoload :Definition, File.expand_path("bundler/definition", __dir__)
|
43
46
|
autoload :Dependency, File.expand_path("bundler/dependency", __dir__)
|
44
|
-
autoload :DepProxy, File.expand_path("bundler/dep_proxy", __dir__)
|
45
47
|
autoload :Deprecate, File.expand_path("bundler/deprecate", __dir__)
|
46
48
|
autoload :Digest, File.expand_path("bundler/digest", __dir__)
|
47
49
|
autoload :Dsl, File.expand_path("bundler/dsl", __dir__)
|
@@ -49,6 +51,7 @@ module Bundler
|
|
49
51
|
autoload :Env, File.expand_path("bundler/env", __dir__)
|
50
52
|
autoload :Fetcher, File.expand_path("bundler/fetcher", __dir__)
|
51
53
|
autoload :FeatureFlag, File.expand_path("bundler/feature_flag", __dir__)
|
54
|
+
autoload :FREEBSD, File.expand_path("bundler/constants", __dir__)
|
52
55
|
autoload :GemHelper, File.expand_path("bundler/gem_helper", __dir__)
|
53
56
|
autoload :GemHelpers, File.expand_path("bundler/gem_helpers", __dir__)
|
54
57
|
autoload :GemVersionPromoter, File.expand_path("bundler/gem_version_promoter", __dir__)
|
@@ -58,7 +61,9 @@ module Bundler
|
|
58
61
|
autoload :Installer, File.expand_path("bundler/installer", __dir__)
|
59
62
|
autoload :LazySpecification, File.expand_path("bundler/lazy_specification", __dir__)
|
60
63
|
autoload :LockfileParser, File.expand_path("bundler/lockfile_parser", __dir__)
|
61
|
-
autoload :
|
64
|
+
autoload :MatchRemoteMetadata, File.expand_path("bundler/match_remote_metadata", __dir__)
|
65
|
+
autoload :Materialization, File.expand_path("bundler/materialization", __dir__)
|
66
|
+
autoload :NULL, File.expand_path("bundler/constants", __dir__)
|
62
67
|
autoload :ProcessLock, File.expand_path("bundler/process_lock", __dir__)
|
63
68
|
autoload :RemoteSpecification, File.expand_path("bundler/remote_specification", __dir__)
|
64
69
|
autoload :Resolver, File.expand_path("bundler/resolver", __dir__)
|
@@ -76,11 +81,13 @@ module Bundler
|
|
76
81
|
autoload :StubSpecification, File.expand_path("bundler/stub_specification", __dir__)
|
77
82
|
autoload :UI, File.expand_path("bundler/ui", __dir__)
|
78
83
|
autoload :URICredentialsFilter, File.expand_path("bundler/uri_credentials_filter", __dir__)
|
79
|
-
autoload :
|
84
|
+
autoload :URINormalizer, File.expand_path("bundler/uri_normalizer", __dir__)
|
85
|
+
autoload :WINDOWS, File.expand_path("bundler/constants", __dir__)
|
86
|
+
autoload :SafeMarshal, File.expand_path("bundler/safe_marshal", __dir__)
|
80
87
|
|
81
88
|
class << self
|
82
89
|
def configure
|
83
|
-
@
|
90
|
+
@configure ||= configure_gem_home_and_path
|
84
91
|
end
|
85
92
|
|
86
93
|
def ui
|
@@ -98,9 +105,7 @@ module Bundler
|
|
98
105
|
end
|
99
106
|
|
100
107
|
def create_bundle_path
|
101
|
-
|
102
|
-
mkdir_p(p)
|
103
|
-
end unless bundle_path.exist?
|
108
|
+
mkdir_p(bundle_path) unless bundle_path.exist?
|
104
109
|
|
105
110
|
@bundle_path = bundle_path.realpath
|
106
111
|
rescue Errno::EEXIST
|
@@ -117,7 +122,7 @@ module Bundler
|
|
117
122
|
@bin_path ||= begin
|
118
123
|
path = settings[:bin] || "bin"
|
119
124
|
path = Pathname.new(path).expand_path(root).expand_path
|
120
|
-
|
125
|
+
mkdir_p(path)
|
121
126
|
path
|
122
127
|
end
|
123
128
|
end
|
@@ -165,6 +170,29 @@ module Bundler
|
|
165
170
|
end
|
166
171
|
end
|
167
172
|
|
173
|
+
def auto_switch
|
174
|
+
self_manager.restart_with_locked_bundler_if_needed
|
175
|
+
end
|
176
|
+
|
177
|
+
# Automatically install dependencies if Bundler.settings[:auto_install] exists.
|
178
|
+
# This is set through config cmd `bundle config set --global auto_install 1`.
|
179
|
+
#
|
180
|
+
# Note that this method `nil`s out the global Definition object, so it
|
181
|
+
# should be called first, before you instantiate anything like an
|
182
|
+
# `Installer` that'll keep a reference to the old one instead.
|
183
|
+
def auto_install
|
184
|
+
return unless settings[:auto_install]
|
185
|
+
|
186
|
+
begin
|
187
|
+
definition.specs
|
188
|
+
rescue GemNotFound, GitError
|
189
|
+
ui.info "Automatically installing missing gems."
|
190
|
+
reset!
|
191
|
+
CLI::Install.new({}).run
|
192
|
+
reset!
|
193
|
+
end
|
194
|
+
end
|
195
|
+
|
168
196
|
# Setups Bundler environment (see Bundler.setup) if it is not already set,
|
169
197
|
# and loads all gems from groups specified. Unlike ::setup, can be called
|
170
198
|
# multiple times with different groups (if they were allowed by setup).
|
@@ -184,6 +212,7 @@ module Bundler
|
|
184
212
|
# Bundler.require(:test) # requires second_gem
|
185
213
|
#
|
186
214
|
def require(*groups)
|
215
|
+
load_plugins
|
187
216
|
setup(*groups).require(*groups)
|
188
217
|
end
|
189
218
|
|
@@ -192,7 +221,7 @@ module Bundler
|
|
192
221
|
end
|
193
222
|
|
194
223
|
def environment
|
195
|
-
SharedHelpers.major_deprecation 2, "Bundler.environment has been removed in favor of Bundler.load", :
|
224
|
+
SharedHelpers.major_deprecation 2, "Bundler.environment has been removed in favor of Bundler.load", print_caller_location: true
|
196
225
|
load
|
197
226
|
end
|
198
227
|
|
@@ -200,19 +229,21 @@ module Bundler
|
|
200
229
|
#
|
201
230
|
# @param unlock [Hash, Boolean, nil] Gems that have been requested
|
202
231
|
# to be updated or true if all gems should be updated
|
232
|
+
# @param lockfile [Pathname] Path to Gemfile.lock
|
203
233
|
# @return [Bundler::Definition]
|
204
|
-
def definition(unlock = nil)
|
234
|
+
def definition(unlock = nil, lockfile = default_lockfile)
|
205
235
|
@definition = nil if unlock
|
206
236
|
@definition ||= begin
|
207
237
|
configure
|
208
|
-
Definition.build(default_gemfile,
|
238
|
+
Definition.build(default_gemfile, lockfile, unlock)
|
209
239
|
end
|
210
240
|
end
|
211
241
|
|
212
242
|
def frozen_bundle?
|
213
|
-
frozen = settings[:
|
214
|
-
frozen
|
215
|
-
|
243
|
+
frozen = settings[:frozen]
|
244
|
+
return frozen unless frozen.nil?
|
245
|
+
|
246
|
+
settings[:deployment]
|
216
247
|
end
|
217
248
|
|
218
249
|
def locked_gems
|
@@ -225,12 +256,6 @@ module Bundler
|
|
225
256
|
end
|
226
257
|
end
|
227
258
|
|
228
|
-
def most_specific_locked_platform?(platform)
|
229
|
-
return false unless defined?(@definition) && @definition
|
230
|
-
|
231
|
-
definition.most_specific_locked_platform == platform
|
232
|
-
end
|
233
|
-
|
234
259
|
def ruby_scope
|
235
260
|
"#{Bundler.rubygems.ruby_engine}/#{RbConfig::CONFIG["ruby_version"]}"
|
236
261
|
end
|
@@ -329,20 +354,12 @@ module Bundler
|
|
329
354
|
|
330
355
|
def rm_rf(path)
|
331
356
|
FileUtils.remove_entry_secure(path) if path && File.exist?(path)
|
332
|
-
rescue ArgumentError
|
333
|
-
message = <<EOF
|
334
|
-
It is a security vulnerability to allow your home directory to be world-writable, and bundler can not continue.
|
335
|
-
You should probably consider fixing this issue by running `chmod o-w ~` on *nix.
|
336
|
-
Please refer to https://ruby-doc.org/stdlib-2.1.2/libdoc/fileutils/rdoc/FileUtils.html#method-c-remove_entry_secure for details.
|
337
|
-
EOF
|
338
|
-
File.world_writable?(path) ? Bundler.ui.warn(message) : raise
|
339
|
-
raise PathError, "Please fix the world-writable issue with your #{path} directory"
|
340
357
|
end
|
341
358
|
|
342
359
|
def settings
|
343
360
|
@settings ||= Settings.new(app_config_path)
|
344
361
|
rescue GemfileNotFound
|
345
|
-
@settings = Settings.new
|
362
|
+
@settings = Settings.new
|
346
363
|
end
|
347
364
|
|
348
365
|
# @return [Hash] Environment present before Bundler was activated
|
@@ -352,40 +369,24 @@ EOF
|
|
352
369
|
|
353
370
|
# @deprecated Use `unbundled_env` instead
|
354
371
|
def clean_env
|
355
|
-
|
356
|
-
2,
|
372
|
+
message =
|
357
373
|
"`Bundler.clean_env` has been deprecated in favor of `Bundler.unbundled_env`. " \
|
358
|
-
"If you instead want the environment before bundler was originally loaded, use `Bundler.original_env`"
|
359
|
-
|
360
|
-
|
361
|
-
|
374
|
+
"If you instead want the environment before bundler was originally loaded, use `Bundler.original_env`"
|
375
|
+
removed_message =
|
376
|
+
"`Bundler.clean_env` has been removed in favor of `Bundler.unbundled_env`. " \
|
377
|
+
"If you instead want the environment before bundler was originally loaded, use `Bundler.original_env`"
|
378
|
+
Bundler::SharedHelpers.major_deprecation(2, message, removed_message: removed_message, print_caller_location: true)
|
362
379
|
unbundled_env
|
363
380
|
end
|
364
381
|
|
365
382
|
# @return [Hash] Environment with all bundler-related variables removed
|
366
383
|
def unbundled_env
|
367
|
-
|
368
|
-
|
369
|
-
if env.key?("BUNDLER_ORIG_MANPATH")
|
370
|
-
env["MANPATH"] = env["BUNDLER_ORIG_MANPATH"]
|
371
|
-
end
|
372
|
-
|
373
|
-
env.delete_if {|k, _| k[0, 7] == "BUNDLE_" }
|
374
|
-
|
375
|
-
if env.key?("RUBYOPT")
|
376
|
-
rubyopt = env["RUBYOPT"].split(" ")
|
377
|
-
rubyopt.delete("-r#{File.expand_path("bundler/setup", __dir__)}")
|
378
|
-
rubyopt.delete("-rbundler/setup")
|
379
|
-
env["RUBYOPT"] = rubyopt.join(" ")
|
380
|
-
end
|
381
|
-
|
382
|
-
if env.key?("RUBYLIB")
|
383
|
-
rubylib = env["RUBYLIB"].split(File::PATH_SEPARATOR)
|
384
|
-
rubylib.delete(__dir__)
|
385
|
-
env["RUBYLIB"] = rubylib.join(File::PATH_SEPARATOR)
|
386
|
-
end
|
384
|
+
unbundle_env(original_env)
|
385
|
+
end
|
387
386
|
|
388
|
-
|
387
|
+
# Remove all bundler-related variables from ENV
|
388
|
+
def unbundle_env!
|
389
|
+
ENV.replace(unbundle_env(ENV))
|
389
390
|
end
|
390
391
|
|
391
392
|
# Run block with environment present before Bundler was activated
|
@@ -395,13 +396,13 @@ EOF
|
|
395
396
|
|
396
397
|
# @deprecated Use `with_unbundled_env` instead
|
397
398
|
def with_clean_env
|
398
|
-
|
399
|
-
2,
|
399
|
+
message =
|
400
400
|
"`Bundler.with_clean_env` has been deprecated in favor of `Bundler.with_unbundled_env`. " \
|
401
|
-
"If you instead want the environment before bundler was originally loaded, use `Bundler.with_original_env`"
|
402
|
-
|
403
|
-
|
404
|
-
|
401
|
+
"If you instead want the environment before bundler was originally loaded, use `Bundler.with_original_env`"
|
402
|
+
removed_message =
|
403
|
+
"`Bundler.with_clean_env` has been removed in favor of `Bundler.with_unbundled_env`. " \
|
404
|
+
"If you instead want the environment before bundler was originally loaded, use `Bundler.with_original_env`"
|
405
|
+
Bundler::SharedHelpers.major_deprecation(2, message, removed_message: removed_message, print_caller_location: true)
|
405
406
|
with_env(unbundled_env) { yield }
|
406
407
|
end
|
407
408
|
|
@@ -417,13 +418,13 @@ EOF
|
|
417
418
|
|
418
419
|
# @deprecated Use `unbundled_system` instead
|
419
420
|
def clean_system(*args)
|
420
|
-
|
421
|
-
2,
|
421
|
+
message =
|
422
422
|
"`Bundler.clean_system` has been deprecated in favor of `Bundler.unbundled_system`. " \
|
423
|
-
"If you instead want to run the command in the environment before bundler was originally loaded, use `Bundler.original_system`"
|
424
|
-
|
425
|
-
|
426
|
-
|
423
|
+
"If you instead want to run the command in the environment before bundler was originally loaded, use `Bundler.original_system`"
|
424
|
+
removed_message =
|
425
|
+
"`Bundler.clean_system` has been removed in favor of `Bundler.unbundled_system`. " \
|
426
|
+
"If you instead want to run the command in the environment before bundler was originally loaded, use `Bundler.original_system`"
|
427
|
+
Bundler::SharedHelpers.major_deprecation(2, message, removed_message: removed_message, print_caller_location: true)
|
427
428
|
with_env(unbundled_env) { Kernel.system(*args) }
|
428
429
|
end
|
429
430
|
|
@@ -439,13 +440,13 @@ EOF
|
|
439
440
|
|
440
441
|
# @deprecated Use `unbundled_exec` instead
|
441
442
|
def clean_exec(*args)
|
442
|
-
|
443
|
-
2,
|
443
|
+
message =
|
444
444
|
"`Bundler.clean_exec` has been deprecated in favor of `Bundler.unbundled_exec`. " \
|
445
|
-
"If you instead want to exec to a command in the environment before bundler was originally loaded, use `Bundler.original_exec`"
|
446
|
-
|
447
|
-
|
448
|
-
|
445
|
+
"If you instead want to exec to a command in the environment before bundler was originally loaded, use `Bundler.original_exec`"
|
446
|
+
removed_message =
|
447
|
+
"`Bundler.clean_exec` has been removed in favor of `Bundler.unbundled_exec`. " \
|
448
|
+
"If you instead want to exec to a command in the environment before bundler was originally loaded, use `Bundler.original_exec`"
|
449
|
+
Bundler::SharedHelpers.major_deprecation(2, message, removed_message: removed_message, print_caller_location: true)
|
449
450
|
with_env(unbundled_env) { Kernel.exec(*args) }
|
450
451
|
end
|
451
452
|
|
@@ -455,7 +456,7 @@ EOF
|
|
455
456
|
end
|
456
457
|
|
457
458
|
def local_platform
|
458
|
-
return Gem::Platform::RUBY if settings[:force_ruby_platform]
|
459
|
+
return Gem::Platform::RUBY if settings[:force_ruby_platform]
|
459
460
|
Gem::Platform.local
|
460
461
|
end
|
461
462
|
|
@@ -488,80 +489,32 @@ EOF
|
|
488
489
|
configured_bundle_path.use_system_gems?
|
489
490
|
end
|
490
491
|
|
491
|
-
def
|
492
|
-
|
493
|
-
|
494
|
-
sudo_present = which "sudo" if settings.allow_sudo?
|
495
|
-
|
496
|
-
if sudo_present
|
497
|
-
# the bundle path and subdirectories need to be writable for RubyGems
|
498
|
-
# to be able to unpack and install gems without exploding
|
499
|
-
path = bundle_path
|
500
|
-
path = path.parent until path.exist?
|
501
|
-
|
502
|
-
# bins are written to a different location on OS X
|
503
|
-
bin_dir = Pathname.new(Bundler.system_bindir)
|
504
|
-
bin_dir = bin_dir.parent until bin_dir.exist?
|
505
|
-
|
506
|
-
# if any directory is not writable, we need sudo
|
507
|
-
files = [path, bin_dir] | Dir[bundle_path.join("build_info/*").to_s] | Dir[bundle_path.join("*").to_s]
|
508
|
-
unwritable_files = files.reject {|f| File.writable?(f) }
|
509
|
-
sudo_needed = !unwritable_files.empty?
|
510
|
-
if sudo_needed
|
511
|
-
Bundler.ui.warn "Following files may not be writable, so sudo is needed:\n #{unwritable_files.map(&:to_s).sort.join("\n ")}"
|
512
|
-
end
|
513
|
-
end
|
514
|
-
|
515
|
-
@requires_sudo_ran = true
|
516
|
-
@requires_sudo = settings.allow_sudo? && sudo_present && sudo_needed
|
517
|
-
end
|
518
|
-
|
519
|
-
def mkdir_p(path, options = {})
|
520
|
-
if requires_sudo? && !options[:no_sudo]
|
521
|
-
sudo "mkdir -p '#{path}'" unless File.exist?(path)
|
522
|
-
else
|
523
|
-
SharedHelpers.filesystem_access(path, :write) do |p|
|
524
|
-
FileUtils.mkdir_p(p)
|
525
|
-
end
|
492
|
+
def mkdir_p(path)
|
493
|
+
SharedHelpers.filesystem_access(path, :create) do |p|
|
494
|
+
FileUtils.mkdir_p(p)
|
526
495
|
end
|
527
496
|
end
|
528
497
|
|
529
498
|
def which(executable)
|
530
|
-
|
531
|
-
|
532
|
-
|
533
|
-
|
499
|
+
executable_path = find_executable(executable)
|
500
|
+
return executable_path if executable_path
|
501
|
+
|
502
|
+
if (paths = ENV["PATH"])
|
503
|
+
quote = '"'
|
534
504
|
paths.split(File::PATH_SEPARATOR).find do |path|
|
535
505
|
path = path[1..-2] if path.start_with?(quote) && path.end_with?(quote)
|
536
|
-
executable_path = File.expand_path(executable, path)
|
537
|
-
return executable_path if
|
506
|
+
executable_path = find_executable(File.expand_path(executable, path))
|
507
|
+
return executable_path if executable_path
|
538
508
|
end
|
539
509
|
end
|
540
510
|
end
|
541
511
|
|
542
|
-
def
|
543
|
-
|
544
|
-
|
545
|
-
|
546
|
-
You can cancel this installation and run:
|
547
|
-
|
548
|
-
bundle config set --local path 'vendor/bundle'
|
549
|
-
bundle install
|
512
|
+
def find_executable(path)
|
513
|
+
extensions = RbConfig::CONFIG["EXECUTABLE_EXTS"]&.split
|
514
|
+
extensions = [RbConfig::CONFIG["EXEEXT"]] unless extensions&.any?
|
515
|
+
candidates = extensions.map {|ext| "#{path}#{ext}" }
|
550
516
|
|
551
|
-
|
552
|
-
and install the bundled gems to RubyGems using sudo.
|
553
|
-
|
554
|
-
Password:
|
555
|
-
PROMPT
|
556
|
-
|
557
|
-
unless @prompted_for_sudo ||= system(%(sudo -k -p "#{prompt}" true))
|
558
|
-
raise SudoNotPermittedError,
|
559
|
-
"Bundler requires sudo access to install at the moment. " \
|
560
|
-
"Try installing again, granting Bundler sudo access when prompted, or installing into a different path."
|
561
|
-
end
|
562
|
-
|
563
|
-
`sudo -p "#{prompt}" #{str}`
|
564
|
-
end
|
517
|
+
candidates.find {|candidate| File.file?(candidate) && File.executable?(candidate) }
|
565
518
|
end
|
566
519
|
|
567
520
|
def read_file(file)
|
@@ -570,10 +523,17 @@ EOF
|
|
570
523
|
end
|
571
524
|
end
|
572
525
|
|
573
|
-
def
|
574
|
-
|
575
|
-
|
576
|
-
|
526
|
+
def safe_load_marshal(data)
|
527
|
+
if Gem.respond_to?(:load_safe_marshal)
|
528
|
+
Gem.load_safe_marshal
|
529
|
+
begin
|
530
|
+
Gem::SafeMarshal.safe_load(data)
|
531
|
+
rescue Gem::SafeMarshal::Reader::Error, Gem::SafeMarshal::Visitors::ToRuby::Error => e
|
532
|
+
raise MarshalError, "#{e.class}: #{e.message}"
|
533
|
+
end
|
534
|
+
else
|
535
|
+
load_marshal(data, marshal_proc: SafeMarshal.proc)
|
536
|
+
end
|
577
537
|
end
|
578
538
|
|
579
539
|
def load_gemspec(file, validate = false)
|
@@ -582,7 +542,7 @@ EOF
|
|
582
542
|
@gemspec_cache[key] ||= load_gemspec_uncached(file, validate)
|
583
543
|
# Protect against caching side-effected gemspecs by returning a
|
584
544
|
# new instance each time.
|
585
|
-
@gemspec_cache[key]
|
545
|
+
@gemspec_cache[key]&.dup
|
586
546
|
end
|
587
547
|
|
588
548
|
def load_gemspec_uncached(file, validate = false)
|
@@ -609,13 +569,30 @@ EOF
|
|
609
569
|
|
610
570
|
def git_present?
|
611
571
|
return @git_present if defined?(@git_present)
|
612
|
-
@git_present = Bundler.which("git")
|
572
|
+
@git_present = Bundler.which("git")
|
613
573
|
end
|
614
574
|
|
615
575
|
def feature_flag
|
616
576
|
@feature_flag ||= FeatureFlag.new(VERSION)
|
617
577
|
end
|
618
578
|
|
579
|
+
def load_plugins(definition = Bundler.definition)
|
580
|
+
return if defined?(@load_plugins_ran)
|
581
|
+
|
582
|
+
Bundler.rubygems.load_plugins
|
583
|
+
|
584
|
+
requested_path_gems = definition.requested_specs.select {|s| s.source.is_a?(Source::Path) }
|
585
|
+
path_plugin_files = requested_path_gems.flat_map do |spec|
|
586
|
+
spec.matches_for_glob("rubygems_plugin#{Bundler.rubygems.suffix_pattern}")
|
587
|
+
rescue TypeError
|
588
|
+
error_message = "#{spec.name} #{spec.version} has an invalid gemspec"
|
589
|
+
raise Gem::InvalidSpecificationException, error_message
|
590
|
+
end
|
591
|
+
Bundler.rubygems.load_plugin_files(path_plugin_files)
|
592
|
+
Bundler.rubygems.load_env_plugins
|
593
|
+
@load_plugins_ran = true
|
594
|
+
end
|
595
|
+
|
619
596
|
def reset!
|
620
597
|
reset_paths!
|
621
598
|
Plugin.reset!
|
@@ -631,7 +608,7 @@ EOF
|
|
631
608
|
@bin_path = nil
|
632
609
|
@bundler_major_version = nil
|
633
610
|
@bundle_path = nil
|
634
|
-
@
|
611
|
+
@configure = nil
|
635
612
|
@configured_bundle_path = nil
|
636
613
|
@definition = nil
|
637
614
|
@load = nil
|
@@ -664,6 +641,36 @@ EOF
|
|
664
641
|
|
665
642
|
private
|
666
643
|
|
644
|
+
def unbundle_env(env)
|
645
|
+
if env.key?("BUNDLER_ORIG_MANPATH")
|
646
|
+
env["MANPATH"] = env["BUNDLER_ORIG_MANPATH"]
|
647
|
+
end
|
648
|
+
|
649
|
+
env.delete_if {|k, _| k[0, 7] == "BUNDLE_" }
|
650
|
+
env.delete("BUNDLER_SETUP")
|
651
|
+
|
652
|
+
if env.key?("RUBYOPT")
|
653
|
+
rubyopt = env["RUBYOPT"].split(" ")
|
654
|
+
rubyopt.delete("-r#{File.expand_path("bundler/setup", __dir__)}")
|
655
|
+
rubyopt.delete("-rbundler/setup")
|
656
|
+
env["RUBYOPT"] = rubyopt.join(" ")
|
657
|
+
end
|
658
|
+
|
659
|
+
if env.key?("RUBYLIB")
|
660
|
+
rubylib = env["RUBYLIB"].split(File::PATH_SEPARATOR)
|
661
|
+
rubylib.delete(__dir__)
|
662
|
+
env["RUBYLIB"] = rubylib.join(File::PATH_SEPARATOR)
|
663
|
+
end
|
664
|
+
|
665
|
+
env
|
666
|
+
end
|
667
|
+
|
668
|
+
def load_marshal(data, marshal_proc: nil)
|
669
|
+
Marshal.load(data, marshal_proc)
|
670
|
+
rescue TypeError => e
|
671
|
+
raise MarshalError, "#{e.class}: #{e.message}"
|
672
|
+
end
|
673
|
+
|
667
674
|
def eval_yaml_gemspec(path, contents)
|
668
675
|
Kernel.require "psych"
|
669
676
|
|
@@ -677,7 +684,7 @@ EOF
|
|
677
684
|
rescue ScriptError, StandardError => e
|
678
685
|
msg = "There was an error while loading `#{path.basename}`: #{e.message}"
|
679
686
|
|
680
|
-
raise GemspecError, Dsl::DSLError.new(msg, path, e.backtrace, contents)
|
687
|
+
raise GemspecError, Dsl::DSLError.new(msg, path.to_s, e.backtrace, contents)
|
681
688
|
end
|
682
689
|
|
683
690
|
def configure_gem_path
|
@@ -25,7 +25,7 @@ I'll be dividing the deprecations into four groups: CLI deprecations, Helper
|
|
25
25
|
deprecations, DSL deprecations, and misc deprecations. Let's dive into each of
|
26
26
|
them.
|
27
27
|
|
28
|
-
|
28
|
+
### CLI deprecations
|
29
29
|
|
30
30
|
The CLI defines a set of commands and options that can be used by our users to
|
31
31
|
create command lines that bundler can understand. There's a number of changes
|
@@ -82,7 +82,6 @@ in the upcoming 3 version.
|
|
82
82
|
in favor of a `bin/console` script created by `bundle gem` on gem generation
|
83
83
|
that users can tweak to their needs.
|
84
84
|
|
85
|
-
* ~The `bundle update` command will no longer update all gems, you'll need to pass `--all` to it.~ (postponed)
|
86
85
|
|
87
86
|
* The `bundle install` command will no longer accept a `--binstubs` flag.
|
88
87
|
|
@@ -94,7 +93,6 @@ in the upcoming 3 version.
|
|
94
93
|
likely unused files into source control. Because of this, binstubs now must
|
95
94
|
be created and checked into version control individually.
|
96
95
|
|
97
|
-
* ~The `bundle config` command has a new subcommand-based interface.~ (postponed)
|
98
96
|
|
99
97
|
* The `bundle inject` command is deprecated and replaced with `bundle add`.
|
100
98
|
|
@@ -103,7 +101,16 @@ in the upcoming 3 version.
|
|
103
101
|
exactly the same in `bundle add`, so it should be easy to migrate to the new
|
104
102
|
command.
|
105
103
|
|
106
|
-
####
|
104
|
+
#### Cancelled CLI deprecations
|
105
|
+
|
106
|
+
These deprecations have been initially announced before, but the deprecations
|
107
|
+
were cancelled before the release of Bundler 2.1.0 in [rubygems/bundler#7475](https://github.com/rubygems/bundler/pull/7475).
|
108
|
+
|
109
|
+
* ~The `bundle update` command will no longer update all gems, you'll need to pass `--all` to it.~ (postponed)
|
110
|
+
|
111
|
+
* ~The `bundle config` command will no longer accept old subcommand-based interface before Bundler 2.1.~ (postponed)
|
112
|
+
|
113
|
+
### Helper deprecations
|
107
114
|
|
108
115
|
* `Bundler.clean_env`, `Bundler.with_clean_env`, `Bundler.clean_system`, and `Bundler.clean_exec` are deprecated.
|
109
116
|
|
@@ -11,11 +11,11 @@ contributors to follow to reduce the time it takes to get changes merged in.
|
|
11
11
|
2. Ensure that your code blends well with ours:
|
12
12
|
* No trailing whitespace
|
13
13
|
* Match indentation (two spaces)
|
14
|
-
* Match coding style (run `rake rubocop`)
|
14
|
+
* Match coding style (run `bin/rake rubocop`)
|
15
15
|
|
16
16
|
3. If any new files are added or existing files removed in a commit or PR,
|
17
17
|
please update the `Manifest.txt` accordingly. This can be done by running
|
18
|
-
`rake update_manifest`
|
18
|
+
`bin/rake update_manifest`
|
19
19
|
|
20
20
|
4. Don't modify the history file or version number.
|
21
21
|
|
@@ -29,13 +29,26 @@ here: https://guides.rubygems.org/contributing/
|
|
29
29
|
|
30
30
|
## Getting Started
|
31
31
|
|
32
|
-
|
32
|
+
### Installing dependencies
|
33
33
|
|
34
|
-
|
34
|
+
bin/rake setup
|
35
|
+
|
36
|
+
> **NOTE**: If the above fails with permission related errors, you're most
|
37
|
+
> likely using a global Ruby installation (like the one packaged by your OS),
|
38
|
+
> which sets `GEM_HOME` to a location regular users can't write to. Consider
|
39
|
+
> using a Ruby version manager like [RVM](https://github.com/rvm/rvm),
|
40
|
+
> [rbenv](https://github.com/rbenv/rbenv),
|
41
|
+
> [chruby](https://github.com/postmodern/chruby) or [asdf](https://github.com/asdf-vm/asdf-ruby). These will install Ruby to a
|
42
|
+
> location regular users can write to, so you won't run into permission issues.
|
43
|
+
> Alternatively, consider setting `GEM_HOME` environment variable to a writable
|
44
|
+
> location with something like `export GEM_HOME=/tmp/rubygems.gems` and try
|
45
|
+
> again.
|
46
|
+
|
47
|
+
### Manually trying your local changes
|
35
48
|
|
36
49
|
To run commands like `gem install` from the repo:
|
37
50
|
|
38
|
-
ruby -Ilib
|
51
|
+
ruby -Ilib exe/gem install
|
39
52
|
|
40
53
|
To run commands like `bundle install` from the repo:
|
41
54
|
|
@@ -43,38 +56,48 @@ To run commands like `bundle install` from the repo:
|
|
43
56
|
|
44
57
|
### Running Tests
|
45
58
|
|
46
|
-
To run the entire test suite you can use:
|
59
|
+
To run the entire test suite you can use:
|
47
60
|
|
48
|
-
rake test
|
61
|
+
bin/rake test
|
49
62
|
|
50
|
-
To run an individual test file located for example in `test/rubygems/test_deprecate.rb` you can use:
|
63
|
+
To run an individual test file located for example in `test/rubygems/test_deprecate.rb` you can use:
|
51
64
|
|
52
65
|
ruby -Ilib:test:bundler/lib test/rubygems/test_deprecate.rb
|
53
|
-
|
54
|
-
And to run an individual test method named `test_default` within a test file, you can use:
|
66
|
+
|
67
|
+
And to run an individual test method named `test_default` within a test file, you can use:
|
55
68
|
|
56
69
|
ruby -Ilib:test:bundler/lib test/rubygems/test_deprecate.rb -n /test_default/
|
57
70
|
|
58
71
|
### Running bundler tests
|
59
72
|
|
60
|
-
Everything needs to be run from the `bundler/` subfolder.
|
61
|
-
|
62
73
|
To setup bundler tests:
|
63
74
|
|
64
|
-
rake spec:parallel_deps
|
75
|
+
bin/rake spec:parallel_deps
|
65
76
|
|
66
|
-
To run the entire bundler test suite in parallel (it takes a while):
|
77
|
+
To run the entire bundler test suite in parallel (it takes a while), run the following from the `bundler/` subfolder:
|
67
78
|
|
68
79
|
bin/parallel_rspec
|
69
80
|
|
70
|
-
|
81
|
+
There are some realworld higher level specs run in CI, but not run by `bin/parallel_rspec`. You can run those with:
|
71
82
|
|
72
|
-
bin/
|
83
|
+
bin/rake spec:realworld
|
73
84
|
|
74
|
-
To run an individual test file location for example in `spec/install/gems/standalone_spec.rb` you can use:
|
85
|
+
To run an individual test file location for example in `spec/install/gems/standalone_spec.rb` you can use the following from the `bundler/` subfolder:
|
75
86
|
|
76
87
|
bin/rspec spec/install/gems/standalone_spec.rb
|
77
88
|
|
89
|
+
### Checking code style
|
90
|
+
|
91
|
+
You can check compliance with our code style with
|
92
|
+
|
93
|
+
bin/rake rubocop
|
94
|
+
|
95
|
+
Optionally you can configure git hooks with to check this before every commit with
|
96
|
+
|
97
|
+
bin/rake git_hooks
|
98
|
+
|
99
|
+
For more information, check [SETUP.md](../bundler/development/SETUP.md) and [DEBUGGING.md](../bundler/development/DEBUGGING.md).
|
100
|
+
|
78
101
|
## Issues
|
79
102
|
|
80
103
|
RubyGems uses labels to track all issues and pull requests. In order to
|