rubygems-update 3.3.18 → 3.4.19
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 +1429 -1064
- data/CONTRIBUTING.md +31 -8
- data/Manifest.txt +61 -36
- data/POLICIES.md +55 -20
- data/README.md +19 -6
- data/bundler/CHANGELOG.md +457 -1
- data/bundler/README.md +3 -6
- data/bundler/UPGRADING.md +11 -4
- data/bundler/bundler.gemspec +8 -10
- data/bundler/exe/bundle +5 -16
- data/bundler/lib/bundler/build_metadata.rb +2 -2
- data/bundler/lib/bundler/cli/add.rb +1 -1
- data/bundler/lib/bundler/cli/binstubs.rb +6 -2
- data/bundler/lib/bundler/cli/check.rb +1 -1
- data/bundler/lib/bundler/cli/common.rb +2 -0
- data/bundler/lib/bundler/cli/console.rb +2 -2
- data/bundler/lib/bundler/cli/doctor.rb +4 -6
- data/bundler/lib/bundler/cli/gem.rb +62 -40
- data/bundler/lib/bundler/cli/info.rb +1 -1
- data/bundler/lib/bundler/cli/init.rb +6 -2
- data/bundler/lib/bundler/cli/install.rb +8 -6
- data/bundler/lib/bundler/cli/lock.rb +8 -5
- data/bundler/lib/bundler/cli/open.rb +6 -4
- data/bundler/lib/bundler/cli/outdated.rb +14 -7
- data/bundler/lib/bundler/cli/platform.rb +7 -5
- data/bundler/lib/bundler/cli/viz.rb +1 -1
- data/bundler/lib/bundler/cli.rb +53 -7
- data/bundler/lib/bundler/compact_index_client/cache.rb +1 -1
- data/bundler/lib/bundler/compact_index_client/updater.rb +40 -39
- data/bundler/lib/bundler/constants.rb +1 -1
- data/bundler/lib/bundler/current_ruby.rb +16 -5
- data/bundler/lib/bundler/definition.rb +262 -133
- data/bundler/lib/bundler/dependency.rb +20 -86
- data/bundler/lib/bundler/digest.rb +1 -1
- data/bundler/lib/bundler/dsl.rb +6 -7
- data/bundler/lib/bundler/endpoint_specification.rb +2 -13
- data/bundler/lib/bundler/env.rb +2 -2
- data/bundler/lib/bundler/environment_preserver.rb +3 -2
- data/bundler/lib/bundler/errors.rb +1 -11
- data/bundler/lib/bundler/feature_flag.rb +0 -2
- data/bundler/lib/bundler/fetcher/compact_index.rb +11 -13
- data/bundler/lib/bundler/fetcher/dependency.rb +2 -6
- data/bundler/lib/bundler/fetcher/downloader.rb +4 -5
- data/bundler/lib/bundler/fetcher/index.rb +1 -2
- data/bundler/lib/bundler/fetcher.rb +21 -15
- data/bundler/lib/bundler/force_platform.rb +18 -0
- data/bundler/lib/bundler/friendly_errors.rb +1 -4
- data/bundler/lib/bundler/gem_helper.rb +3 -4
- data/bundler/lib/bundler/gem_helpers.rb +7 -2
- data/bundler/lib/bundler/gem_version_promoter.rb +53 -98
- data/bundler/lib/bundler/graph.rb +3 -3
- data/bundler/lib/bundler/index.rb +13 -47
- data/bundler/lib/bundler/injector.rb +5 -4
- data/bundler/lib/bundler/inline.rb +9 -11
- data/bundler/lib/bundler/installer/parallel_installer.rb +4 -34
- data/bundler/lib/bundler/installer/standalone.rb +13 -9
- data/bundler/lib/bundler/installer.rb +17 -29
- data/bundler/lib/bundler/lazy_specification.rb +54 -53
- data/bundler/lib/bundler/lockfile_generator.rb +3 -3
- data/bundler/lib/bundler/lockfile_parser.rb +17 -16
- data/bundler/lib/bundler/man/bundle-add.1 +6 -2
- data/bundler/lib/bundler/man/bundle-add.1.ronn +4 -1
- data/bundler/lib/bundler/man/bundle-binstubs.1 +1 -1
- data/bundler/lib/bundler/man/bundle-cache.1 +9 -3
- data/bundler/lib/bundler/man/bundle-cache.1.ronn +9 -2
- data/bundler/lib/bundler/man/bundle-check.1 +1 -1
- data/bundler/lib/bundler/man/bundle-clean.1 +2 -2
- data/bundler/lib/bundler/man/bundle-clean.1.ronn +1 -1
- data/bundler/lib/bundler/man/bundle-config.1 +26 -10
- data/bundler/lib/bundler/man/bundle-config.1.ronn +17 -10
- data/bundler/lib/bundler/man/bundle-console.1 +53 -0
- data/bundler/lib/bundler/man/bundle-console.1.ronn +44 -0
- data/bundler/lib/bundler/man/bundle-doctor.1 +1 -1
- data/bundler/lib/bundler/man/bundle-exec.1 +6 -6
- data/bundler/lib/bundler/man/bundle-exec.1.ronn +6 -6
- data/bundler/lib/bundler/man/bundle-gem.1 +27 -37
- data/bundler/lib/bundler/man/bundle-gem.1.ronn +5 -5
- data/bundler/lib/bundler/man/bundle-help.1 +13 -0
- data/bundler/lib/bundler/man/bundle-help.1.ronn +12 -0
- data/bundler/lib/bundler/man/bundle-info.1 +3 -3
- data/bundler/lib/bundler/man/bundle-info.1.ronn +3 -3
- data/bundler/lib/bundler/man/bundle-init.1 +5 -1
- data/bundler/lib/bundler/man/bundle-init.1.ronn +2 -0
- data/bundler/lib/bundler/man/bundle-inject.1 +5 -2
- data/bundler/lib/bundler/man/bundle-inject.1.ronn +3 -1
- data/bundler/lib/bundler/man/bundle-install.1 +5 -30
- data/bundler/lib/bundler/man/bundle-install.1.ronn +6 -29
- data/bundler/lib/bundler/man/bundle-list.1 +1 -1
- data/bundler/lib/bundler/man/bundle-lock.1 +1 -1
- data/bundler/lib/bundler/man/bundle-open.1 +22 -2
- data/bundler/lib/bundler/man/bundle-open.1.ronn +9 -1
- data/bundler/lib/bundler/man/bundle-outdated.1 +13 -9
- data/bundler/lib/bundler/man/bundle-outdated.1.ronn +12 -9
- data/bundler/lib/bundler/man/bundle-platform.1 +16 -6
- data/bundler/lib/bundler/man/bundle-platform.1.ronn +14 -7
- data/bundler/lib/bundler/man/bundle-plugin.1 +81 -0
- data/bundler/lib/bundler/man/bundle-plugin.1.ronn +59 -0
- data/bundler/lib/bundler/man/bundle-pristine.1 +1 -1
- data/bundler/lib/bundler/man/bundle-remove.1 +1 -1
- data/bundler/lib/bundler/man/bundle-show.1 +1 -1
- data/bundler/lib/bundler/man/bundle-update.1 +1 -1
- data/bundler/lib/bundler/man/bundle-version.1 +35 -0
- data/bundler/lib/bundler/man/bundle-version.1.ronn +24 -0
- data/bundler/lib/bundler/man/bundle-viz.1 +4 -1
- data/bundler/lib/bundler/man/bundle-viz.1.ronn +2 -0
- data/bundler/lib/bundler/man/bundle.1 +15 -10
- data/bundler/lib/bundler/man/bundle.1.ronn +12 -7
- data/bundler/lib/bundler/man/gemfile.5 +55 -55
- data/bundler/lib/bundler/man/gemfile.5.ronn +57 -53
- data/bundler/lib/bundler/man/index.txt +4 -0
- data/bundler/lib/bundler/match_metadata.rb +13 -0
- data/bundler/lib/bundler/match_remote_metadata.rb +29 -0
- data/bundler/lib/bundler/mirror.rb +5 -7
- data/bundler/lib/bundler/plugin/index.rb +5 -5
- data/bundler/lib/bundler/plugin/installer/rubygems.rb +0 -4
- data/bundler/lib/bundler/plugin/installer.rb +5 -2
- data/bundler/lib/bundler/plugin.rb +3 -1
- data/bundler/lib/bundler/remote_specification.rb +7 -12
- data/bundler/lib/bundler/resolver/base.rb +107 -0
- data/bundler/lib/bundler/resolver/candidate.rb +94 -0
- data/bundler/lib/bundler/resolver/incompatibility.rb +15 -0
- data/bundler/lib/bundler/resolver/package.rb +72 -0
- data/bundler/lib/bundler/resolver/root.rb +25 -0
- data/bundler/lib/bundler/resolver/spec_group.rb +42 -71
- data/bundler/lib/bundler/resolver.rb +335 -328
- data/bundler/lib/bundler/ruby_dsl.rb +7 -1
- data/bundler/lib/bundler/ruby_version.rb +8 -8
- data/bundler/lib/bundler/rubygems_ext.rb +100 -9
- data/bundler/lib/bundler/rubygems_gem_installer.rb +23 -14
- data/bundler/lib/bundler/rubygems_integration.rb +11 -15
- data/bundler/lib/bundler/runtime.rb +2 -6
- data/bundler/lib/bundler/safe_marshal.rb +31 -0
- data/bundler/lib/bundler/settings.rb +5 -11
- data/bundler/lib/bundler/setup.rb +4 -1
- data/bundler/lib/bundler/shared_helpers.rb +3 -3
- data/bundler/lib/bundler/source/git/git_proxy.rb +237 -74
- data/bundler/lib/bundler/source/git.rb +55 -30
- data/bundler/lib/bundler/source/metadata.rb +1 -2
- data/bundler/lib/bundler/source/path/installer.rb +1 -22
- data/bundler/lib/bundler/source/path.rb +6 -6
- data/bundler/lib/bundler/source/rubygems.rb +26 -81
- data/bundler/lib/bundler/source.rb +1 -1
- data/bundler/lib/bundler/source_list.rb +8 -2
- data/bundler/lib/bundler/spec_set.rb +60 -37
- data/bundler/lib/bundler/templates/Executable +1 -1
- data/bundler/lib/bundler/templates/Executable.bundler +5 -10
- data/bundler/lib/bundler/templates/Executable.standalone +2 -0
- data/bundler/lib/bundler/templates/newgem/Cargo.toml.tt +7 -0
- data/bundler/lib/bundler/templates/newgem/Gemfile.tt +3 -0
- data/bundler/lib/bundler/templates/newgem/README.md.tt +6 -4
- data/bundler/lib/bundler/templates/newgem/Rakefile.tt +12 -1
- 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 +10 -0
- 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 +9 -2
- data/bundler/lib/bundler/ui/rg_proxy.rb +1 -1
- data/bundler/lib/bundler/ui/shell.rb +35 -12
- data/bundler/lib/bundler/ui/silent.rb +21 -5
- 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/wrapper.rb +0 -1
- data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool.rb +3 -1
- data/bundler/lib/bundler/vendor/fileutils/lib/fileutils.rb +1351 -409
- data/bundler/lib/bundler/vendor/net-http-persistent/README.rdoc +1 -1
- data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb +1 -1
- 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 +60 -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/thor/lib/thor/shell/basic.rb +1 -1
- data/bundler/lib/bundler/vendor/uri/lib/uri/common.rb +64 -16
- data/bundler/lib/bundler/vendor/uri/lib/uri/file.rb +7 -1
- data/bundler/lib/bundler/vendor/uri/lib/uri/ftp.rb +2 -1
- data/bundler/lib/bundler/vendor/uri/lib/uri/generic.rb +27 -7
- 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 +15 -9
- data/bundler/lib/bundler/vendor/uri/lib/uri/rfc3986_parser.rb +11 -6
- 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 +3 -2
- data/bundler/lib/bundler/vendored_persistent.rb +1 -33
- data/bundler/lib/bundler/{vendored_tmpdir.rb → vendored_pub_grub.rb} +1 -1
- data/bundler/lib/bundler/version.rb +5 -1
- data/bundler/lib/bundler/worker.rb +5 -7
- data/bundler/lib/bundler.rb +25 -77
- data/{bin → exe}/gem +4 -5
- data/{bin → exe}/update_rubygems +12 -10
- data/lib/rubygems/available_set.rb +4 -3
- data/lib/rubygems/basic_specification.rb +5 -4
- data/lib/rubygems/bundler_version_finder.rb +2 -2
- data/lib/rubygems/command.rb +41 -32
- data/lib/rubygems/command_manager.rb +30 -15
- data/lib/rubygems/commands/build_command.rb +12 -8
- data/lib/rubygems/commands/cert_command.rb +34 -33
- data/lib/rubygems/commands/check_command.rb +21 -20
- data/lib/rubygems/commands/cleanup_command.rb +18 -17
- data/lib/rubygems/commands/contents_command.rb +14 -13
- data/lib/rubygems/commands/dependency_command.rb +17 -16
- data/lib/rubygems/commands/environment_command.rb +6 -5
- data/lib/rubygems/commands/exec_command.rb +249 -0
- data/lib/rubygems/commands/fetch_command.rb +10 -9
- data/lib/rubygems/commands/generate_index_command.rb +18 -17
- data/lib/rubygems/commands/help_command.rb +7 -6
- data/lib/rubygems/commands/info_command.rb +3 -3
- data/lib/rubygems/commands/install_command.rb +28 -23
- data/lib/rubygems/commands/list_command.rb +4 -3
- data/lib/rubygems/commands/lock_command.rb +5 -4
- data/lib/rubygems/commands/mirror_command.rb +4 -3
- data/lib/rubygems/commands/open_command.rb +10 -9
- data/lib/rubygems/commands/outdated_command.rb +6 -5
- data/lib/rubygems/commands/owner_command.rb +17 -14
- data/lib/rubygems/commands/pristine_command.rb +46 -36
- data/lib/rubygems/commands/push_command.rb +9 -8
- data/lib/rubygems/commands/query_command.rb +9 -8
- data/lib/rubygems/commands/rdoc_command.rb +21 -19
- data/lib/rubygems/commands/search_command.rb +4 -3
- data/lib/rubygems/commands/server_command.rb +4 -3
- data/lib/rubygems/commands/setup_command.rb +97 -106
- 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 +22 -21
- data/lib/rubygems/commands/specification_command.rb +14 -13
- data/lib/rubygems/commands/stale_command.rb +3 -2
- data/lib/rubygems/commands/uninstall_command.rb +44 -40
- data/lib/rubygems/commands/unpack_command.rb +14 -13
- data/lib/rubygems/commands/update_command.rb +42 -63
- data/lib/rubygems/commands/which_command.rb +8 -7
- data/lib/rubygems/commands/yank_command.rb +12 -11
- data/lib/rubygems/config_file.rb +55 -21
- data/lib/rubygems/core_ext/kernel_gem.rb +1 -6
- data/lib/rubygems/core_ext/kernel_require.rb +109 -115
- data/lib/rubygems/core_ext/kernel_warn.rb +33 -37
- data/lib/rubygems/core_ext/tcpsocket_init.rb +3 -1
- data/lib/rubygems/defaults.rb +33 -18
- data/lib/rubygems/dependency.rb +15 -11
- data/lib/rubygems/dependency_installer.rb +38 -37
- data/lib/rubygems/dependency_list.rb +7 -6
- data/lib/rubygems/deprecate.rb +3 -2
- data/lib/rubygems/doctor.rb +19 -18
- data/lib/rubygems/errors.rb +3 -2
- data/lib/rubygems/exceptions.rb +16 -8
- data/lib/rubygems/ext/build_error.rb +2 -1
- data/lib/rubygems/ext/builder.rb +37 -21
- data/lib/rubygems/ext/cargo_builder/link_flag_converter.rb +9 -5
- data/lib/rubygems/ext/cargo_builder.rb +150 -111
- data/lib/rubygems/ext/cmake_builder.rb +2 -2
- data/lib/rubygems/ext/configure_builder.rb +2 -1
- data/lib/rubygems/ext/ext_conf_builder.rb +11 -9
- data/lib/rubygems/ext/rake_builder.rb +7 -5
- data/lib/rubygems/ext.rb +8 -7
- data/lib/rubygems/gem_runner.rb +6 -5
- 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 +78 -0
- data/lib/rubygems/gemcutter_utilities.rb +90 -34
- data/lib/rubygems/indexer.rb +29 -28
- data/lib/rubygems/install_default_message.rb +3 -2
- data/lib/rubygems/install_message.rb +3 -2
- data/lib/rubygems/install_update_options.rb +56 -55
- data/lib/rubygems/installer.rb +54 -46
- data/lib/rubygems/installer_uninstaller_utils.rb +2 -2
- data/lib/rubygems/local_remote_options.rb +19 -20
- data/lib/rubygems/mock_gem_ui.rb +3 -2
- data/lib/rubygems/name_tuple.rb +5 -4
- data/lib/rubygems/optparse/lib/optparse.rb +20 -15
- data/lib/rubygems/optparse.rb +1 -1
- data/lib/rubygems/package/digest_io.rb +1 -0
- data/lib/rubygems/package/file_source.rb +3 -2
- data/lib/rubygems/package/io_source.rb +1 -0
- data/lib/rubygems/package/old.rb +9 -8
- data/lib/rubygems/package/source.rb +1 -0
- data/lib/rubygems/package/tar_header.rb +63 -62
- data/lib/rubygems/package/tar_reader/entry.rb +91 -9
- data/lib/rubygems/package/tar_reader.rb +2 -29
- data/lib/rubygems/package/tar_writer.rb +8 -7
- data/lib/rubygems/package.rb +64 -48
- data/lib/rubygems/package_task.rb +5 -4
- data/lib/rubygems/path_support.rb +1 -0
- data/lib/rubygems/platform.rb +79 -53
- data/lib/rubygems/psych_tree.rb +2 -1
- data/lib/rubygems/query_utils.rb +35 -35
- data/lib/rubygems/rdoc.rb +3 -2
- data/lib/rubygems/remote_fetcher.rb +23 -22
- data/lib/rubygems/request/connection_pools.rb +4 -4
- data/lib/rubygems/request/http_pool.rb +2 -1
- data/lib/rubygems/request/https_pool.rb +1 -0
- data/lib/rubygems/request.rb +23 -22
- data/lib/rubygems/request_set/gem_dependency_api.rb +123 -123
- data/lib/rubygems/request_set/lockfile/parser.rb +28 -27
- data/lib/rubygems/request_set/lockfile/tokenizer.rb +5 -3
- data/lib/rubygems/request_set/lockfile.rb +6 -5
- data/lib/rubygems/request_set.rb +20 -19
- data/lib/rubygems/requirement.rb +15 -14
- data/lib/rubygems/resolver/activation_request.rb +4 -3
- data/lib/rubygems/resolver/api_set.rb +5 -4
- data/lib/rubygems/resolver/api_specification.rb +7 -6
- data/lib/rubygems/resolver/best_set.rb +6 -5
- data/lib/rubygems/resolver/composed_set.rb +1 -0
- data/lib/rubygems/resolver/conflict.rb +11 -10
- 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 +3 -2
- data/lib/rubygems/resolver/git_specification.rb +7 -6
- data/lib/rubygems/resolver/index_set.rb +4 -3
- data/lib/rubygems/resolver/index_specification.rb +7 -5
- data/lib/rubygems/resolver/installed_specification.rb +5 -4
- data/lib/rubygems/resolver/installer_set.rb +15 -17
- data/lib/rubygems/resolver/local_specification.rb +3 -2
- data/lib/rubygems/resolver/lock_set.rb +5 -4
- data/lib/rubygems/resolver/lock_specification.rb +5 -4
- data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph.rb +1 -1
- data/lib/rubygems/resolver/molinillo/lib/molinillo/errors.rb +32 -26
- data/lib/rubygems/resolver/molinillo/lib/molinillo/gem_metadata.rb +1 -1
- data/lib/rubygems/resolver/molinillo.rb +2 -1
- 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 +1 -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 +41 -40
- data/lib/rubygems/s3_uri_signer.rb +10 -8
- data/lib/rubygems/safe_yaml.rb +4 -2
- data/lib/rubygems/security/policies.rb +48 -47
- data/lib/rubygems/security/policy.rb +19 -18
- data/lib/rubygems/security/signer.rb +6 -5
- data/lib/rubygems/security/trust_dir.rb +5 -4
- data/lib/rubygems/security.rb +30 -42
- data/lib/rubygems/security_option.rb +6 -5
- data/lib/rubygems/shellwords.rb +3 -0
- data/lib/rubygems/source/git.rb +22 -22
- data/lib/rubygems/source/installed.rb +2 -1
- data/lib/rubygems/source/local.rb +3 -2
- data/lib/rubygems/source/lock.rb +1 -0
- data/lib/rubygems/source/specific_file.rb +2 -1
- data/lib/rubygems/source/vendor.rb +1 -0
- data/lib/rubygems/source.rb +16 -16
- data/lib/rubygems/spec_fetcher.rb +10 -9
- data/lib/rubygems/specification.rb +121 -114
- data/lib/rubygems/specification_policy.rb +36 -15
- data/lib/rubygems/stub_specification.rb +11 -9
- data/lib/rubygems/text.rb +2 -2
- data/lib/rubygems/tsort/lib/tsort.rb +308 -310
- data/lib/rubygems/tsort.rb +1 -1
- data/lib/rubygems/uninstaller.rb +19 -18
- data/lib/rubygems/update_suggestion.rb +69 -0
- data/lib/rubygems/uri.rb +4 -4
- data/lib/rubygems/uri_formatter.rb +1 -1
- data/lib/rubygems/user_interaction.rb +37 -21
- data/lib/rubygems/util/licenses.rb +4 -3
- data/lib/rubygems/util/list.rb +1 -0
- data/lib/rubygems/util.rb +12 -15
- data/lib/rubygems/validator.rb +7 -6
- data/lib/rubygems/version.rb +17 -11
- data/lib/rubygems/version_option.rb +4 -3
- data/lib/rubygems.rb +89 -68
- data/rubygems-update.gemspec +10 -8
- data/setup.rb +10 -9
- data/test/rubygems/alternate_cert.pem +14 -14
- data/test/rubygems/alternate_cert_32.pem +15 -15
- data/test/rubygems/alternate_key.pem +25 -25
- data/test/rubygems/bad_rake.rb +1 -0
- data/test/rubygems/bundler_test_gem.rb +421 -0
- data/test/rubygems/child_cert.pem +15 -16
- data/test/rubygems/child_cert_32.pem +15 -16
- data/test/rubygems/child_key.pem +25 -25
- data/test/rubygems/encrypted_private_key.pem +26 -26
- data/test/rubygems/expired_cert.pem +15 -15
- data/test/rubygems/fake_certlib/openssl.rb +1 -0
- data/test/rubygems/future_cert.pem +15 -15
- data/test/rubygems/future_cert_32.pem +15 -15
- data/test/rubygems/good_rake.rb +1 -0
- data/test/rubygems/grandchild_cert.pem +15 -16
- data/test/rubygems/grandchild_cert_32.pem +15 -16
- data/test/rubygems/grandchild_key.pem +25 -25
- data/test/rubygems/helper.rb +172 -151
- data/test/rubygems/installer_test_case.rb +14 -13
- data/test/rubygems/invalid_issuer_cert.pem +16 -16
- data/test/rubygems/invalid_issuer_cert_32.pem +16 -16
- data/test/rubygems/invalid_key.pem +25 -25
- data/test/rubygems/invalid_signer_cert.pem +15 -15
- data/test/rubygems/invalid_signer_cert_32.pem +15 -15
- data/test/rubygems/invalidchild_cert.pem +15 -16
- data/test/rubygems/invalidchild_cert_32.pem +15 -16
- data/test/rubygems/invalidchild_key.pem +25 -25
- data/test/rubygems/multifactor_auth_utilities.rb +111 -0
- data/test/rubygems/package/tar_test_case.rb +53 -17
- data/test/rubygems/packages/Bluebie-legs-0.6.2.gem +0 -0
- data/test/rubygems/plugin/exception/rubygems_plugin.rb +2 -1
- data/test/rubygems/plugin/load/rubygems_plugin.rb +1 -0
- data/test/rubygems/plugin/standarderror/rubygems_plugin.rb +2 -1
- data/test/rubygems/private_key.pem +25 -25
- data/test/rubygems/public_cert.pem +16 -16
- data/test/rubygems/public_cert_32.pem +15 -15
- data/test/rubygems/public_key.pem +7 -7
- data/test/rubygems/rubygems/commands/crash_command.rb +1 -0
- data/test/rubygems/rubygems_plugin.rb +3 -2
- data/test/rubygems/simple_gem.rb +2 -1
- data/test/rubygems/specifications/bar-0.0.2.gemspec +2 -0
- data/test/rubygems/specifications/rubyforge-0.0.1.gemspec +6 -4
- data/test/rubygems/test_bundled_ca.rb +13 -12
- data/test/rubygems/test_config.rb +5 -4
- data/test/rubygems/test_deprecate.rb +5 -4
- data/test/rubygems/test_exit.rb +9 -3
- data/test/rubygems/test_gem.rb +339 -677
- data/test/rubygems/test_gem_available_set.rb +22 -21
- data/test/rubygems/test_gem_bundler_version_finder.rb +6 -4
- data/test/rubygems/test_gem_command.rb +45 -44
- data/test/rubygems/test_gem_command_manager.rb +96 -30
- data/test/rubygems/test_gem_commands_build_command.rb +74 -63
- data/test/rubygems/test_gem_commands_cert_command.rb +98 -99
- data/test/rubygems/test_gem_commands_check_command.rb +5 -4
- data/test/rubygems/test_gem_commands_cleanup_command.rb +41 -40
- data/test/rubygems/test_gem_commands_contents_command.rb +28 -27
- data/test/rubygems/test_gem_commands_dependency_command.rb +37 -36
- data/test/rubygems/test_gem_commands_environment_command.rb +17 -16
- data/test/rubygems/test_gem_commands_exec_command.rb +853 -0
- data/test/rubygems/test_gem_commands_fetch_command.rb +38 -37
- data/test/rubygems/test_gem_commands_generate_index_command.rb +8 -7
- data/test/rubygems/test_gem_commands_help_command.rb +14 -13
- data/test/rubygems/test_gem_commands_info_command.rb +29 -2
- data/test/rubygems/test_gem_commands_install_command.rb +152 -132
- data/test/rubygems/test_gem_commands_list_command.rb +5 -4
- data/test/rubygems/test_gem_commands_lock_command.rb +11 -10
- data/test/rubygems/test_gem_commands_mirror.rb +3 -2
- data/test/rubygems/test_gem_commands_open_command.rb +5 -4
- data/test/rubygems/test_gem_commands_outdated_command.rb +10 -9
- data/test/rubygems/test_gem_commands_owner_command.rb +227 -50
- data/test/rubygems/test_gem_commands_pristine_command.rb +142 -93
- data/test/rubygems/test_gem_commands_push_command.rb +189 -64
- data/test/rubygems/test_gem_commands_query_command.rb +74 -73
- data/test/rubygems/test_gem_commands_search_command.rb +3 -2
- data/test/rubygems/test_gem_commands_server_command.rb +3 -2
- data/test/rubygems/test_gem_commands_setup_command.rb +123 -96
- data/test/rubygems/test_gem_commands_signin_command.rb +71 -31
- data/test/rubygems/test_gem_commands_signout_command.rb +3 -3
- data/test/rubygems/test_gem_commands_sources_command.rb +29 -29
- data/test/rubygems/test_gem_commands_specification_command.rb +33 -32
- data/test/rubygems/test_gem_commands_stale_command.rb +5 -4
- data/test/rubygems/test_gem_commands_uninstall_command.rb +99 -81
- data/test/rubygems/test_gem_commands_unpack_command.rb +32 -31
- data/test/rubygems/test_gem_commands_update_command.rb +96 -95
- data/test/rubygems/test_gem_commands_which_command.rb +7 -6
- data/test/rubygems/test_gem_commands_yank_command.rb +162 -43
- data/test/rubygems/test_gem_config_file.rb +94 -81
- data/test/rubygems/test_gem_dependency.rb +76 -73
- data/test/rubygems/test_gem_dependency_installer.rb +200 -165
- data/test/rubygems/test_gem_dependency_list.rb +48 -47
- data/test/rubygems/test_gem_dependency_resolution_error.rb +5 -4
- data/test/rubygems/test_gem_doctor.rb +27 -26
- data/test/rubygems/test_gem_ext_builder.rb +60 -61
- data/test/rubygems/test_gem_ext_cargo_builder/custom_name/custom_name.gemspec +4 -4
- data/test/rubygems/test_gem_ext_cargo_builder/custom_name/{Cargo.lock → ext/custom_name_lib/Cargo.lock} +23 -33
- data/test/rubygems/test_gem_ext_cargo_builder/custom_name/{Cargo.toml → ext/custom_name_lib/Cargo.toml} +1 -1
- data/test/rubygems/test_gem_ext_cargo_builder/custom_name/{src → ext/custom_name_lib/src}/lib.rs +1 -1
- data/test/rubygems/test_gem_ext_cargo_builder/custom_name/lib/custom_name.rb +3 -0
- data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/Cargo.lock +37 -33
- data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/Cargo.toml +1 -1
- data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/rust_ruby_example.gemspec +2 -0
- data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/src/lib.rs +12 -0
- data/test/rubygems/test_gem_ext_cargo_builder.rb +48 -59
- data/test/rubygems/test_gem_ext_cargo_builder_link_flag_converter.rb +20 -19
- data/test/rubygems/test_gem_ext_cargo_builder_unit.rb +21 -36
- data/test/rubygems/test_gem_ext_cmake_builder.rb +16 -15
- data/test/rubygems/test_gem_ext_configure_builder.rb +14 -13
- data/test/rubygems/test_gem_ext_ext_conf_builder.rb +51 -52
- data/test/rubygems/test_gem_ext_rake_builder.rb +16 -15
- data/test/rubygems/test_gem_gem_runner.rb +15 -9
- data/test/rubygems/test_gem_gemcutter_utilities.rb +170 -84
- data/test/rubygems/test_gem_impossible_dependencies_error.rb +5 -4
- data/test/rubygems/test_gem_indexer.rb +87 -67
- data/test/rubygems/test_gem_install_update_options.rb +17 -16
- data/test/rubygems/test_gem_installer.rb +422 -304
- data/test/rubygems/test_gem_local_remote_options.rb +11 -10
- data/test/rubygems/test_gem_name_tuple.rb +5 -4
- data/test/rubygems/test_gem_package.rb +243 -231
- data/test/rubygems/test_gem_package_old.rb +14 -13
- data/test/rubygems/test_gem_package_tar_header.rb +48 -47
- data/test/rubygems/test_gem_package_tar_reader.rb +56 -8
- data/test/rubygems/test_gem_package_tar_reader_entry.rb +162 -16
- data/test/rubygems/test_gem_package_tar_writer.rb +77 -76
- data/test/rubygems/test_gem_package_task.rb +19 -18
- data/test/rubygems/test_gem_path_support.rb +15 -14
- data/test/rubygems/test_gem_platform.rb +333 -227
- data/test/rubygems/test_gem_rdoc.rb +15 -14
- data/test/rubygems/test_gem_remote_fetcher.rb +155 -154
- data/test/rubygems/test_gem_request.rb +64 -58
- data/test/rubygems/test_gem_request_connection_pools.rb +30 -29
- data/test/rubygems/test_gem_request_set.rb +101 -100
- data/test/rubygems/test_gem_request_set_gem_dependency_api.rb +210 -211
- data/test/rubygems/test_gem_request_set_lockfile.rb +87 -86
- data/test/rubygems/test_gem_request_set_lockfile_parser.rb +58 -57
- data/test/rubygems/test_gem_request_set_lockfile_tokenizer.rb +63 -62
- data/test/rubygems/test_gem_requirement.rb +48 -41
- data/test/rubygems/test_gem_resolver.rb +167 -99
- data/test/rubygems/test_gem_resolver_activation_request.rb +7 -6
- data/test/rubygems/test_gem_resolver_api_set.rb +34 -33
- data/test/rubygems/test_gem_resolver_api_specification.rb +48 -47
- data/test/rubygems/test_gem_resolver_best_set.rb +23 -22
- data/test/rubygems/test_gem_resolver_composed_set.rb +2 -1
- data/test/rubygems/test_gem_resolver_conflict.rb +13 -12
- data/test/rubygems/test_gem_resolver_dependency_request.rb +16 -15
- data/test/rubygems/test_gem_resolver_git_set.rb +22 -21
- data/test/rubygems/test_gem_resolver_git_specification.rb +22 -21
- data/test/rubygems/test_gem_resolver_index_set.rb +13 -12
- data/test/rubygems/test_gem_resolver_index_specification.rb +17 -16
- data/test/rubygems/test_gem_resolver_installed_specification.rb +6 -5
- data/test/rubygems/test_gem_resolver_installer_set.rb +79 -34
- data/test/rubygems/test_gem_resolver_local_specification.rb +8 -7
- data/test/rubygems/test_gem_resolver_lock_set.rb +13 -12
- data/test/rubygems/test_gem_resolver_lock_specification.rb +18 -17
- data/test/rubygems/test_gem_resolver_requirement_list.rb +2 -1
- data/test/rubygems/test_gem_resolver_specification.rb +9 -8
- data/test/rubygems/test_gem_resolver_vendor_set.rb +7 -6
- data/test/rubygems/test_gem_resolver_vendor_specification.rb +11 -10
- data/test/rubygems/test_gem_security.rb +69 -68
- data/test/rubygems/test_gem_security_policy.rb +72 -72
- data/test/rubygems/test_gem_security_signer.rb +35 -34
- data/test/rubygems/test_gem_security_trust_dir.rb +7 -6
- data/test/rubygems/test_gem_silent_ui.rb +39 -32
- data/test/rubygems/test_gem_source.rb +45 -44
- data/test/rubygems/test_gem_source_fetch_problem.rb +10 -9
- data/test/rubygems/test_gem_source_git.rb +69 -62
- data/test/rubygems/test_gem_source_installed.rb +17 -16
- data/test/rubygems/test_gem_source_list.rb +6 -5
- data/test/rubygems/test_gem_source_local.rb +15 -14
- data/test/rubygems/test_gem_source_lock.rb +32 -31
- data/test/rubygems/test_gem_source_specific_file.rb +18 -17
- data/test/rubygems/test_gem_source_subpath_problem.rb +8 -7
- data/test/rubygems/test_gem_source_vendor.rb +14 -13
- data/test/rubygems/test_gem_spec_fetcher.rb +73 -72
- data/test/rubygems/test_gem_specification.rb +533 -469
- data/test/rubygems/test_gem_stream_ui.rb +53 -22
- data/test/rubygems/test_gem_stub_specification.rb +33 -32
- data/test/rubygems/test_gem_text.rb +2 -1
- data/test/rubygems/test_gem_uninstaller.rb +118 -117
- data/test/rubygems/test_gem_unsatisfiable_dependency_error.rb +4 -3
- data/test/rubygems/test_gem_update_suggestion.rb +209 -0
- data/test/rubygems/test_gem_uri.rb +6 -4
- data/test/rubygems/test_gem_uri_formatter.rb +15 -14
- data/test/rubygems/test_gem_util.rb +24 -23
- data/test/rubygems/test_gem_validator.rb +8 -8
- data/test/rubygems/test_gem_version.rb +24 -16
- data/test/rubygems/test_gem_version_option.rb +16 -15
- data/test/rubygems/test_kernel.rb +43 -48
- data/test/rubygems/test_project_sanity.rb +32 -3
- data/test/rubygems/test_remote_fetch_error.rb +8 -7
- data/test/rubygems/test_require.rb +118 -103
- data/test/rubygems/test_rubygems.rb +10 -8
- data/test/rubygems/test_webauthn_listener.rb +143 -0
- data/test/rubygems/test_webauthn_listener_response.rb +93 -0
- data/test/rubygems/test_webauthn_poller.rb +124 -0
- data/test/rubygems/utilities.rb +98 -34
- data/test/rubygems/wrong_key_cert.pem +15 -15
- data/test/rubygems/wrong_key_cert_32.pem +15 -15
- data/test/test_changelog_generator.rb +1 -1
- metadata +99 -46
- 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/LICENSE +0 -9
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/delegates/resolution_state.rb +0 -57
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/delegates/specification_provider.rb +0 -88
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/action.rb +0 -36
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/add_edge_no_circular.rb +0 -66
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/add_vertex.rb +0 -62
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/delete_edge.rb +0 -63
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/detach_vertex_named.rb +0 -61
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/log.rb +0 -126
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/set_payload.rb +0 -46
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/tag.rb +0 -36
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/vertex.rb +0 -164
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph.rb +0 -255
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/errors.rb +0 -149
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/gem_metadata.rb +0 -6
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/modules/specification_provider.rb +0 -112
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/modules/ui.rb +0 -67
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/resolution.rb +0 -839
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/resolver.rb +0 -46
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/state.rb +0 -58
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo.rb +0 -11
- data/bundler/lib/bundler/vendor/tmpdir/lib/tmpdir.rb +0 -154
- data/bundler/lib/bundler/vendored_molinillo.rb +0 -4
- data/bundler/lib/bundler/version_ranges.rb +0 -122
- data/test/rubygems/test_gem_ext_cargo_builder/custom_name/build.rb +0 -21
- data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/build.rb +0 -21
data/lib/rubygems/defaults.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
module Gem
|
3
|
-
DEFAULT_HOST = "https://rubygems.org"
|
4
|
+
DEFAULT_HOST = "https://rubygems.org"
|
4
5
|
|
5
6
|
@post_install_hooks ||= []
|
6
7
|
@done_installing_hooks ||= []
|
@@ -20,10 +21,10 @@ module Gem
|
|
20
21
|
# specified in the environment
|
21
22
|
|
22
23
|
def self.default_spec_cache_dir
|
23
|
-
default_spec_cache_dir = File.join Gem.user_home,
|
24
|
+
default_spec_cache_dir = File.join Gem.user_home, ".gem", "specs"
|
24
25
|
|
25
26
|
unless File.exist?(default_spec_cache_dir)
|
26
|
-
default_spec_cache_dir = File.join Gem.data_home,
|
27
|
+
default_spec_cache_dir = File.join Gem.data_home, "gem", "specs"
|
27
28
|
end
|
28
29
|
|
29
30
|
default_spec_cache_dir
|
@@ -34,7 +35,7 @@ module Gem
|
|
34
35
|
# specified in the environment
|
35
36
|
|
36
37
|
def self.default_dir
|
37
|
-
@default_dir ||= File.join(RbConfig::CONFIG[
|
38
|
+
@default_dir ||= File.join(RbConfig::CONFIG["rubylibprefix"], "gems", RbConfig::CONFIG["ruby_version"])
|
38
39
|
end
|
39
40
|
|
40
41
|
##
|
@@ -81,7 +82,7 @@ module Gem
|
|
81
82
|
Dir.home.dup
|
82
83
|
rescue
|
83
84
|
if Gem.win_platform?
|
84
|
-
File.expand_path File.join(ENV[
|
85
|
+
File.expand_path File.join(ENV["HOMEDRIVE"] || ENV["SystemDrive"], "/")
|
85
86
|
else
|
86
87
|
File.expand_path "/"
|
87
88
|
end
|
@@ -103,7 +104,7 @@ module Gem
|
|
103
104
|
gem_dir = File.join(Gem.user_home, ".gem")
|
104
105
|
gem_dir = File.join(Gem.data_home, "gem") unless File.exist?(gem_dir)
|
105
106
|
parts = [gem_dir, ruby_engine]
|
106
|
-
parts << RbConfig::CONFIG[
|
107
|
+
parts << RbConfig::CONFIG["ruby_version"] unless RbConfig::CONFIG["ruby_version"].empty?
|
107
108
|
File.join parts
|
108
109
|
end
|
109
110
|
|
@@ -111,14 +112,14 @@ module Gem
|
|
111
112
|
# The path to standard location of the user's configuration directory.
|
112
113
|
|
113
114
|
def self.config_home
|
114
|
-
@config_home ||= (ENV["XDG_CONFIG_HOME"] || File.join(Gem.user_home,
|
115
|
+
@config_home ||= (ENV["XDG_CONFIG_HOME"] || File.join(Gem.user_home, ".config"))
|
115
116
|
end
|
116
117
|
|
117
118
|
##
|
118
119
|
# Finds the user's config file
|
119
120
|
|
120
121
|
def self.find_config_file
|
121
|
-
gemrc = File.join Gem.user_home,
|
122
|
+
gemrc = File.join Gem.user_home, ".gemrc"
|
122
123
|
if File.exist? gemrc
|
123
124
|
gemrc
|
124
125
|
else
|
@@ -133,18 +134,32 @@ module Gem
|
|
133
134
|
@config_file ||= find_config_file.tap(&Gem::UNTAINT)
|
134
135
|
end
|
135
136
|
|
137
|
+
##
|
138
|
+
# The path to standard location of the user's state file.
|
139
|
+
|
140
|
+
def self.state_file
|
141
|
+
@state_file ||= File.join(Gem.state_home, "gem", "last_update_check").tap(&Gem::UNTAINT)
|
142
|
+
end
|
143
|
+
|
136
144
|
##
|
137
145
|
# The path to standard location of the user's cache directory.
|
138
146
|
|
139
147
|
def self.cache_home
|
140
|
-
@cache_home ||= (ENV["XDG_CACHE_HOME"] || File.join(Gem.user_home,
|
148
|
+
@cache_home ||= (ENV["XDG_CACHE_HOME"] || File.join(Gem.user_home, ".cache"))
|
141
149
|
end
|
142
150
|
|
143
151
|
##
|
144
152
|
# The path to standard location of the user's data directory.
|
145
153
|
|
146
154
|
def self.data_home
|
147
|
-
@data_home ||= (ENV["XDG_DATA_HOME"] || File.join(Gem.user_home,
|
155
|
+
@data_home ||= (ENV["XDG_DATA_HOME"] || File.join(Gem.user_home, ".local", "share"))
|
156
|
+
end
|
157
|
+
|
158
|
+
##
|
159
|
+
# The path to standard location of the user's state directory.
|
160
|
+
|
161
|
+
def self.state_home
|
162
|
+
@state_home ||= (ENV["XDG_STATE_HOME"] || File.join(Gem.user_home, ".local", "state"))
|
148
163
|
end
|
149
164
|
|
150
165
|
##
|
@@ -161,7 +176,7 @@ module Gem
|
|
161
176
|
path = []
|
162
177
|
path << user_dir if user_home && File.exist?(user_home)
|
163
178
|
path << default_dir
|
164
|
-
path << vendor_dir if vendor_dir
|
179
|
+
path << vendor_dir if vendor_dir && File.directory?(vendor_dir)
|
165
180
|
path
|
166
181
|
end
|
167
182
|
|
@@ -169,9 +184,9 @@ module Gem
|
|
169
184
|
# Deduce Ruby's --program-prefix and --program-suffix from its install name
|
170
185
|
|
171
186
|
def self.default_exec_format
|
172
|
-
exec_format = RbConfig::CONFIG[
|
187
|
+
exec_format = RbConfig::CONFIG["ruby_install_name"].sub("ruby", "%s") rescue "%s"
|
173
188
|
|
174
|
-
unless exec_format
|
189
|
+
unless exec_format.include?("%s")
|
175
190
|
raise Gem::Exception,
|
176
191
|
"[BUG] invalid exec_format #{exec_format.inspect}, no %s"
|
177
192
|
end
|
@@ -183,7 +198,7 @@ module Gem
|
|
183
198
|
# The default directory for binaries
|
184
199
|
|
185
200
|
def self.default_bindir
|
186
|
-
RbConfig::CONFIG[
|
201
|
+
RbConfig::CONFIG["bindir"]
|
187
202
|
end
|
188
203
|
|
189
204
|
def self.ruby_engine
|
@@ -227,14 +242,14 @@ module Gem
|
|
227
242
|
# Directory where vendor gems are installed.
|
228
243
|
|
229
244
|
def self.vendor_dir # :nodoc:
|
230
|
-
if vendor_dir = ENV[
|
245
|
+
if vendor_dir = ENV["GEM_VENDOR"]
|
231
246
|
return vendor_dir.dup
|
232
247
|
end
|
233
248
|
|
234
|
-
return nil unless RbConfig::CONFIG.key?
|
249
|
+
return nil unless RbConfig::CONFIG.key? "vendordir"
|
235
250
|
|
236
|
-
File.join RbConfig::CONFIG[
|
237
|
-
RbConfig::CONFIG[
|
251
|
+
File.join RbConfig::CONFIG["vendordir"], "gems",
|
252
|
+
RbConfig::CONFIG["ruby_version"]
|
238
253
|
end
|
239
254
|
|
240
255
|
##
|
data/lib/rubygems/dependency.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
##
|
3
4
|
# The Dependency class holds a Gem name and a Gem::Requirement.
|
4
5
|
|
@@ -97,14 +98,14 @@ class Gem::Dependency
|
|
97
98
|
end
|
98
99
|
|
99
100
|
def pretty_print(q) # :nodoc:
|
100
|
-
q.group 1,
|
101
|
+
q.group 1, "Gem::Dependency.new(", ")" do
|
101
102
|
q.pp name
|
102
|
-
q.text
|
103
|
+
q.text ","
|
103
104
|
q.breakable
|
104
105
|
|
105
106
|
q.pp requirement
|
106
107
|
|
107
|
-
q.text
|
108
|
+
q.text ","
|
108
109
|
q.breakable
|
109
110
|
|
110
111
|
q.pp type
|
@@ -115,7 +116,7 @@ class Gem::Dependency
|
|
115
116
|
# What does this dependency require?
|
116
117
|
|
117
118
|
def requirement
|
118
|
-
return @requirement if defined?(@requirement)
|
119
|
+
return @requirement if defined?(@requirement) && @requirement
|
119
120
|
|
120
121
|
# @version_requirements and @version_requirement are legacy ivar
|
121
122
|
# names, and supported here because older gems need to keep
|
@@ -197,7 +198,7 @@ class Gem::Dependency
|
|
197
198
|
reqs = other.requirement.requirements
|
198
199
|
|
199
200
|
return false unless reqs.length == 1
|
200
|
-
return false unless reqs.first.first ==
|
201
|
+
return false unless reqs.first.first == "="
|
201
202
|
|
202
203
|
version = reqs.first.last
|
203
204
|
|
@@ -230,10 +231,10 @@ class Gem::Dependency
|
|
230
231
|
|
231
232
|
version = Gem::Version.new version
|
232
233
|
|
233
|
-
return true if requirement.none?
|
234
|
-
return false if version.prerelease?
|
235
|
-
|
236
|
-
|
234
|
+
return true if requirement.none? && !version.prerelease?
|
235
|
+
return false if version.prerelease? &&
|
236
|
+
!allow_prerelease &&
|
237
|
+
!prerelease?
|
237
238
|
|
238
239
|
requirement.satisfied_by? version
|
239
240
|
end
|
@@ -277,7 +278,10 @@ class Gem::Dependency
|
|
277
278
|
requirement.satisfied_by?(spec.version) && env_req.satisfied_by?(spec.version)
|
278
279
|
end.map(&:to_spec)
|
279
280
|
|
280
|
-
|
281
|
+
if prioritizes_bundler?
|
282
|
+
require_relative "bundler_version_finder"
|
283
|
+
Gem::BundlerVersionFinder.prioritize!(matches)
|
284
|
+
end
|
281
285
|
|
282
286
|
if platform_only
|
283
287
|
matches.reject! do |spec|
|
@@ -296,7 +300,7 @@ class Gem::Dependency
|
|
296
300
|
end
|
297
301
|
|
298
302
|
def prioritizes_bundler?
|
299
|
-
name == "bundler"
|
303
|
+
name == "bundler" && !specific?
|
300
304
|
end
|
301
305
|
|
302
306
|
def to_specs
|
@@ -1,12 +1,13 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require_relative
|
4
|
-
require_relative
|
5
|
-
require_relative
|
6
|
-
require_relative
|
7
|
-
require_relative
|
8
|
-
require_relative
|
9
|
-
require_relative
|
2
|
+
|
3
|
+
require_relative "../rubygems"
|
4
|
+
require_relative "dependency_list"
|
5
|
+
require_relative "package"
|
6
|
+
require_relative "installer"
|
7
|
+
require_relative "spec_fetcher"
|
8
|
+
require_relative "user_interaction"
|
9
|
+
require_relative "available_set"
|
10
|
+
require_relative "deprecate"
|
10
11
|
|
11
12
|
##
|
12
13
|
# Installs a gem along with all its dependencies from local and remote gems.
|
@@ -16,16 +17,16 @@ class Gem::DependencyInstaller
|
|
16
17
|
extend Gem::Deprecate
|
17
18
|
|
18
19
|
DEFAULT_OPTIONS = { # :nodoc:
|
19
|
-
:env_shebang
|
20
|
-
:document
|
21
|
-
:domain
|
22
|
-
:force
|
23
|
-
:format_executable
|
20
|
+
:env_shebang => false,
|
21
|
+
:document => %w[ri],
|
22
|
+
:domain => :both, # HACK dup
|
23
|
+
:force => false,
|
24
|
+
:format_executable => false, # HACK dup
|
24
25
|
:ignore_dependencies => false,
|
25
|
-
:prerelease
|
26
|
-
:security_policy
|
27
|
-
:wrappers
|
28
|
-
:build_args
|
26
|
+
:prerelease => false,
|
27
|
+
:security_policy => nil, # HACK NoSecurity requires OpenSSL. AlmostNo? Low?
|
28
|
+
:wrappers => true,
|
29
|
+
:build_args => nil,
|
29
30
|
:build_docs_in_background => false,
|
30
31
|
:install_as_default => false,
|
31
32
|
}.freeze
|
@@ -109,7 +110,7 @@ class Gem::DependencyInstaller
|
|
109
110
|
# gems should be considered.
|
110
111
|
|
111
112
|
def consider_local?
|
112
|
-
@domain == :both
|
113
|
+
@domain == :both || @domain == :local
|
113
114
|
end
|
114
115
|
|
115
116
|
##
|
@@ -117,7 +118,7 @@ class Gem::DependencyInstaller
|
|
117
118
|
# gems should be considered.
|
118
119
|
|
119
120
|
def consider_remote?
|
120
|
-
@domain == :both
|
121
|
+
@domain == :both || @domain == :remote
|
121
122
|
end
|
122
123
|
|
123
124
|
##
|
@@ -197,7 +198,7 @@ class Gem::DependencyInstaller
|
|
197
198
|
|
198
199
|
def in_background(what) # :nodoc:
|
199
200
|
fork_happened = false
|
200
|
-
if @build_docs_in_background
|
201
|
+
if @build_docs_in_background && Process.respond_to?(:fork)
|
201
202
|
begin
|
202
203
|
Process.fork do
|
203
204
|
yield
|
@@ -230,22 +231,22 @@ class Gem::DependencyInstaller
|
|
230
231
|
@installed_gems = []
|
231
232
|
|
232
233
|
options = {
|
233
|
-
:bin_dir
|
234
|
-
:build_args
|
235
|
-
:document
|
236
|
-
:env_shebang
|
237
|
-
:force
|
238
|
-
:format_executable
|
234
|
+
:bin_dir => @bin_dir,
|
235
|
+
:build_args => @build_args,
|
236
|
+
:document => @document,
|
237
|
+
:env_shebang => @env_shebang,
|
238
|
+
:force => @force,
|
239
|
+
:format_executable => @format_executable,
|
239
240
|
:ignore_dependencies => @ignore_dependencies,
|
240
|
-
:prerelease
|
241
|
-
:security_policy
|
242
|
-
:user_install
|
243
|
-
:wrappers
|
244
|
-
:build_root
|
245
|
-
:install_as_default
|
246
|
-
:dir_mode
|
247
|
-
:data_mode
|
248
|
-
:prog_mode
|
241
|
+
:prerelease => @prerelease,
|
242
|
+
:security_policy => @security_policy,
|
243
|
+
:user_install => @user_install,
|
244
|
+
:wrappers => @wrappers,
|
245
|
+
:build_root => @build_root,
|
246
|
+
:install_as_default => @install_as_default,
|
247
|
+
:dir_mode => @dir_mode,
|
248
|
+
:data_mode => @data_mode,
|
249
|
+
:prog_mode => @prog_mode,
|
249
250
|
}
|
250
251
|
options[:install_dir] = @install_dir if @only_install_dir
|
251
252
|
|
@@ -268,7 +269,7 @@ class Gem::DependencyInstaller
|
|
268
269
|
end
|
269
270
|
|
270
271
|
def install_development_deps # :nodoc:
|
271
|
-
if @development
|
272
|
+
if @development && @dev_shallow
|
272
273
|
:shallow
|
273
274
|
elsif @development
|
274
275
|
:all
|
@@ -289,7 +290,7 @@ class Gem::DependencyInstaller
|
|
289
290
|
installer_set.force = @force
|
290
291
|
|
291
292
|
if consider_local?
|
292
|
-
if dep_or_name =~ /\.gem$/
|
293
|
+
if dep_or_name =~ /\.gem$/ && File.file?(dep_or_name)
|
293
294
|
src = Gem::Source::SpecificFile.new dep_or_name
|
294
295
|
installer_set.add_local dep_or_name, src.spec, src
|
295
296
|
version = src.spec.version if version == Gem::Requirement.default
|
@@ -1,12 +1,13 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
#--
|
3
4
|
# Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others.
|
4
5
|
# All rights reserved.
|
5
6
|
# See LICENSE.txt for permissions.
|
6
7
|
#++
|
7
8
|
|
8
|
-
require_relative
|
9
|
-
require_relative
|
9
|
+
require_relative "tsort"
|
10
|
+
require_relative "deprecate"
|
10
11
|
|
11
12
|
##
|
12
13
|
# Gem::DependencyList is used for installing and uninstalling gems in the
|
@@ -119,11 +120,11 @@ class Gem::DependencyList
|
|
119
120
|
each do |spec|
|
120
121
|
spec.runtime_dependencies.each do |dep|
|
121
122
|
inst = Gem::Specification.any? do |installed_spec|
|
122
|
-
dep.name == installed_spec.name
|
123
|
-
dep.requirement.satisfied_by?
|
123
|
+
dep.name == installed_spec.name &&
|
124
|
+
dep.requirement.satisfied_by?(installed_spec.version)
|
124
125
|
end
|
125
126
|
|
126
|
-
unless inst
|
127
|
+
unless inst || @specs.find {|s| s.satisfies_requirement? dep }
|
127
128
|
unsatisfied[spec.name] << dep
|
128
129
|
return unsatisfied if quick
|
129
130
|
end
|
@@ -175,7 +176,7 @@ class Gem::DependencyList
|
|
175
176
|
def remove_specs_unsatisfied_by(dependencies)
|
176
177
|
specs.reject! do |spec|
|
177
178
|
dep = dependencies[spec.name]
|
178
|
-
dep
|
179
|
+
dep && !dep.requirement.satisfied_by?(spec.version)
|
179
180
|
end
|
180
181
|
end
|
181
182
|
|
data/lib/rubygems/deprecate.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
##
|
3
4
|
# Provides 3 methods for declaring when something is going away.
|
4
5
|
#
|
@@ -143,7 +144,7 @@ module Gem::Deprecate
|
|
143
144
|
end
|
144
145
|
|
145
146
|
# Deprecation method to deprecate Rubygems commands
|
146
|
-
def rubygems_deprecate_command
|
147
|
+
def rubygems_deprecate_command(version = Gem::Deprecate.next_rubygems_major_version)
|
147
148
|
class_eval do
|
148
149
|
define_method "deprecated?" do
|
149
150
|
true
|
@@ -151,7 +152,7 @@ module Gem::Deprecate
|
|
151
152
|
|
152
153
|
define_method "deprecation_warning" do
|
153
154
|
msg = [ "#{self.command} command is deprecated",
|
154
|
-
". It will be removed in Rubygems #{
|
155
|
+
". It will be removed in Rubygems #{version}.\n",
|
155
156
|
]
|
156
157
|
|
157
158
|
alert_warning "#{msg.join}" unless Gem::Deprecate.skip
|
data/lib/rubygems/doctor.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require_relative
|
2
|
+
|
3
|
+
require_relative "../rubygems"
|
4
|
+
require_relative "user_interaction"
|
4
5
|
|
5
6
|
##
|
6
7
|
# Cleans up after a partially-failed uninstall or for an invalid
|
@@ -19,18 +20,18 @@ class Gem::Doctor
|
|
19
20
|
# subdirectory.
|
20
21
|
|
21
22
|
REPOSITORY_EXTENSION_MAP = [ # :nodoc:
|
22
|
-
[
|
23
|
-
[
|
24
|
-
[
|
25
|
-
[
|
26
|
-
[
|
27
|
-
[
|
28
|
-
[
|
23
|
+
["specifications", ".gemspec"],
|
24
|
+
["build_info", ".info"],
|
25
|
+
["cache", ".gem"],
|
26
|
+
["doc", ""],
|
27
|
+
["extensions", ""],
|
28
|
+
["gems", ""],
|
29
|
+
["plugins", ""],
|
29
30
|
].freeze
|
30
31
|
|
31
32
|
missing =
|
32
33
|
Gem::REPOSITORY_SUBDIRECTORIES.sort -
|
33
|
-
|
34
|
+
REPOSITORY_EXTENSION_MAP.map {|(k,_)| k }.sort
|
34
35
|
|
35
36
|
raise "Update REPOSITORY_EXTENSION_MAP, missing: #{missing.join ', '}" unless
|
36
37
|
missing.empty?
|
@@ -59,7 +60,7 @@ class Gem::Doctor
|
|
59
60
|
# Are we doctoring a gem repository?
|
60
61
|
|
61
62
|
def gem_repository?
|
62
|
-
|
63
|
+
!installed_specs.empty?
|
63
64
|
end
|
64
65
|
|
65
66
|
##
|
@@ -74,8 +75,8 @@ class Gem::Doctor
|
|
74
75
|
Gem.use_paths @gem_repository.to_s
|
75
76
|
|
76
77
|
unless gem_repository?
|
77
|
-
say
|
78
|
-
|
78
|
+
say "This directory does not appear to be a RubyGems repository, " +
|
79
|
+
"skipping"
|
79
80
|
say
|
80
81
|
return
|
81
82
|
end
|
@@ -111,16 +112,16 @@ class Gem::Doctor
|
|
111
112
|
basename = File.basename(child, extension)
|
112
113
|
next if installed_specs.include? basename
|
113
114
|
next if /^rubygems-\d/ =~ basename
|
114
|
-
next if
|
115
|
-
next if
|
115
|
+
next if "specifications" == sub_directory && "default" == basename
|
116
|
+
next if "plugins" == sub_directory && Gem.plugin_suffix_regexp =~ (basename)
|
116
117
|
|
117
|
-
type = File.directory?(child) ?
|
118
|
+
type = File.directory?(child) ? "directory" : "file"
|
118
119
|
|
119
120
|
action = if @dry_run
|
120
|
-
|
121
|
+
"Extra"
|
121
122
|
else
|
122
123
|
FileUtils.rm_r(child)
|
123
|
-
|
124
|
+
"Removed"
|
124
125
|
end
|
125
126
|
|
126
127
|
say "#{action} #{type} #{sub_directory}/#{File.basename(child)}"
|
data/lib/rubygems/errors.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
#--
|
3
4
|
# This file contains all the various exceptions and other errors that are used
|
4
5
|
# inside of RubyGems.
|
@@ -136,8 +137,8 @@ module Gem
|
|
136
137
|
"Found %s (%s), but was for platform%s %s" %
|
137
138
|
[@name,
|
138
139
|
@version,
|
139
|
-
@platforms.size == 1 ?
|
140
|
-
@platforms.join(
|
140
|
+
@platforms.size == 1 ? "" : "s",
|
141
|
+
@platforms.join(" ,")]
|
141
142
|
end
|
142
143
|
end
|
143
144
|
|
data/lib/rubygems/exceptions.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require_relative
|
4
|
-
require_relative
|
3
|
+
require_relative "deprecate"
|
4
|
+
require_relative "unknown_command_spell_checker"
|
5
5
|
|
6
6
|
##
|
7
7
|
# Base exception class for RubyGems. All exception raised by RubyGems are a
|
@@ -27,7 +27,7 @@ class Gem::UnknownCommandError < Gem::Exception
|
|
27
27
|
if DidYouMean.respond_to?(:correct_error)
|
28
28
|
DidYouMean.correct_error(Gem::UnknownCommandError, Gem::UnknownCommandSpellChecker)
|
29
29
|
else
|
30
|
-
DidYouMean::SPELL_CHECKERS[
|
30
|
+
DidYouMean::SPELL_CHECKERS["Gem::UnknownCommandError"] =
|
31
31
|
Gem::UnknownCommandSpellChecker
|
32
32
|
|
33
33
|
prepend DidYouMean::Correctable
|
@@ -154,7 +154,7 @@ class Gem::ImpossibleDependenciesError < Gem::Exception
|
|
154
154
|
|
155
155
|
def build_message # :nodoc:
|
156
156
|
requester = @request.requester
|
157
|
-
requester = requester ? requester.spec.full_name :
|
157
|
+
requester = requester ? requester.spec.full_name : "The user"
|
158
158
|
dependency = @request.dependency
|
159
159
|
|
160
160
|
message = "#{requester} requires #{dependency} but it conflicted:\n".dup
|
@@ -213,6 +213,16 @@ class Gem::RubyVersionMismatch < Gem::Exception; end
|
|
213
213
|
|
214
214
|
class Gem::VerificationError < Gem::Exception; end
|
215
215
|
|
216
|
+
##
|
217
|
+
# Raised by Gem::WebauthnListener when an error occurs during security
|
218
|
+
# device verification.
|
219
|
+
|
220
|
+
class Gem::WebauthnVerificationError < Gem::Exception
|
221
|
+
def initialize(message)
|
222
|
+
super "Security device verification failed: #{message}"
|
223
|
+
end
|
224
|
+
end
|
225
|
+
|
216
226
|
##
|
217
227
|
# Raised to indicate that a system exit should occur with the specified
|
218
228
|
# exit_code
|
@@ -221,14 +231,12 @@ class Gem::SystemExitException < SystemExit
|
|
221
231
|
##
|
222
232
|
# The exit code for the process
|
223
233
|
|
224
|
-
|
234
|
+
alias exit_code status
|
225
235
|
|
226
236
|
##
|
227
237
|
# Creates a new SystemExitException with the given +exit_code+
|
228
238
|
|
229
239
|
def initialize(exit_code)
|
230
|
-
@exit_code = exit_code
|
231
|
-
|
232
240
|
super exit_code, "Exiting RubyGems with exit_code #{exit_code}"
|
233
241
|
end
|
234
242
|
end
|
@@ -254,7 +262,7 @@ class Gem::UnsatisfiableDependencyError < Gem::DependencyError
|
|
254
262
|
# Gem::Resolver::DependencyRequest +dep+
|
255
263
|
|
256
264
|
def initialize(dep, platform_mismatch=nil)
|
257
|
-
if platform_mismatch
|
265
|
+
if platform_mismatch && !platform_mismatch.empty?
|
258
266
|
plats = platform_mismatch.map {|x| x.platform.to_s }.sort.uniq
|
259
267
|
super "Unable to resolve dependency: No match for '#{dep}' on this platform. Found: #{plats.join(', ')}"
|
260
268
|
else
|