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
@@ -0,0 +1,204 @@
|
|
1
|
+
## Pull Requests
|
2
|
+
|
3
|
+
Contributions to RubyGems are made via GitHub pull requests, which must be
|
4
|
+
approved by a project committer other than the author. To approve a PR, a
|
5
|
+
maintainer can use GitHubs PR review feature. After that, if the original author
|
6
|
+
is happy to merge the PR, she can press the merge button.
|
7
|
+
|
8
|
+
## Long-Term Support
|
9
|
+
|
10
|
+
RubyGems will support Ruby versions for as long as the Ruby team supports that
|
11
|
+
Ruby version. That means that the latest RubyGems release will always support
|
12
|
+
the currently-supported Ruby versions, and RubyGems security fixes will be
|
13
|
+
released for any RubyGems version that shipped inside a currently-supported
|
14
|
+
Ruby version.
|
15
|
+
|
16
|
+
### Bugfix Releases
|
17
|
+
|
18
|
+
RubyGems generally releases bugfixes from the master branch. We may mix bug
|
19
|
+
fixes and new features in the same release. RubyGems does not guarantee it
|
20
|
+
will ship bugfix releases for previous minor or major versions.
|
21
|
+
|
22
|
+
For example, after RubyGems 2.5 is released, the RubyGems team will not
|
23
|
+
provide non-security fixes for RubyGems 2.4, or any earlier versions.
|
24
|
+
|
25
|
+
### Security Releases
|
26
|
+
|
27
|
+
Security releases will be made for RubyGems minor versions that were included
|
28
|
+
in a currently-supported Ruby release.
|
29
|
+
|
30
|
+
For example, since RubyGems 2.0 was shipped in Ruby 2.0, RubyGems 2.0 will
|
31
|
+
receive security fixes until Ruby 2.0 reaches end-of-life.
|
32
|
+
|
33
|
+
### Ruby Version Support
|
34
|
+
|
35
|
+
When a Ruby version reaches end-of-life the following minor release of
|
36
|
+
RubyGems will drop backwards compatibility with that Ruby version.
|
37
|
+
|
38
|
+
For example, since Ruby 2.2 has reached end-of-life, future RubyGems minor
|
39
|
+
releases will only support Ruby 2.3 and above. As of this writing RubyGems is
|
40
|
+
at version 2.7, so when RubyGems 2.8 is released, it will only support Ruby
|
41
|
+
2.3 and later.
|
42
|
+
|
43
|
+
## Release Process
|
44
|
+
|
45
|
+
### Permissions
|
46
|
+
|
47
|
+
You'll need the following environment variables set to release RubyGems &
|
48
|
+
Bundler:
|
49
|
+
|
50
|
+
* AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY: to be able to push RubyGems zip
|
51
|
+
files to s3 so that they appear at RubyGems [download page].
|
52
|
+
|
53
|
+
* GITHUB_RELEASE_PAT: A [GitHub PAT] with repo permissions, in order to push
|
54
|
+
GitHub releases and to use the GitHub API for changelog generation.
|
55
|
+
|
56
|
+
[download page]: https://rubygems.org/pages/download
|
57
|
+
[GitHub PAT]: https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token
|
58
|
+
|
59
|
+
### Recommendations for security releases
|
60
|
+
|
61
|
+
* Obtain CVE numbers as needed from HackerOne or Red Hat.
|
62
|
+
* Agree on a release date with ruby-core, so patches can be backported to
|
63
|
+
older Ruby versions as needed.
|
64
|
+
* Avoid releasing security updates on Fridays, so platform services don't
|
65
|
+
have to work on weekends.
|
66
|
+
* Continue with the regular release process below.
|
67
|
+
|
68
|
+
### Branching
|
69
|
+
|
70
|
+
Bundler releases are synchronized with rubygems releases at the moment. That
|
71
|
+
means that releases for both share the same stable branch, and they should
|
72
|
+
generally happen together.
|
73
|
+
|
74
|
+
The current conventional naming for stable branches is `x+1.y`, where `x.y` is
|
75
|
+
the version of `bundler` that will be released. This is because `rubygems-x+1.y`
|
76
|
+
will be released at the same time.
|
77
|
+
|
78
|
+
For example, `rubygems-3.2.0` and `bundler-2.2.0` were both released from the
|
79
|
+
`3.2` stable branch.
|
80
|
+
|
81
|
+
Once a stable branch has been cut from `master`, changes for that minor release
|
82
|
+
series are only made _intentionally_, via patch releases. That is to say,
|
83
|
+
changes to `master` by default _won't_ make their way into the current stable
|
84
|
+
branch, and development on `master` will be targeting the next minor
|
85
|
+
or major release.
|
86
|
+
|
87
|
+
There is a `bin/rake prepare_release[<target_rubygems_version>]` rake task
|
88
|
+
that helps with creating a release. It takes a single argument, the _exact
|
89
|
+
rubygems release_ being made (e.g. `3.2.3` when releasing bundler `2.2.3`).
|
90
|
+
This task checks out the appropriate stable branch (`3.2`, for example), grabs
|
91
|
+
all merged but unreleased PRs from both bundler & rubygems from GitHub that are
|
92
|
+
compatible with the target release level, and then cherry-picks those changes
|
93
|
+
(and only those changes) to a new branch based off the stable branch. Then bumps
|
94
|
+
the version in all version files, synchronizes both changelogs to include all
|
95
|
+
backported changes and commits that change on top of the cherry-picks.
|
96
|
+
|
97
|
+
Note that this task requires all user facing pull requests to be tagged with
|
98
|
+
specific labels. See [Merging a PR](/bundler/doc/playbooks/MERGING_A_PR.md) for details.
|
99
|
+
|
100
|
+
Also note that when this task cherry-picks, it cherry-picks the merge commits
|
101
|
+
using the following command:
|
102
|
+
|
103
|
+
```bash
|
104
|
+
$ git cherry-pick -m 1 MERGE_COMMIT_SHAS
|
105
|
+
```
|
106
|
+
|
107
|
+
For example, for PR [#5029](https://github.com/rubygems/bundler/pull/5029), we
|
108
|
+
cherry picked commit [dd6aef9](https://github.com/rubygems/bundler/commit/dd6aef97a5f2e7173f406267256a8c319d6134ab),
|
109
|
+
not [4fe9291](https://github.com/rubygems/bundler/commit/4fe92919f51e3463f0aad6fa833ab68044311f03)
|
110
|
+
using:
|
111
|
+
|
112
|
+
```bash
|
113
|
+
$ git cherry-pick -m 1 dd6aef9
|
114
|
+
```
|
115
|
+
|
116
|
+
After running the task, you'll have a release branch ready to be merged into the
|
117
|
+
stable branch. You'll want to open a PR from this branch into the stable branch
|
118
|
+
and provided CI is green, you can go ahead, merge the PR and run release tasks
|
119
|
+
as specified below from the updated stable branch.
|
120
|
+
|
121
|
+
### Automatic changelog and backport generation
|
122
|
+
|
123
|
+
PR labels and titles are used to automatically generate changelogs for patch and
|
124
|
+
minor releases.
|
125
|
+
|
126
|
+
When releasing, a changelog generation script goes through all PRs that have
|
127
|
+
never made it into a release, and selects only the ones with specific labels as
|
128
|
+
detailed in the `.changelog.yml` and `bundler/.changelog.yml` files. Those
|
129
|
+
particular PRs get backported to the stable branch and included in the release
|
130
|
+
changelog.
|
131
|
+
|
132
|
+
If PRs don't have a proper label, they won't be backported to patch releases.
|
133
|
+
|
134
|
+
If you want a PR to be backported to a patch level release, but don't want to
|
135
|
+
include it in the changelog, you can use the special `rubygems: skip changelog`
|
136
|
+
and `bundler: skip changelog` labels. For example, this is useful when
|
137
|
+
backporting a PR generates conflicts that are solved by backporting another PR
|
138
|
+
with no user visible changes. You can use these special labels to also backport
|
139
|
+
the other PR and not get any conflicts.
|
140
|
+
|
141
|
+
### Breaking changes
|
142
|
+
|
143
|
+
Bundler cares a lot about preserving compatibility. As a result, changes that
|
144
|
+
break backwards compatibility should (whenever this is possible) include a feature
|
145
|
+
release that is backwards compatible, and issue warnings for all options and
|
146
|
+
behaviors that will change.
|
147
|
+
|
148
|
+
We only release major breaking changes when incrementing the _major_ version of
|
149
|
+
Bundler and RubyGems. However, experience shows that almost every single part of
|
150
|
+
Bundler and RubyGems is depended on by someone in ways hard to anticipate. So if
|
151
|
+
we were strict about breaking changes we'd need to hold on from making progress
|
152
|
+
a lot, or continuously increment the major version, emptying "really major"
|
153
|
+
versions from their meaning. Because of this, we also may release "small"
|
154
|
+
breaking changes in minor releases. "Small" here means that we expect them to
|
155
|
+
affect only very few users in rare cases.
|
156
|
+
|
157
|
+
### Steps for patch releases
|
158
|
+
|
159
|
+
* Confirm all PRs that you want backported are properly tagged with `rubygems:
|
160
|
+
<type>` or `bundler: <type>` labels at GitHub.
|
161
|
+
* Run `bin/rake prepare_release[<target_rubygems_version>]`. This will create
|
162
|
+
a PR to the stable branch with the backports included in the release, and
|
163
|
+
proper changelogs and version bumps. It will also create a PR to merge
|
164
|
+
release changelogs into master.
|
165
|
+
* Once CI passes, merge the release PR, switch to the stable branch and pull
|
166
|
+
the PR just merged.
|
167
|
+
* Release `bundler` with `bin/rake bundler:release`.
|
168
|
+
* Release `rubygems` with `bin/rake release`.
|
169
|
+
|
170
|
+
### Steps for minor and major releases
|
171
|
+
|
172
|
+
* Confirm all PRs that you want listed in changelogs are properly tagged with
|
173
|
+
`rubygems: <type>` or `bundler: <type>` labels at GitHub.
|
174
|
+
* Run `bin/rake prepare_release[<target_rubygems_version>]`. This will create
|
175
|
+
a new stable branch off the master branch, and create a PR to it with the
|
176
|
+
proper version bumps and changelogs. It will also create a PR to merge
|
177
|
+
release changelogs into master.
|
178
|
+
* Replace the stable branch in the workflows with the new stable branch, and
|
179
|
+
push that change to the release PR.
|
180
|
+
* Replace version numbers with the next ".dev" version, and push that change
|
181
|
+
to the master PR.
|
182
|
+
* Once CI passes, merge the release PR, switch to the stable branch and pull
|
183
|
+
the PR just merged.
|
184
|
+
* Release `bundler` with `bin/rake bundler:release`.
|
185
|
+
* Release `rubygems` with `bin/rake release`.
|
186
|
+
|
187
|
+
## Committer Access
|
188
|
+
|
189
|
+
RubyGems committers may lose their commit privileges if they are inactive for
|
190
|
+
longer than 12 months. Committer permission may be restored upon request by
|
191
|
+
having a pull request merged.
|
192
|
+
|
193
|
+
This is designed to improve the maintainability of RubyGems by requiring
|
194
|
+
committers to maintain familiarity with RubyGems activity and to improve the
|
195
|
+
security of RubyGems by preventing idle committers from having their commit
|
196
|
+
permissions compromised or exposed.
|
197
|
+
|
198
|
+
## Changing These Policies
|
199
|
+
|
200
|
+
These policies were set in order to reduce the burden of maintenance and to keep
|
201
|
+
committers current with existing development and policies. RubyGems work is
|
202
|
+
primarily volunteer-driven which limits the ability to provide long-term
|
203
|
+
support. By joining [Ruby Central](https://rubycentral.org/#/portal/signup) you
|
204
|
+
can help extend support for older RubyGems versions.
|
@@ -1,8 +1,12 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
1
2
|
# frozen_string_literal: true
|
3
|
+
|
2
4
|
#--
|
3
5
|
# Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others.
|
4
6
|
# All rights reserved.
|
5
7
|
# See LICENSE.txt for permissions.
|
6
8
|
#++
|
7
9
|
|
8
|
-
|
10
|
+
require "rubygems/gem_runner"
|
11
|
+
|
12
|
+
Gem::GemRunner.new.run ARGV.clone
|
data/{bin → exe}/update_rubygems
RENAMED
@@ -1,26 +1,28 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
2
4
|
#--
|
3
5
|
# Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others.
|
4
6
|
# All rights reserved.
|
5
7
|
# See LICENSE.txt for permissions.
|
6
8
|
#++
|
7
9
|
|
8
|
-
require
|
10
|
+
require "rubygems"
|
9
11
|
|
10
|
-
if ARGV.include?
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
12
|
+
if ARGV.include?("-h") || ARGV.include?("--help")
|
13
|
+
warn "rubygems_update [options]"
|
14
|
+
warn ""
|
15
|
+
warn "This will install the latest version of RubyGems."
|
16
|
+
warn ""
|
17
|
+
warn "\t--version=X.Y\tUpdate RubyGems from the X.Y version."
|
16
18
|
exit
|
17
19
|
end
|
18
20
|
|
19
21
|
unless ARGV.grep(/--version=([\d\.]*)/).empty?
|
20
|
-
exec Gem.ruby,
|
22
|
+
exec Gem.ruby, "-S", $PROGRAM_NAME, "_#{$1}_"
|
21
23
|
end
|
22
24
|
|
23
|
-
update_dir = $LOAD_PATH.find {|dir| dir
|
25
|
+
update_dir = $LOAD_PATH.find {|dir| dir.include?("rubygems-update") }
|
24
26
|
|
25
27
|
if update_dir.nil?
|
26
28
|
puts "Error: Cannot find RubyGems update path!"
|
@@ -32,5 +34,5 @@ else
|
|
32
34
|
update_dir = File.dirname(update_dir)
|
33
35
|
Dir.chdir update_dir
|
34
36
|
ENV["GEM_PREV_VER"] = Gem::VERSION
|
35
|
-
abort unless system(Gem.ruby,
|
37
|
+
abort unless system(Gem.ruby, "--disable-gems", "setup.rb", *ARGV)
|
36
38
|
end
|
@@ -1,4 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
class Gem::AvailableSet
|
3
4
|
include Enumerable
|
4
5
|
|
@@ -26,7 +27,7 @@ class Gem::AvailableSet
|
|
26
27
|
s = o.set
|
27
28
|
when Array
|
28
29
|
s = o.map do |sp,so|
|
29
|
-
if !sp.
|
30
|
+
if !sp.is_a?(Gem::Specification) || !so.is_a?(Gem::Source)
|
30
31
|
raise TypeError, "Array must be in [[spec, source], ...] form"
|
31
32
|
end
|
32
33
|
|
@@ -69,7 +70,7 @@ class Gem::AvailableSet
|
|
69
70
|
end
|
70
71
|
|
71
72
|
def all_specs
|
72
|
-
@set.map
|
73
|
+
@set.map(&:spec)
|
73
74
|
end
|
74
75
|
|
75
76
|
def match_platform!
|
@@ -104,14 +105,14 @@ class Gem::AvailableSet
|
|
104
105
|
|
105
106
|
def to_request_set(development = :none)
|
106
107
|
request_set = Gem::RequestSet.new
|
107
|
-
request_set.development =
|
108
|
+
request_set.development = development == :all
|
108
109
|
|
109
110
|
each_spec do |spec|
|
110
111
|
request_set.always_install << spec
|
111
112
|
|
112
113
|
request_set.gem spec.name, spec.version
|
113
114
|
request_set.import spec.development_dependencies if
|
114
|
-
|
115
|
+
development == :shallow
|
115
116
|
end
|
116
117
|
|
117
118
|
request_set
|
@@ -146,11 +147,11 @@ class Gem::AvailableSet
|
|
146
147
|
end
|
147
148
|
|
148
149
|
def remove_installed!(dep)
|
149
|
-
@set.reject! do |
|
150
|
+
@set.reject! do |_t|
|
150
151
|
# already locally installed
|
151
152
|
Gem::Specification.any? do |installed_spec|
|
152
|
-
dep.name == installed_spec.name
|
153
|
-
dep.requirement.satisfied_by?
|
153
|
+
dep.name == installed_spec.name &&
|
154
|
+
dep.requirement.satisfied_by?(installed_spec.version)
|
154
155
|
end
|
155
156
|
end
|
156
157
|
|
@@ -1,4 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
##
|
3
4
|
# BasicSpecification is an abstract class which implements some common code
|
4
5
|
# used by both Specification and StubSpecification.
|
@@ -47,7 +48,7 @@ class Gem::BasicSpecification
|
|
47
48
|
# directory.
|
48
49
|
|
49
50
|
def gem_build_complete_path # :nodoc:
|
50
|
-
File.join extension_dir,
|
51
|
+
File.join extension_dir, "gem.build_complete"
|
51
52
|
end
|
52
53
|
|
53
54
|
##
|
@@ -70,32 +71,57 @@ class Gem::BasicSpecification
|
|
70
71
|
# Return true if this spec can require +file+.
|
71
72
|
|
72
73
|
def contains_requirable_file?(file)
|
73
|
-
if
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
if Gem::Platform::RUBY == platform || Gem::Platform.local === platform
|
79
|
-
warn "Ignoring #{full_name} because its extensions are not built. " +
|
80
|
-
"Try: gem pristine #{name} --version #{version}"
|
74
|
+
if ignored?
|
75
|
+
if platform == Gem::Platform::RUBY || Gem::Platform.local === platform
|
76
|
+
warn "Ignoring #{full_name} because its extensions are not built. " \
|
77
|
+
"Try: gem pristine #{name} --version #{version}"
|
81
78
|
end
|
82
79
|
|
83
80
|
return false
|
84
81
|
end
|
85
82
|
|
86
|
-
|
83
|
+
is_soext = file.end_with?(".so", ".o")
|
84
|
+
|
85
|
+
if is_soext
|
86
|
+
have_file? file.delete_suffix(File.extname(file)), Gem.dynamic_library_suffixes
|
87
|
+
else
|
88
|
+
have_file? file, Gem.suffixes
|
89
|
+
end
|
90
|
+
end
|
91
|
+
|
92
|
+
##
|
93
|
+
# Return true if this spec should be ignored because it's missing extensions.
|
94
|
+
|
95
|
+
def ignored?
|
96
|
+
return @ignored unless @ignored.nil?
|
97
|
+
|
98
|
+
@ignored = missing_extensions?
|
87
99
|
end
|
88
100
|
|
89
101
|
def default_gem?
|
90
|
-
loaded_from &&
|
102
|
+
!loaded_from.nil? &&
|
91
103
|
File.dirname(loaded_from) == Gem.default_specifications_dir
|
92
104
|
end
|
93
105
|
|
106
|
+
##
|
107
|
+
# Regular gems take precedence over default gems
|
108
|
+
|
109
|
+
def default_gem_priority
|
110
|
+
default_gem? ? 1 : -1
|
111
|
+
end
|
112
|
+
|
113
|
+
##
|
114
|
+
# Gems higher up in +gem_path+ take precedence
|
115
|
+
|
116
|
+
def base_dir_priority(gem_path)
|
117
|
+
gem_path.index(base_dir) || gem_path.size
|
118
|
+
end
|
119
|
+
|
94
120
|
##
|
95
121
|
# Returns full path to the directory where gem's extensions are installed.
|
96
122
|
|
97
123
|
def extension_dir
|
98
|
-
@extension_dir ||= File.expand_path(File.join(extensions_dir, full_name))
|
124
|
+
@extension_dir ||= File.expand_path(File.join(extensions_dir, full_name))
|
99
125
|
end
|
100
126
|
|
101
127
|
##
|
@@ -103,25 +129,22 @@ class Gem::BasicSpecification
|
|
103
129
|
|
104
130
|
def extensions_dir
|
105
131
|
Gem.default_ext_dir_for(base_dir) ||
|
106
|
-
File.join(base_dir,
|
132
|
+
File.join(base_dir, "extensions", Gem::Platform.local.to_s,
|
107
133
|
Gem.extension_api_version)
|
108
134
|
end
|
109
135
|
|
110
136
|
def find_full_gem_path # :nodoc:
|
111
|
-
|
112
|
-
path = File.expand_path File.join(gems_dir, full_name)
|
113
|
-
path.tap(&Gem::UNTAINT)
|
114
|
-
path
|
137
|
+
File.expand_path File.join(gems_dir, full_name)
|
115
138
|
end
|
116
139
|
|
117
140
|
private :find_full_gem_path
|
118
141
|
|
119
142
|
##
|
120
143
|
# The full path to the gem (install path + full name).
|
144
|
+
#
|
145
|
+
# TODO: This is duplicated with #gem_dir. Eventually either of them should be deprecated.
|
121
146
|
|
122
147
|
def full_gem_path
|
123
|
-
# TODO: This is a heavily used method by gems, so we'll need
|
124
|
-
# to aleast just alias it to #gem_dir rather than remove it.
|
125
148
|
@full_gem_path ||= find_full_gem_path
|
126
149
|
end
|
127
150
|
|
@@ -131,10 +154,23 @@ class Gem::BasicSpecification
|
|
131
154
|
# default Ruby platform.
|
132
155
|
|
133
156
|
def full_name
|
134
|
-
if platform == Gem::Platform::RUBY
|
135
|
-
"#{name}-#{version}"
|
157
|
+
if platform == Gem::Platform::RUBY || platform.nil?
|
158
|
+
"#{name}-#{version}"
|
136
159
|
else
|
137
|
-
"#{name}-#{version}-#{platform}"
|
160
|
+
"#{name}-#{version}-#{platform}"
|
161
|
+
end
|
162
|
+
end
|
163
|
+
|
164
|
+
##
|
165
|
+
# Returns the full name of this Gem (see `Gem::BasicSpecification#full_name`).
|
166
|
+
# Information about where the gem is installed is also included if not
|
167
|
+
# installed in the default GEM_HOME.
|
168
|
+
|
169
|
+
def full_name_with_location
|
170
|
+
if base_dir != Gem.dir
|
171
|
+
"#{full_name} in #{base_dir}"
|
172
|
+
else
|
173
|
+
full_name
|
138
174
|
end
|
139
175
|
end
|
140
176
|
|
@@ -144,15 +180,15 @@ class Gem::BasicSpecification
|
|
144
180
|
|
145
181
|
def full_require_paths
|
146
182
|
@full_require_paths ||=
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
183
|
+
begin
|
184
|
+
full_paths = raw_require_paths.map do |path|
|
185
|
+
File.join full_gem_path, path
|
186
|
+
end
|
151
187
|
|
152
|
-
|
188
|
+
full_paths << extension_dir if have_extensions?
|
153
189
|
|
154
|
-
|
155
|
-
|
190
|
+
full_paths
|
191
|
+
end
|
156
192
|
end
|
157
193
|
|
158
194
|
##
|
@@ -160,7 +196,7 @@ class Gem::BasicSpecification
|
|
160
196
|
|
161
197
|
def datadir
|
162
198
|
# TODO: drop the extra ", gem_name" which is uselessly redundant
|
163
|
-
File.expand_path(File.join(gems_dir, full_name, "data", name))
|
199
|
+
File.expand_path(File.join(gems_dir, full_name, "data", name))
|
164
200
|
end
|
165
201
|
|
166
202
|
##
|
@@ -170,27 +206,25 @@ class Gem::BasicSpecification
|
|
170
206
|
def to_fullpath(path)
|
171
207
|
if activated?
|
172
208
|
@paths_map ||= {}
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
File.file?(fullpath = "#{dir}/#{path}#{suf}")
|
180
|
-
end
|
181
|
-
end ? fullpath : nil
|
209
|
+
Gem.suffixes.each do |suf|
|
210
|
+
full_require_paths.each do |dir|
|
211
|
+
fullpath = "#{dir}/#{path}#{suf}"
|
212
|
+
next unless File.file?(fullpath)
|
213
|
+
@paths_map[path] ||= fullpath
|
214
|
+
end
|
182
215
|
end
|
183
|
-
|
184
|
-
nil
|
216
|
+
@paths_map[path]
|
185
217
|
end
|
186
218
|
end
|
187
219
|
|
188
220
|
##
|
189
221
|
# Returns the full path to this spec's gem directory.
|
190
222
|
# eg: /usr/local/lib/ruby/1.8/gems/mygem-1.0
|
223
|
+
#
|
224
|
+
# TODO: This is duplicated with #full_gem_path. Eventually either of them should be deprecated.
|
191
225
|
|
192
226
|
def gem_dir
|
193
|
-
@gem_dir ||=
|
227
|
+
@gem_dir ||= find_full_gem_path
|
194
228
|
end
|
195
229
|
|
196
230
|
##
|
@@ -271,9 +305,9 @@ class Gem::BasicSpecification
|
|
271
305
|
# Return all files in this gem that match for +glob+.
|
272
306
|
|
273
307
|
def matches_for_glob(glob) # TODO: rename?
|
274
|
-
glob = File.join(
|
308
|
+
glob = File.join(lib_dirs_glob, glob)
|
275
309
|
|
276
|
-
Dir[glob]
|
310
|
+
Dir[glob]
|
277
311
|
end
|
278
312
|
|
279
313
|
##
|
@@ -288,17 +322,17 @@ class Gem::BasicSpecification
|
|
288
322
|
# for this spec.
|
289
323
|
|
290
324
|
def lib_dirs_glob
|
291
|
-
dirs = if
|
292
|
-
if
|
293
|
-
"{#{
|
325
|
+
dirs = if raw_require_paths
|
326
|
+
if raw_require_paths.size > 1
|
327
|
+
"{#{raw_require_paths.join(",")}}"
|
294
328
|
else
|
295
|
-
|
329
|
+
raw_require_paths.first
|
296
330
|
end
|
297
331
|
else
|
298
332
|
"lib" # default value for require_paths for bundler/inline
|
299
333
|
end
|
300
334
|
|
301
|
-
"#{
|
335
|
+
"#{full_gem_path}/#{dirs}"
|
302
336
|
end
|
303
337
|
|
304
338
|
##
|
@@ -323,15 +357,19 @@ class Gem::BasicSpecification
|
|
323
357
|
raise NotImplementedError
|
324
358
|
end
|
325
359
|
|
326
|
-
def this
|
360
|
+
def this
|
361
|
+
self
|
362
|
+
end
|
327
363
|
|
328
364
|
private
|
329
365
|
|
330
|
-
def have_extensions
|
366
|
+
def have_extensions?
|
367
|
+
!extensions.empty?
|
368
|
+
end
|
331
369
|
|
332
370
|
def have_file?(file, suffixes)
|
333
371
|
return true if raw_require_paths.any? do |path|
|
334
|
-
base = File.join(gems_dir, full_name, path
|
372
|
+
base = File.join(gems_dir, full_name, path, file)
|
335
373
|
suffixes.any? {|suf| File.file? base + suf }
|
336
374
|
end
|
337
375
|
|
@@ -21,7 +21,7 @@ module Gem::BundlerVersionFinder
|
|
21
21
|
end
|
22
22
|
|
23
23
|
def self.bundle_update_bundler_version
|
24
|
-
return unless File.basename($0)
|
24
|
+
return unless ["bundle", "bundler"].include? File.basename($0)
|
25
25
|
return unless "update".start_with?(ARGV.first || " ")
|
26
26
|
bundler_version = nil
|
27
27
|
update_index = nil
|
@@ -47,12 +47,12 @@ module Gem::BundlerVersionFinder
|
|
47
47
|
|
48
48
|
def self.lockfile_contents
|
49
49
|
gemfile = ENV["BUNDLE_GEMFILE"]
|
50
|
-
gemfile = nil if gemfile
|
50
|
+
gemfile = nil if gemfile&.empty?
|
51
51
|
|
52
52
|
unless gemfile
|
53
53
|
begin
|
54
54
|
Gem::Util.traverse_parents(Dir.pwd) do |directory|
|
55
|
-
next unless gemfile = Gem::GEM_DEP_FILES.find {|f| File.file?(f
|
55
|
+
next unless gemfile = Gem::GEM_DEP_FILES.find {|f| File.file?(f) }
|
56
56
|
|
57
57
|
gemfile = File.join directory, gemfile
|
58
58
|
break
|
@@ -65,9 +65,9 @@ module Gem::BundlerVersionFinder
|
|
65
65
|
return unless gemfile
|
66
66
|
|
67
67
|
lockfile = case gemfile
|
68
|
-
|
69
|
-
|
70
|
-
end
|
68
|
+
when "gems.rb" then "gems.locked"
|
69
|
+
else "#{gemfile}.lock"
|
70
|
+
end
|
71
71
|
|
72
72
|
return unless File.file?(lockfile)
|
73
73
|
|