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/uninstaller.rb
CHANGED
@@ -1,16 +1,17 @@
|
|
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
|
9
|
-
require_relative
|
10
|
-
require_relative
|
11
|
-
require_relative
|
12
|
-
require_relative
|
13
|
-
require_relative
|
9
|
+
require "fileutils"
|
10
|
+
require_relative "../rubygems"
|
11
|
+
require_relative "installer_uninstaller_utils"
|
12
|
+
require_relative "dependency_list"
|
13
|
+
require_relative "rdoc"
|
14
|
+
require_relative "user_interaction"
|
14
15
|
|
15
16
|
##
|
16
17
|
# An Uninstaller.
|
@@ -105,8 +106,8 @@ class Gem::Uninstaller
|
|
105
106
|
@default_specs_matching_uninstall_params = default_specs
|
106
107
|
|
107
108
|
list, other_repo_specs = list.partition do |spec|
|
108
|
-
@gem_home == spec.base_dir
|
109
|
-
(@user_install
|
109
|
+
@gem_home == spec.base_dir ||
|
110
|
+
(@user_install && spec.base_dir == Gem.user_dir)
|
110
111
|
end
|
111
112
|
|
112
113
|
list.sort!
|
@@ -239,8 +240,8 @@ class Gem::Uninstaller
|
|
239
240
|
# spec:: the spec of the gem to be uninstalled
|
240
241
|
|
241
242
|
def remove(spec)
|
242
|
-
unless path_ok?(@gem_home, spec)
|
243
|
-
(@user_install
|
243
|
+
unless path_ok?(@gem_home, spec) ||
|
244
|
+
(@user_install && path_ok?(Gem.user_dir, spec))
|
244
245
|
e = Gem::GemNotInHomeException.new \
|
245
246
|
"Gem '#{spec.full_name}' is not installed in directory #{@gem_home}"
|
246
247
|
e.spec = spec
|
@@ -302,8 +303,8 @@ class Gem::Uninstaller
|
|
302
303
|
# Is +spec+ in +gem_dir+?
|
303
304
|
|
304
305
|
def path_ok?(gem_dir, spec)
|
305
|
-
full_path = File.join gem_dir,
|
306
|
-
original_path = File.join gem_dir,
|
306
|
+
full_path = File.join gem_dir, "gems", spec.full_name
|
307
|
+
original_path = File.join gem_dir, "gems", spec.original_name
|
307
308
|
|
308
309
|
full_path == spec.full_gem_path || original_path == spec.full_gem_path
|
309
310
|
end
|
@@ -332,10 +333,10 @@ class Gem::Uninstaller
|
|
332
333
|
# Asks if it is OK to remove +spec+. Returns true if it is OK.
|
333
334
|
|
334
335
|
def ask_if_ok(spec) # :nodoc:
|
335
|
-
msg = [
|
336
|
-
msg <<
|
336
|
+
msg = [""]
|
337
|
+
msg << "You have requested to uninstall the gem:"
|
337
338
|
msg << "\t#{spec.full_name}"
|
338
|
-
msg <<
|
339
|
+
msg << ""
|
339
340
|
|
340
341
|
siblings = Gem::Specification.select do |s|
|
341
342
|
s.name == spec.name && s.full_name != spec.full_name
|
@@ -347,8 +348,8 @@ class Gem::Uninstaller
|
|
347
348
|
end
|
348
349
|
end
|
349
350
|
|
350
|
-
msg <<
|
351
|
-
msg <<
|
351
|
+
msg << "If you remove this gem, these dependencies will not be met."
|
352
|
+
msg << "Continue with Uninstall?"
|
352
353
|
return ask_yes_no(msg.join("\n"), false)
|
353
354
|
end
|
354
355
|
|
@@ -360,7 +361,7 @@ class Gem::Uninstaller
|
|
360
361
|
# of what it did for us to find rather than trying to recreate
|
361
362
|
# it again.
|
362
363
|
if @format_executable
|
363
|
-
require_relative
|
364
|
+
require_relative "installer"
|
364
365
|
Gem::Installer.exec_format % File.basename(filename)
|
365
366
|
else
|
366
367
|
filename
|
@@ -0,0 +1,69 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
##
|
4
|
+
# Mixin methods for Gem::Command to promote available RubyGems update
|
5
|
+
|
6
|
+
module Gem::UpdateSuggestion
|
7
|
+
# list taken from https://github.com/watson/ci-info/blob/7a3c30d/index.js#L56-L66
|
8
|
+
CI_ENV_VARS = [
|
9
|
+
"CI", # Travis CI, CircleCI, Cirrus CI, Gitlab CI, Appveyor, CodeShip, dsari
|
10
|
+
"CONTINUOUS_INTEGRATION", # Travis CI, Cirrus CI
|
11
|
+
"BUILD_NUMBER", # Jenkins, TeamCity
|
12
|
+
"CI_APP_ID", "CI_BUILD_ID", "CI_BUILD_NUMBER", # Applfow
|
13
|
+
"RUN_ID" # TaskCluster, dsari
|
14
|
+
].freeze
|
15
|
+
|
16
|
+
ONE_WEEK = 7 * 24 * 60 * 60
|
17
|
+
|
18
|
+
##
|
19
|
+
# Message to promote available RubyGems update with related gem update command.
|
20
|
+
|
21
|
+
def update_suggestion
|
22
|
+
<<-MESSAGE
|
23
|
+
|
24
|
+
A new release of RubyGems is available: #{Gem.rubygems_version} → #{Gem.latest_rubygems_version}!
|
25
|
+
Run `gem update --system #{Gem.latest_rubygems_version}` to update your installation.
|
26
|
+
|
27
|
+
MESSAGE
|
28
|
+
end
|
29
|
+
|
30
|
+
##
|
31
|
+
# Determines if current environment is eglible for update suggestion.
|
32
|
+
|
33
|
+
def eglible_for_update?
|
34
|
+
# explicit opt-out
|
35
|
+
return false if Gem.configuration[:prevent_update_suggestion]
|
36
|
+
return false if ENV["RUBYGEMS_PREVENT_UPDATE_SUGGESTION"]
|
37
|
+
|
38
|
+
# focus only on human usage of final RubyGems releases
|
39
|
+
return false unless Gem.ui.tty?
|
40
|
+
return false if Gem.rubygems_version.prerelease?
|
41
|
+
return false if Gem.disable_system_update_message
|
42
|
+
return false if ci?
|
43
|
+
|
44
|
+
# check makes sense only when we can store timestamp of last try
|
45
|
+
# otherwise we will not be able to prevent "annoying" update message
|
46
|
+
# on each command call
|
47
|
+
return unless Gem.configuration.state_file_writable?
|
48
|
+
|
49
|
+
# load time of last check, ensure the difference is enough to repeat the suggestion
|
50
|
+
check_time = Time.now.to_i
|
51
|
+
last_update_check = Gem.configuration.last_update_check
|
52
|
+
return false if (check_time - last_update_check) < ONE_WEEK
|
53
|
+
|
54
|
+
# compare current and latest version, this is the part where
|
55
|
+
# latest rubygems spec is fetched from remote
|
56
|
+
(Gem.rubygems_version < Gem.latest_rubygems_version).tap do |eglible|
|
57
|
+
# store the time of last successful check into state file
|
58
|
+
Gem.configuration.last_update_check = check_time
|
59
|
+
|
60
|
+
return eglible
|
61
|
+
end
|
62
|
+
rescue # don't block install command on any problem
|
63
|
+
false
|
64
|
+
end
|
65
|
+
|
66
|
+
def ci?
|
67
|
+
CI_ENV_VARS.any? {|var| ENV.include?(var) }
|
68
|
+
end
|
69
|
+
end
|
data/lib/rubygems/uri.rb
CHANGED
@@ -66,7 +66,7 @@ class Gem::Uri
|
|
66
66
|
def redact_credentials_from(text)
|
67
67
|
return text unless valid_uri? && password? && text.include?(to_s)
|
68
68
|
|
69
|
-
text.sub(password,
|
69
|
+
text.sub(password, "REDACTED")
|
70
70
|
end
|
71
71
|
|
72
72
|
def method_missing(method_name, *args, &blk)
|
@@ -97,11 +97,11 @@ class Gem::Uri
|
|
97
97
|
end
|
98
98
|
|
99
99
|
def with_redacted_user
|
100
|
-
clone.tap {|uri| uri.user =
|
100
|
+
clone.tap {|uri| uri.user = "REDACTED" }
|
101
101
|
end
|
102
102
|
|
103
103
|
def with_redacted_password
|
104
|
-
clone.tap {|uri| uri.password =
|
104
|
+
clone.tap {|uri| uri.password = "REDACTED" }
|
105
105
|
end
|
106
106
|
|
107
107
|
def valid_uri?
|
@@ -113,7 +113,7 @@ class Gem::Uri
|
|
113
113
|
end
|
114
114
|
|
115
115
|
def oauth_basic?
|
116
|
-
password ==
|
116
|
+
password == "x-oauth-basic"
|
117
117
|
end
|
118
118
|
|
119
119
|
def token?
|
@@ -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 "deprecate"
|
10
|
+
require_relative "text"
|
10
11
|
|
11
12
|
##
|
12
13
|
# Module that defines the default UserInteraction. Any class including this
|
@@ -148,7 +149,7 @@ module Gem::UserInteraction
|
|
148
149
|
##
|
149
150
|
# Displays the given +statement+ on the standard output (or equivalent).
|
150
151
|
|
151
|
-
def say(statement =
|
152
|
+
def say(statement = "")
|
152
153
|
ui.say statement
|
153
154
|
end
|
154
155
|
|
@@ -239,6 +240,7 @@ class Gem::StreamUI
|
|
239
240
|
return nil, nil unless result
|
240
241
|
|
241
242
|
result = result.strip.to_i - 1
|
243
|
+
return nil, nil unless (0...list.size) === result
|
242
244
|
return list[result], result
|
243
245
|
end
|
244
246
|
|
@@ -259,11 +261,11 @@ class Gem::StreamUI
|
|
259
261
|
|
260
262
|
default_answer = case default
|
261
263
|
when nil
|
262
|
-
|
264
|
+
"yn"
|
263
265
|
when true
|
264
|
-
|
266
|
+
"Yn"
|
265
267
|
else
|
266
|
-
|
268
|
+
"yN"
|
267
269
|
end
|
268
270
|
|
269
271
|
result = nil
|
@@ -284,13 +286,13 @@ class Gem::StreamUI
|
|
284
286
|
# Ask a question. Returns an answer if connected to a tty, nil otherwise.
|
285
287
|
|
286
288
|
def ask(question)
|
287
|
-
return nil if
|
289
|
+
return nil if !tty?
|
288
290
|
|
289
291
|
@outs.print(question + " ")
|
290
292
|
@outs.flush
|
291
293
|
|
292
294
|
result = @ins.gets
|
293
|
-
result
|
295
|
+
result&.chomp!
|
294
296
|
result
|
295
297
|
end
|
296
298
|
|
@@ -298,21 +300,21 @@ class Gem::StreamUI
|
|
298
300
|
# Ask for a password. Does not echo response to terminal.
|
299
301
|
|
300
302
|
def ask_for_password(question)
|
301
|
-
return nil if
|
303
|
+
return nil if !tty?
|
302
304
|
|
303
305
|
@outs.print(question, " ")
|
304
306
|
@outs.flush
|
305
307
|
|
306
308
|
password = _gets_noecho
|
307
309
|
@outs.puts
|
308
|
-
password
|
310
|
+
password&.chomp!
|
309
311
|
password
|
310
312
|
end
|
311
313
|
|
312
314
|
def require_io_console
|
313
315
|
@require_io_console ||= begin
|
314
316
|
begin
|
315
|
-
require
|
317
|
+
require "io/console"
|
316
318
|
rescue LoadError
|
317
319
|
end
|
318
320
|
true
|
@@ -472,7 +474,7 @@ class Gem::StreamUI
|
|
472
474
|
# and the +terminal_message+ when it is complete.
|
473
475
|
|
474
476
|
def initialize(out_stream, size, initial_message,
|
475
|
-
terminal_message =
|
477
|
+
terminal_message = "complete")
|
476
478
|
@out = out_stream
|
477
479
|
@total = size
|
478
480
|
@count = 0
|
@@ -616,18 +618,11 @@ class Gem::SilentUI < Gem::StreamUI
|
|
616
618
|
# The SilentUI has no arguments as it does not use any stream.
|
617
619
|
|
618
620
|
def initialize
|
619
|
-
|
620
|
-
|
621
|
-
reader = File.open(IO::NULL, 'r')
|
622
|
-
writer = File.open(IO::NULL, 'w')
|
623
|
-
|
624
|
-
super reader, writer, writer, false
|
621
|
+
io = NullIO.new
|
622
|
+
super io, io, io, false
|
625
623
|
end
|
626
624
|
|
627
625
|
def close
|
628
|
-
super
|
629
|
-
@ins.close
|
630
|
-
@outs.close
|
631
626
|
end
|
632
627
|
|
633
628
|
def download_reporter(*args) # :nodoc:
|
@@ -637,4 +632,25 @@ class Gem::SilentUI < Gem::StreamUI
|
|
637
632
|
def progress_reporter(*args) # :nodoc:
|
638
633
|
SilentProgressReporter.new(@outs, *args)
|
639
634
|
end
|
635
|
+
|
636
|
+
##
|
637
|
+
# An absolutely silent IO.
|
638
|
+
|
639
|
+
class NullIO
|
640
|
+
def puts(*args)
|
641
|
+
end
|
642
|
+
|
643
|
+
def print(*args)
|
644
|
+
end
|
645
|
+
|
646
|
+
def flush
|
647
|
+
end
|
648
|
+
|
649
|
+
def gets(*args)
|
650
|
+
end
|
651
|
+
|
652
|
+
def tty?
|
653
|
+
false
|
654
|
+
end
|
655
|
+
end
|
640
656
|
end
|
@@ -1,11 +1,12 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
-
|
2
|
+
|
3
|
+
require_relative "../text"
|
3
4
|
|
4
5
|
class Gem::Licenses
|
5
6
|
extend Gem::Text
|
6
7
|
|
7
|
-
NONSTANDARD =
|
8
|
-
LICENSE_REF =
|
8
|
+
NONSTANDARD = "Nonstandard"
|
9
|
+
LICENSE_REF = "LicenseRef-.+"
|
9
10
|
|
10
11
|
# Software Package Data Exchange (SPDX) standard open-source software
|
11
12
|
# license identifiers
|
data/lib/rubygems/util/list.rb
CHANGED
data/lib/rubygems/util.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
-
|
2
|
+
|
3
|
+
require_relative "deprecate"
|
3
4
|
|
4
5
|
##
|
5
6
|
# This module contains various utility methods as module methods.
|
@@ -10,9 +11,9 @@ module Gem::Util
|
|
10
11
|
# Zlib::GzipReader wrapper that unzips +data+.
|
11
12
|
|
12
13
|
def self.gunzip(data)
|
13
|
-
require
|
14
|
-
require
|
15
|
-
data = StringIO.new(data,
|
14
|
+
require "zlib"
|
15
|
+
require "stringio"
|
16
|
+
data = StringIO.new(data, "r")
|
16
17
|
|
17
18
|
gzip_reader = begin
|
18
19
|
Zlib::GzipReader.new(data)
|
@@ -29,9 +30,9 @@ module Gem::Util
|
|
29
30
|
# Zlib::GzipWriter wrapper that zips +data+.
|
30
31
|
|
31
32
|
def self.gzip(data)
|
32
|
-
require
|
33
|
-
require
|
34
|
-
zipped = StringIO.new(String.new,
|
33
|
+
require "zlib"
|
34
|
+
require "stringio"
|
35
|
+
zipped = StringIO.new(String.new, "w")
|
35
36
|
zipped.set_encoding Encoding::BINARY
|
36
37
|
|
37
38
|
Zlib::GzipWriter.wrap zipped do |io|
|
@@ -45,7 +46,7 @@ module Gem::Util
|
|
45
46
|
# A Zlib::Inflate#inflate wrapper
|
46
47
|
|
47
48
|
def self.inflate(data)
|
48
|
-
require
|
49
|
+
require "zlib"
|
49
50
|
Zlib::Inflate.inflate data
|
50
51
|
end
|
51
52
|
|
@@ -86,7 +87,7 @@ module Gem::Util
|
|
86
87
|
loop do
|
87
88
|
Dir.chdir here, &block rescue Errno::EACCES
|
88
89
|
|
89
|
-
new_here = File.expand_path(
|
90
|
+
new_here = File.expand_path("..", here)
|
90
91
|
return if new_here == here # toplevel
|
91
92
|
here = new_here
|
92
93
|
end
|
@@ -97,11 +98,7 @@ module Gem::Util
|
|
97
98
|
# returning absolute paths to the matching files.
|
98
99
|
|
99
100
|
def self.glob_files_in_dir(glob, base_path)
|
100
|
-
|
101
|
-
Dir.glob(glob, base: base_path).map! {|f| File.expand_path(f, base_path) }
|
102
|
-
else
|
103
|
-
Dir.glob(File.expand_path(glob, base_path))
|
104
|
-
end
|
101
|
+
Dir.glob(glob, base: base_path).map! {|f| File.expand_path(f, base_path) }
|
105
102
|
end
|
106
103
|
|
107
104
|
##
|
@@ -109,7 +106,7 @@ module Gem::Util
|
|
109
106
|
# comes with a leading slash.
|
110
107
|
|
111
108
|
def self.correct_for_windows_path(path)
|
112
|
-
if path[0].chr ==
|
109
|
+
if path[0].chr == "/" && path[1].chr =~ /[a-z]/i && path[2].chr == ":"
|
113
110
|
path[1..-1]
|
114
111
|
else
|
115
112
|
path
|
data/lib/rubygems/validator.rb
CHANGED
@@ -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 "package"
|
10
|
+
require_relative "installer"
|
10
11
|
|
11
12
|
##
|
12
13
|
# Validator performs various gem file and gem database validation
|
@@ -15,7 +16,7 @@ class Gem::Validator
|
|
15
16
|
include Gem::UserInteraction
|
16
17
|
|
17
18
|
def initialize # :nodoc:
|
18
|
-
require
|
19
|
+
require "find"
|
19
20
|
end
|
20
21
|
|
21
22
|
private
|
@@ -26,7 +27,7 @@ class Gem::Validator
|
|
26
27
|
Find.find gem_directory do |file_name|
|
27
28
|
fn = file_name[gem_directory.size..file_name.size - 1].sub(/^\//, "")
|
28
29
|
installed_files << fn unless
|
29
|
-
fn
|
30
|
+
fn.empty? || fn.include?("CVS") || File.directory?(file_name)
|
30
31
|
end
|
31
32
|
|
32
33
|
installed_files
|
@@ -110,11 +111,11 @@ class Gem::Validator
|
|
110
111
|
begin
|
111
112
|
next unless data # HACK `gem check -a mkrf`
|
112
113
|
|
113
|
-
source = File.join gem_directory, entry[
|
114
|
+
source = File.join gem_directory, entry["path"]
|
114
115
|
|
115
116
|
File.open source, Gem.binary_mode do |f|
|
116
117
|
unless f.read == data
|
117
|
-
errors[gem_name][entry[
|
118
|
+
errors[gem_name][entry["path"]] = "Modified from original"
|
118
119
|
end
|
119
120
|
end
|
120
121
|
end
|
data/lib/rubygems/version.rb
CHANGED
@@ -153,11 +153,9 @@ require_relative "deprecate"
|
|
153
153
|
# a zero to give a sensible result.
|
154
154
|
|
155
155
|
class Gem::Version
|
156
|
-
autoload :Requirement, File.expand_path('requirement', __dir__)
|
157
|
-
|
158
156
|
include Comparable
|
159
157
|
|
160
|
-
VERSION_PATTERN = '[0-9]+(?>\.[0-9a-zA-Z]+)*(-[0-9A-Za-z-]+(\.[0-9A-Za-z-]+)*)?'
|
158
|
+
VERSION_PATTERN = '[0-9]+(?>\.[0-9a-zA-Z]+)*(-[0-9A-Za-z-]+(\.[0-9A-Za-z-]+)*)?' # :nodoc:
|
161
159
|
ANCHORED_VERSION_PATTERN = /\A\s*(#{VERSION_PATTERN})?\s*\z/.freeze # :nodoc:
|
162
160
|
|
163
161
|
##
|
@@ -173,9 +171,7 @@ class Gem::Version
|
|
173
171
|
# True if the +version+ string matches RubyGems' requirements.
|
174
172
|
|
175
173
|
def self.correct?(version)
|
176
|
-
|
177
|
-
warn "nil versions are discouraged and will be deprecated in Rubygems 4" if version.nil?
|
178
|
-
end
|
174
|
+
nil_versions_are_discouraged! if version.nil?
|
179
175
|
|
180
176
|
!!(version.to_s =~ ANCHORED_VERSION_PATTERN)
|
181
177
|
end
|
@@ -192,6 +188,8 @@ class Gem::Version
|
|
192
188
|
if self === input # check yourself before you wreck yourself
|
193
189
|
input
|
194
190
|
elsif input.nil?
|
191
|
+
nil_versions_are_discouraged!
|
192
|
+
|
195
193
|
nil
|
196
194
|
else
|
197
195
|
new input
|
@@ -208,6 +206,14 @@ class Gem::Version
|
|
208
206
|
@@all[version] ||= super
|
209
207
|
end
|
210
208
|
|
209
|
+
def self.nil_versions_are_discouraged!
|
210
|
+
unless Gem::Deprecate.skip
|
211
|
+
warn "nil versions are discouraged and will be deprecated in Rubygems 4"
|
212
|
+
end
|
213
|
+
end
|
214
|
+
|
215
|
+
private_class_method :nil_versions_are_discouraged!
|
216
|
+
|
211
217
|
##
|
212
218
|
# Constructs a Version from the +version+ string. A version string is a
|
213
219
|
# series of digits or ASCII letters separated by dots.
|
@@ -246,7 +252,7 @@ class Gem::Version
|
|
246
252
|
# same precision. Version "1.0" is not the same as version "1".
|
247
253
|
|
248
254
|
def eql?(other)
|
249
|
-
self.class === other
|
255
|
+
self.class === other && @version == other._version
|
250
256
|
end
|
251
257
|
|
252
258
|
def hash # :nodoc:
|
@@ -266,7 +272,7 @@ class Gem::Version
|
|
266
272
|
# string for backwards (RubyGems 1.3.5 and earlier) compatibility.
|
267
273
|
|
268
274
|
def marshal_dump
|
269
|
-
[version]
|
275
|
+
[@version]
|
270
276
|
end
|
271
277
|
|
272
278
|
##
|
@@ -278,7 +284,7 @@ class Gem::Version
|
|
278
284
|
end
|
279
285
|
|
280
286
|
def yaml_initialize(tag, map) # :nodoc:
|
281
|
-
@version = map[
|
287
|
+
@version = map["version"]
|
282
288
|
@segments = nil
|
283
289
|
@hash = nil
|
284
290
|
end
|
@@ -288,7 +294,7 @@ class Gem::Version
|
|
288
294
|
end
|
289
295
|
|
290
296
|
def encode_with(coder) # :nodoc:
|
291
|
-
coder.add
|
297
|
+
coder.add "version", @version
|
292
298
|
end
|
293
299
|
|
294
300
|
##
|
@@ -313,7 +319,7 @@ class Gem::Version
|
|
313
319
|
@@release[self] ||= if prerelease?
|
314
320
|
segments = self.segments
|
315
321
|
segments.pop while segments.any? {|s| String === s }
|
316
|
-
self.class.new segments.join(
|
322
|
+
self.class.new segments.join(".")
|
317
323
|
else
|
318
324
|
self
|
319
325
|
end
|
@@ -1,11 +1,12 @@
|
|
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 "../rubygems"
|
9
10
|
|
10
11
|
##
|
11
12
|
# Mixin methods for --version and --platform Gem::Command options.
|
@@ -24,7 +25,7 @@ module Gem::VersionOption
|
|
24
25
|
end
|
25
26
|
end
|
26
27
|
|
27
|
-
add_option(
|
28
|
+
add_option("--platform PLATFORM", Gem::Platform,
|
28
29
|
"Specify the platform of gem to #{task}", *wrap) do
|
29
30
|
|value, options|
|
30
31
|
unless options[:added_platform]
|
@@ -55,7 +56,7 @@ module Gem::VersionOption
|
|
55
56
|
Gem::Requirement.new(*value.split(/\s*,\s*/))
|
56
57
|
end
|
57
58
|
|
58
|
-
add_option(
|
59
|
+
add_option("-v", "--version VERSION", Gem::Requirement,
|
59
60
|
"Specify version of gem to #{task}", *wrap) do
|
60
61
|
|value, options|
|
61
62
|
# Allow handling for multiple --version operators
|