rubygems-update 3.4.21 → 3.5.0
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 +132 -2
- data/Manifest.txt +39 -221
- data/README.md +1 -3
- data/bundler/CHANGELOG.md +74 -0
- data/bundler/README.md +1 -2
- data/bundler/bundler.gemspec +4 -2
- data/bundler/exe/bundle +1 -10
- data/bundler/lib/bundler/build_metadata.rb +3 -3
- data/bundler/lib/bundler/capistrano.rb +1 -1
- data/bundler/lib/bundler/checksum.rb +245 -0
- data/bundler/lib/bundler/ci_detector.rb +75 -0
- data/bundler/lib/bundler/cli/add.rb +3 -3
- data/bundler/lib/bundler/cli/binstubs.rb +4 -4
- data/bundler/lib/bundler/cli/cache.rb +1 -1
- data/bundler/lib/bundler/cli/check.rb +1 -1
- data/bundler/lib/bundler/cli/common.rb +9 -1
- data/bundler/lib/bundler/cli/config.rb +8 -7
- data/bundler/lib/bundler/cli/console.rb +3 -2
- data/bundler/lib/bundler/cli/doctor.rb +2 -2
- data/bundler/lib/bundler/cli/exec.rb +1 -1
- data/bundler/lib/bundler/cli/gem.rb +31 -23
- data/bundler/lib/bundler/cli/info.rb +2 -13
- data/bundler/lib/bundler/cli/install.rb +5 -4
- data/bundler/lib/bundler/cli/issue.rb +1 -1
- data/bundler/lib/bundler/cli/lock.rb +4 -4
- data/bundler/lib/bundler/cli/open.rb +1 -1
- data/bundler/lib/bundler/cli/outdated.rb +6 -6
- data/bundler/lib/bundler/cli/plugin.rb +7 -14
- data/bundler/lib/bundler/cli/pristine.rb +38 -30
- data/bundler/lib/bundler/cli/show.rb +2 -2
- data/bundler/lib/bundler/cli/update.rb +5 -5
- data/bundler/lib/bundler/cli.rb +215 -263
- data/bundler/lib/bundler/compact_index_client/cache.rb +29 -9
- data/bundler/lib/bundler/compact_index_client/cache_file.rb +153 -0
- data/bundler/lib/bundler/compact_index_client/gem_parser.rb +7 -3
- data/bundler/lib/bundler/compact_index_client/updater.rb +79 -81
- data/bundler/lib/bundler/compact_index_client.rb +14 -7
- data/bundler/lib/bundler/constants.rb +1 -1
- data/bundler/lib/bundler/current_ruby.rb +5 -21
- data/bundler/lib/bundler/definition.rb +43 -16
- data/bundler/lib/bundler/dependency.rb +16 -12
- data/bundler/lib/bundler/digest.rb +2 -2
- data/bundler/lib/bundler/dsl.rb +43 -25
- data/bundler/lib/bundler/endpoint_specification.rb +6 -2
- data/bundler/lib/bundler/env.rb +1 -3
- data/bundler/lib/bundler/errors.rb +58 -0
- data/bundler/lib/bundler/fetcher/base.rb +3 -1
- data/bundler/lib/bundler/fetcher/compact_index.rb +4 -4
- data/bundler/lib/bundler/fetcher/downloader.rb +13 -11
- data/bundler/lib/bundler/fetcher/gem_remote_fetcher.rb +16 -0
- data/bundler/lib/bundler/fetcher/index.rb +1 -1
- data/bundler/lib/bundler/fetcher.rb +28 -25
- data/bundler/lib/bundler/friendly_errors.rb +5 -5
- data/bundler/lib/bundler/gem_helper.rb +1 -1
- data/bundler/lib/bundler/gem_helpers.rb +12 -2
- data/bundler/lib/bundler/graph.rb +9 -9
- data/bundler/lib/bundler/index.rb +1 -2
- data/bundler/lib/bundler/injector.rb +1 -1
- data/bundler/lib/bundler/inline.rb +3 -3
- data/bundler/lib/bundler/installer/gem_installer.rb +10 -10
- data/bundler/lib/bundler/installer/parallel_installer.rb +16 -8
- data/bundler/lib/bundler/installer/standalone.rb +2 -3
- data/bundler/lib/bundler/installer.rb +9 -9
- data/bundler/lib/bundler/lazy_specification.rb +28 -17
- data/bundler/lib/bundler/lockfile_generator.rb +9 -0
- data/bundler/lib/bundler/lockfile_parser.rb +81 -10
- data/bundler/lib/bundler/man/bundle-add.1 +3 -26
- data/bundler/lib/bundler/man/bundle-binstubs.1 +4 -16
- data/bundler/lib/bundler/man/bundle-cache.1 +3 -24
- data/bundler/lib/bundler/man/bundle-check.1 +3 -12
- data/bundler/lib/bundler/man/bundle-clean.1 +3 -10
- data/bundler/lib/bundler/man/bundle-config.1 +20 -211
- data/bundler/lib/bundler/man/bundle-config.1.ronn +6 -0
- data/bundler/lib/bundler/man/bundle-console.1 +4 -22
- data/bundler/lib/bundler/man/bundle-doctor.1 +4 -18
- data/bundler/lib/bundler/man/bundle-exec.1 +12 -73
- data/bundler/lib/bundler/man/bundle-gem.1 +13 -49
- data/bundler/lib/bundler/man/bundle-help.1 +3 -7
- data/bundler/lib/bundler/man/bundle-info.1 +3 -9
- data/bundler/lib/bundler/man/bundle-init.1 +3 -12
- data/bundler/lib/bundler/man/bundle-inject.1 +6 -19
- data/bundler/lib/bundler/man/bundle-install.1 +27 -125
- data/bundler/lib/bundler/man/bundle-install.1.ronn +1 -0
- data/bundler/lib/bundler/man/bundle-list.1 +4 -19
- data/bundler/lib/bundler/man/bundle-lock.1 +5 -29
- data/bundler/lib/bundler/man/bundle-open.1 +7 -27
- data/bundler/lib/bundler/man/bundle-outdated.1 +3 -55
- data/bundler/lib/bundler/man/bundle-outdated.1.ronn +1 -0
- data/bundler/lib/bundler/man/bundle-platform.1 +5 -27
- data/bundler/lib/bundler/man/bundle-plugin.1 +3 -29
- data/bundler/lib/bundler/man/bundle-pristine.1 +5 -16
- data/bundler/lib/bundler/man/bundle-remove.1 +4 -14
- data/bundler/lib/bundler/man/bundle-show.1 +3 -10
- data/bundler/lib/bundler/man/bundle-update.1 +18 -137
- data/bundler/lib/bundler/man/bundle-version.1 +3 -16
- data/bundler/lib/bundler/man/bundle-viz.1 +4 -16
- data/bundler/lib/bundler/man/bundle.1 +5 -44
- data/bundler/lib/bundler/man/gemfile.5 +24 -301
- data/bundler/lib/bundler/man/gemfile.5.ronn +4 -0
- data/bundler/lib/bundler/match_metadata.rb +4 -0
- data/bundler/lib/bundler/match_platform.rb +1 -1
- data/bundler/lib/bundler/plugin/api/source.rb +3 -2
- data/bundler/lib/bundler/plugin/index.rb +8 -0
- data/bundler/lib/bundler/plugin/installer.rb +1 -1
- data/bundler/lib/bundler/plugin.rb +12 -5
- data/bundler/lib/bundler/resolver/base.rb +1 -1
- data/bundler/lib/bundler/resolver/incompatibility.rb +1 -1
- data/bundler/lib/bundler/resolver/spec_group.rb +1 -4
- data/bundler/lib/bundler/resolver.rb +16 -16
- data/bundler/lib/bundler/ruby_dsl.rb +20 -12
- data/bundler/lib/bundler/ruby_version.rb +1 -1
- data/bundler/lib/bundler/rubygems_ext.rb +27 -54
- data/bundler/lib/bundler/rubygems_gem_installer.rb +23 -58
- data/bundler/lib/bundler/rubygems_integration.rb +25 -94
- data/bundler/lib/bundler/runtime.rb +2 -2
- data/bundler/lib/bundler/self_manager.rb +23 -7
- data/bundler/lib/bundler/settings.rb +27 -7
- data/bundler/lib/bundler/setup.rb +4 -1
- data/bundler/lib/bundler/shared_helpers.rb +35 -13
- data/bundler/lib/bundler/source/git/git_proxy.rb +22 -14
- data/bundler/lib/bundler/source/git.rb +4 -3
- data/bundler/lib/bundler/source/metadata.rb +16 -16
- data/bundler/lib/bundler/source/path.rb +7 -6
- data/bundler/lib/bundler/source/rubygems.rb +21 -14
- data/bundler/lib/bundler/source.rb +2 -0
- data/bundler/lib/bundler/spec_set.rb +43 -12
- data/bundler/lib/bundler/stub_specification.rb +1 -0
- data/bundler/lib/bundler/templates/Executable.bundler +1 -1
- data/bundler/lib/bundler/templates/newgem/README.md.tt +3 -3
- data/bundler/lib/bundler/templates/newgem/Rakefile.tt +2 -6
- data/bundler/lib/bundler/templates/newgem/ext/newgem/Cargo.toml.tt +1 -1
- data/bundler/lib/bundler/templates/newgem/newgem.gemspec.tt +1 -1
- data/bundler/lib/bundler/templates/newgem/standard.yml.tt +1 -1
- data/bundler/lib/bundler/ui/shell.rb +2 -2
- data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/version.rb +1 -1
- data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool.rb +53 -6
- data/bundler/lib/bundler/vendor/fileutils/lib/fileutils.rb +8 -20
- data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/connection.rb +4 -3
- data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/pool.rb +23 -11
- data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/timed_stack_multi.rb +1 -1
- data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb +36 -36
- data/bundler/lib/bundler/vendor/thor/lib/thor/actions/create_file.rb +3 -2
- data/bundler/lib/bundler/vendor/thor/lib/thor/actions/directory.rb +1 -1
- data/bundler/lib/bundler/vendor/thor/lib/thor/actions/empty_directory.rb +1 -1
- data/bundler/lib/bundler/vendor/thor/lib/thor/actions/file_manipulation.rb +8 -10
- data/bundler/lib/bundler/vendor/thor/lib/thor/actions/inject_into_file.rb +15 -4
- data/bundler/lib/bundler/vendor/thor/lib/thor/actions.rb +15 -15
- data/bundler/lib/bundler/vendor/thor/lib/thor/base.rb +140 -14
- data/bundler/lib/bundler/vendor/thor/lib/thor/command.rb +13 -4
- data/bundler/lib/bundler/vendor/thor/lib/thor/core_ext/hash_with_indifferent_access.rb +4 -0
- data/bundler/lib/bundler/vendor/thor/lib/thor/error.rb +16 -25
- data/bundler/lib/bundler/vendor/thor/lib/thor/group.rb +1 -1
- data/bundler/lib/bundler/vendor/thor/lib/thor/invocation.rb +1 -1
- data/bundler/lib/bundler/vendor/thor/lib/thor/nested_context.rb +2 -2
- data/bundler/lib/bundler/vendor/thor/lib/thor/parser/argument.rb +20 -1
- data/bundler/lib/bundler/vendor/thor/lib/thor/parser/arguments.rb +33 -17
- data/bundler/lib/bundler/vendor/thor/lib/thor/parser/option.rb +27 -8
- data/bundler/lib/bundler/vendor/thor/lib/thor/parser/options.rb +44 -6
- data/bundler/lib/bundler/vendor/thor/lib/thor/rake_compat.rb +2 -2
- data/bundler/lib/bundler/vendor/thor/lib/thor/runner.rb +40 -30
- data/bundler/lib/bundler/vendor/thor/lib/thor/shell/basic.rb +26 -150
- data/bundler/lib/bundler/vendor/thor/lib/thor/shell/color.rb +4 -46
- data/bundler/lib/bundler/vendor/thor/lib/thor/shell/column_printer.rb +29 -0
- data/bundler/lib/bundler/vendor/thor/lib/thor/shell/html.rb +3 -45
- data/bundler/lib/bundler/vendor/thor/lib/thor/shell/lcs_diff.rb +49 -0
- data/bundler/lib/bundler/vendor/thor/lib/thor/shell/table_printer.rb +134 -0
- data/bundler/lib/bundler/vendor/thor/lib/thor/shell/terminal.rb +42 -0
- data/bundler/lib/bundler/vendor/thor/lib/thor/shell/wrapped_printer.rb +38 -0
- data/bundler/lib/bundler/vendor/thor/lib/thor/shell.rb +1 -1
- data/bundler/lib/bundler/vendor/thor/lib/thor/util.rb +8 -7
- data/bundler/lib/bundler/vendor/thor/lib/thor/version.rb +1 -1
- data/bundler/lib/bundler/vendor/thor/lib/thor.rb +155 -8
- data/bundler/lib/bundler/vendor/tsort/lib/tsort.rb +3 -0
- data/bundler/lib/bundler/vendor/uri/lib/uri/common.rb +256 -132
- data/bundler/lib/bundler/vendor/uri/lib/uri/generic.rb +1 -0
- data/bundler/lib/bundler/vendor/uri/lib/uri/rfc3986_parser.rb +95 -31
- data/bundler/lib/bundler/vendor/uri/lib/uri/version.rb +1 -1
- data/bundler/lib/bundler/vendored_net_http.rb +8 -0
- data/bundler/lib/bundler/vendored_persistent.rb +0 -4
- data/bundler/lib/bundler/vendored_timeout.rb +8 -0
- data/bundler/lib/bundler/version.rb +1 -1
- data/bundler/lib/bundler/vlad.rb +1 -1
- data/bundler/lib/bundler/yaml_serializer.rb +9 -4
- data/bundler/lib/bundler.rb +38 -35
- data/lib/rubygems/available_set.rb +4 -4
- data/lib/rubygems/basic_specification.rb +35 -37
- data/lib/rubygems/bundler_version_finder.rb +4 -4
- data/lib/rubygems/ci_detector.rb +75 -0
- data/lib/rubygems/command.rb +15 -17
- data/lib/rubygems/command_manager.rb +5 -4
- data/lib/rubygems/commands/build_command.rb +2 -2
- data/lib/rubygems/commands/cert_command.rb +2 -3
- data/lib/rubygems/commands/check_command.rb +4 -4
- data/lib/rubygems/commands/cleanup_command.rb +12 -14
- data/lib/rubygems/commands/contents_command.rb +5 -5
- data/lib/rubygems/commands/dependency_command.rb +4 -5
- data/lib/rubygems/commands/environment_command.rb +3 -5
- data/lib/rubygems/commands/exec_command.rb +1 -1
- data/lib/rubygems/commands/fetch_command.rb +2 -2
- data/lib/rubygems/commands/generate_index_command.rb +39 -74
- data/lib/rubygems/commands/help_command.rb +4 -4
- data/lib/rubygems/commands/info_command.rb +2 -2
- data/lib/rubygems/commands/install_command.rb +8 -16
- data/lib/rubygems/commands/list_command.rb +2 -2
- data/lib/rubygems/commands/lock_command.rb +1 -1
- data/lib/rubygems/commands/open_command.rb +1 -1
- data/lib/rubygems/commands/owner_command.rb +1 -1
- data/lib/rubygems/commands/pristine_command.rb +13 -15
- data/lib/rubygems/commands/push_command.rb +2 -2
- data/lib/rubygems/commands/query_command.rb +4 -5
- data/lib/rubygems/commands/rdoc_command.rb +2 -2
- data/lib/rubygems/commands/search_command.rb +2 -2
- data/lib/rubygems/commands/setup_command.rb +33 -36
- data/lib/rubygems/commands/sources_command.rb +12 -12
- data/lib/rubygems/commands/specification_command.rb +10 -10
- data/lib/rubygems/commands/stale_command.rb +1 -1
- data/lib/rubygems/commands/uninstall_command.rb +13 -14
- data/lib/rubygems/commands/unpack_command.rb +7 -7
- data/lib/rubygems/commands/update_command.rb +11 -13
- data/lib/rubygems/commands/which_command.rb +1 -1
- data/lib/rubygems/commands/yank_command.rb +1 -1
- data/lib/rubygems/compatibility.rb +5 -6
- data/lib/rubygems/config_file.rb +7 -7
- data/lib/rubygems/core_ext/kernel_gem.rb +0 -2
- data/lib/rubygems/core_ext/kernel_require.rb +20 -49
- data/lib/rubygems/core_ext/kernel_warn.rb +1 -1
- data/lib/rubygems/core_ext/tcpsocket_init.rb +1 -1
- data/lib/rubygems/defaults.rb +15 -3
- data/lib/rubygems/dependency.rb +12 -14
- data/lib/rubygems/dependency_installer.rb +30 -31
- data/lib/rubygems/dependency_list.rb +1 -1
- data/lib/rubygems/deprecate.rb +16 -15
- data/lib/rubygems/doctor.rb +6 -6
- data/lib/rubygems/errors.rb +2 -6
- data/lib/rubygems/exceptions.rb +2 -1
- data/lib/rubygems/ext/builder.rb +15 -10
- data/lib/rubygems/ext/cargo_builder.rb +5 -5
- data/lib/rubygems/ext/ext_conf_builder.rb +2 -4
- data/lib/rubygems/ext/rake_builder.rb +1 -1
- data/lib/rubygems/gem_runner.rb +4 -4
- data/lib/rubygems/gemcutter_utilities/webauthn_listener/response.rb +3 -3
- data/lib/rubygems/gemcutter_utilities/webauthn_poller.rb +3 -3
- data/lib/rubygems/gemcutter_utilities.rb +18 -19
- data/lib/rubygems/install_update_options.rb +18 -19
- data/lib/rubygems/installer.rb +66 -45
- data/lib/rubygems/installer_uninstaller_utils.rb +0 -2
- data/lib/rubygems/local_remote_options.rb +8 -11
- data/lib/rubygems/name_tuple.rb +7 -9
- data/lib/rubygems/net/http.rb +3 -0
- data/lib/rubygems/net-http/LICENSE.txt +22 -0
- data/lib/rubygems/net-http/lib/net/http/backward.rb +40 -0
- data/lib/rubygems/net-http/lib/net/http/exceptions.rb +34 -0
- data/lib/rubygems/net-http/lib/net/http/generic_request.rb +414 -0
- data/lib/rubygems/net-http/lib/net/http/header.rb +981 -0
- data/lib/rubygems/net-http/lib/net/http/proxy_delta.rb +17 -0
- data/lib/rubygems/net-http/lib/net/http/request.rb +88 -0
- data/lib/rubygems/net-http/lib/net/http/requests.rb +425 -0
- data/lib/rubygems/net-http/lib/net/http/response.rb +738 -0
- data/lib/rubygems/net-http/lib/net/http/responses.rb +1174 -0
- data/lib/rubygems/net-http/lib/net/http/status.rb +84 -0
- data/lib/rubygems/net-http/lib/net/http.rb +2496 -0
- data/lib/rubygems/net-http/lib/net/https.rb +23 -0
- data/lib/rubygems/net-protocol/LICENSE.txt +22 -0
- data/lib/rubygems/net-protocol/lib/net/protocol.rb +544 -0
- data/lib/rubygems/optparse/lib/optparse.rb +39 -17
- data/lib/rubygems/package/digest_io.rb +1 -1
- data/lib/rubygems/package/old.rb +2 -2
- data/lib/rubygems/package/tar_header.rb +45 -39
- data/lib/rubygems/package/tar_reader/entry.rb +5 -4
- data/lib/rubygems/package/tar_reader.rb +14 -5
- data/lib/rubygems/package/tar_writer.rb +20 -18
- data/lib/rubygems/package.rb +28 -27
- data/lib/rubygems/package_task.rb +2 -2
- data/lib/rubygems/path_support.rb +10 -11
- data/lib/rubygems/platform.rb +65 -48
- data/lib/rubygems/query_utils.rb +7 -9
- data/lib/rubygems/remote_fetcher.rb +17 -17
- data/lib/rubygems/request/connection_pools.rb +3 -3
- data/lib/rubygems/request.rb +20 -17
- data/lib/rubygems/request_set/gem_dependency_api.rb +120 -123
- data/lib/rubygems/request_set/lockfile/parser.rb +9 -9
- data/lib/rubygems/request_set/lockfile/tokenizer.rb +20 -12
- data/lib/rubygems/request_set/lockfile.rb +6 -11
- data/lib/rubygems/request_set.rb +5 -5
- data/lib/rubygems/requirement.rb +7 -7
- data/lib/rubygems/resolv/LICENSE.txt +22 -0
- data/lib/rubygems/resolv/lib/resolv.rb +3387 -0
- data/lib/rubygems/resolver/activation_request.rb +1 -3
- data/lib/rubygems/resolver/api_set/gem_parser.rb +7 -3
- data/lib/rubygems/resolver/best_set.rb +1 -1
- data/lib/rubygems/resolver/composed_set.rb +1 -1
- data/lib/rubygems/resolver/conflict.rb +4 -12
- data/lib/rubygems/resolver/index_set.rb +4 -4
- data/lib/rubygems/resolver/index_specification.rb +2 -2
- data/lib/rubygems/resolver/installer_set.rb +5 -6
- data/lib/rubygems/resolver/lock_set.rb +1 -1
- data/lib/rubygems/resolver.rb +6 -13
- data/lib/rubygems/s3_uri_signer.rb +6 -6
- data/lib/rubygems/safe_marshal/elements.rb +138 -0
- data/lib/rubygems/safe_marshal/reader.rb +306 -0
- data/lib/rubygems/safe_marshal/visitors/stream_printer.rb +31 -0
- data/lib/rubygems/safe_marshal/visitors/to_ruby.rb +385 -0
- data/lib/rubygems/safe_marshal/visitors/visitor.rb +74 -0
- data/lib/rubygems/safe_marshal.rb +74 -0
- data/lib/rubygems/safe_yaml.rb +5 -28
- data/lib/rubygems/security/policies.rb +36 -38
- data/lib/rubygems/security/policy.rb +7 -11
- data/lib/rubygems/security/signer.rb +1 -1
- data/lib/rubygems/security/trust_dir.rb +4 -4
- data/lib/rubygems/security.rb +8 -22
- data/lib/rubygems/source/git.rb +1 -3
- data/lib/rubygems/source/installed.rb +0 -2
- data/lib/rubygems/source/local.rb +7 -9
- data/lib/rubygems/source/lock.rb +1 -3
- data/lib/rubygems/source/specific_file.rb +0 -1
- data/lib/rubygems/source/vendor.rb +0 -2
- data/lib/rubygems/source.rb +12 -12
- data/lib/rubygems/source_list.rb +5 -5
- data/lib/rubygems/spec_fetcher.rb +31 -31
- data/lib/rubygems/specification.rb +145 -150
- data/lib/rubygems/specification_policy.rb +61 -31
- data/lib/rubygems/stub_specification.rb +4 -5
- data/lib/rubygems/text.rb +1 -2
- data/lib/rubygems/timeout/LICENSE.txt +22 -0
- data/lib/rubygems/timeout/lib/timeout.rb +199 -0
- data/lib/rubygems/timeout.rb +3 -0
- data/lib/rubygems/tsort/lib/tsort.rb +3 -0
- data/lib/rubygems/uninstaller.rb +9 -11
- data/lib/rubygems/update_suggestion.rb +5 -18
- data/lib/rubygems/uri_formatter.rb +1 -1
- data/lib/rubygems/user_interaction.rb +17 -23
- data/lib/rubygems/util/licenses.rb +113 -35
- data/lib/rubygems/util/list.rb +3 -1
- data/lib/rubygems/util.rb +2 -4
- data/lib/rubygems/validator.rb +6 -4
- data/lib/rubygems/version.rb +35 -29
- data/lib/rubygems/version_option.rb +2 -5
- data/lib/rubygems/yaml_serializer.rb +9 -4
- data/lib/rubygems.rb +42 -42
- data/rubygems-update.gemspec +4 -4
- data/setup.rb +2 -2
- metadata +43 -225
- data/lib/rubygems/indexer.rb +0 -428
- data/lib/rubygems/mock_gem_ui.rb +0 -86
- data/test/rubygems/alternate_cert.pem +0 -19
- data/test/rubygems/alternate_cert_32.pem +0 -19
- data/test/rubygems/alternate_key.pem +0 -27
- data/test/rubygems/bad_rake.rb +0 -3
- data/test/rubygems/bundler_test_gem.rb +0 -424
- data/test/rubygems/ca_cert.pem +0 -77
- data/test/rubygems/child_cert.pem +0 -19
- data/test/rubygems/child_cert_32.pem +0 -19
- data/test/rubygems/child_key.pem +0 -27
- data/test/rubygems/client.pem +0 -107
- data/test/rubygems/data/excon-0.7.7.gemspec.rz +0 -0
- data/test/rubygems/data/gem-private_key.pem +0 -27
- data/test/rubygems/data/gem-public_cert.pem +0 -20
- data/test/rubygems/data/null-required-ruby-version.gemspec.rz +0 -0
- data/test/rubygems/data/null-required-rubygems-version.gemspec.rz +0 -0
- data/test/rubygems/data/pry-0.4.7.gemspec.rz +0 -0
- data/test/rubygems/encrypted_private_key.pem +0 -30
- data/test/rubygems/expired_cert.pem +0 -19
- data/test/rubygems/fake_certlib/openssl.rb +0 -9
- data/test/rubygems/foo/discover.rb +0 -1
- data/test/rubygems/future_cert.pem +0 -19
- data/test/rubygems/future_cert_32.pem +0 -19
- data/test/rubygems/good_rake.rb +0 -3
- data/test/rubygems/grandchild_cert.pem +0 -19
- data/test/rubygems/grandchild_cert_32.pem +0 -19
- data/test/rubygems/grandchild_key.pem +0 -27
- data/test/rubygems/helper.rb +0 -1649
- data/test/rubygems/installer_test_case.rb +0 -248
- data/test/rubygems/invalid_client.pem +0 -49
- data/test/rubygems/invalid_issuer_cert.pem +0 -20
- data/test/rubygems/invalid_issuer_cert_32.pem +0 -20
- data/test/rubygems/invalid_key.pem +0 -27
- data/test/rubygems/invalid_signer_cert.pem +0 -19
- data/test/rubygems/invalid_signer_cert_32.pem +0 -19
- data/test/rubygems/invalidchild_cert.pem +0 -19
- data/test/rubygems/invalidchild_cert_32.pem +0 -19
- data/test/rubygems/invalidchild_key.pem +0 -27
- data/test/rubygems/multifactor_auth_utilities.rb +0 -111
- data/test/rubygems/package/tar_test_case.rb +0 -175
- data/test/rubygems/packages/Bluebie-legs-0.6.2.gem +0 -0
- data/test/rubygems/packages/ascii_binder-0.1.10.1.gem +0 -0
- data/test/rubygems/packages/ill-formatted-platform-1.0.0.10.gem +0 -0
- data/test/rubygems/plugin/exception/rubygems_plugin.rb +0 -4
- data/test/rubygems/plugin/load/rubygems_plugin.rb +0 -5
- data/test/rubygems/plugin/standarderror/rubygems_plugin.rb +0 -4
- data/test/rubygems/private3072_key.pem +0 -40
- data/test/rubygems/private_ec_key.pem +0 -9
- data/test/rubygems/private_key.pem +0 -27
- data/test/rubygems/public3072_cert.pem +0 -25
- data/test/rubygems/public_cert.pem +0 -20
- data/test/rubygems/public_cert_32.pem +0 -19
- data/test/rubygems/public_key.pem +0 -9
- data/test/rubygems/rubygems/commands/crash_command.rb +0 -5
- data/test/rubygems/rubygems_plugin.rb +0 -24
- data/test/rubygems/sff/discover.rb +0 -1
- data/test/rubygems/simple_gem.rb +0 -68
- data/test/rubygems/specifications/bar-0.0.2.gemspec +0 -9
- data/test/rubygems/specifications/foo-0.0.1-x86-mswin32.gemspec +0 -0
- data/test/rubygems/specifications/rubyforge-0.0.1.gemspec +0 -14
- data/test/rubygems/ssl_cert.pem +0 -80
- data/test/rubygems/ssl_key.pem +0 -27
- data/test/rubygems/test_bundled_ca.rb +0 -61
- data/test/rubygems/test_config.rb +0 -28
- data/test/rubygems/test_deprecate.rb +0 -158
- data/test/rubygems/test_exit.rb +0 -17
- data/test/rubygems/test_gem.rb +0 -1799
- data/test/rubygems/test_gem_available_set.rb +0 -130
- data/test/rubygems/test_gem_bundler_version_finder.rb +0 -127
- data/test/rubygems/test_gem_command.rb +0 -403
- data/test/rubygems/test_gem_command_manager.rb +0 -400
- data/test/rubygems/test_gem_commands_build_command.rb +0 -739
- data/test/rubygems/test_gem_commands_cert_command.rb +0 -866
- data/test/rubygems/test_gem_commands_check_command.rb +0 -68
- data/test/rubygems/test_gem_commands_cleanup_command.rb +0 -292
- data/test/rubygems/test_gem_commands_contents_command.rb +0 -271
- data/test/rubygems/test_gem_commands_dependency_command.rb +0 -228
- data/test/rubygems/test_gem_commands_environment_command.rb +0 -169
- data/test/rubygems/test_gem_commands_exec_command.rb +0 -857
- data/test/rubygems/test_gem_commands_fetch_command.rb +0 -258
- data/test/rubygems/test_gem_commands_generate_index_command.rb +0 -81
- data/test/rubygems/test_gem_commands_help_command.rb +0 -94
- data/test/rubygems/test_gem_commands_info_command.rb +0 -70
- data/test/rubygems/test_gem_commands_install_command.rb +0 -1573
- data/test/rubygems/test_gem_commands_list_command.rb +0 -33
- data/test/rubygems/test_gem_commands_lock_command.rb +0 -67
- data/test/rubygems/test_gem_commands_mirror.rb +0 -20
- data/test/rubygems/test_gem_commands_open_command.rb +0 -101
- data/test/rubygems/test_gem_commands_outdated_command.rb +0 -50
- data/test/rubygems/test_gem_commands_owner_command.rb +0 -503
- data/test/rubygems/test_gem_commands_pristine_command.rb +0 -708
- data/test/rubygems/test_gem_commands_push_command.rb +0 -603
- data/test/rubygems/test_gem_commands_query_command.rb +0 -858
- data/test/rubygems/test_gem_commands_search_command.rb +0 -16
- data/test/rubygems/test_gem_commands_server_command.rb +0 -20
- data/test/rubygems/test_gem_commands_setup_command.rb +0 -474
- data/test/rubygems/test_gem_commands_signin_command.rb +0 -259
- data/test/rubygems/test_gem_commands_signout_command.rb +0 -30
- data/test/rubygems/test_gem_commands_sources_command.rb +0 -534
- data/test/rubygems/test_gem_commands_specification_command.rb +0 -277
- data/test/rubygems/test_gem_commands_stale_command.rb +0 -43
- data/test/rubygems/test_gem_commands_uninstall_command.rb +0 -522
- data/test/rubygems/test_gem_commands_unpack_command.rb +0 -224
- data/test/rubygems/test_gem_commands_update_command.rb +0 -836
- data/test/rubygems/test_gem_commands_which_command.rb +0 -85
- data/test/rubygems/test_gem_commands_yank_command.rb +0 -299
- data/test/rubygems/test_gem_config_file.rb +0 -551
- data/test/rubygems/test_gem_dependency.rb +0 -398
- data/test/rubygems/test_gem_dependency_installer.rb +0 -1190
- data/test/rubygems/test_gem_dependency_list.rb +0 -265
- data/test/rubygems/test_gem_dependency_resolution_error.rb +0 -27
- data/test/rubygems/test_gem_doctor.rb +0 -195
- data/test/rubygems/test_gem_ext_builder.rb +0 -337
- data/test/rubygems/test_gem_ext_cargo_builder/custom_name/.gitignore +0 -1
- data/test/rubygems/test_gem_ext_cargo_builder/custom_name/custom_name.gemspec +0 -10
- data/test/rubygems/test_gem_ext_cargo_builder/custom_name/ext/custom_name_lib/Cargo.lock +0 -249
- data/test/rubygems/test_gem_ext_cargo_builder/custom_name/ext/custom_name_lib/Cargo.toml +0 -10
- data/test/rubygems/test_gem_ext_cargo_builder/custom_name/ext/custom_name_lib/src/lib.rs +0 -27
- data/test/rubygems/test_gem_ext_cargo_builder/custom_name/lib/custom_name.rb +0 -3
- data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/.gitignore +0 -1
- data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/Cargo.lock +0 -249
- data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/Cargo.toml +0 -10
- data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/rust_ruby_example.gemspec +0 -10
- data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/src/lib.rs +0 -51
- data/test/rubygems/test_gem_ext_cargo_builder.rb +0 -167
- data/test/rubygems/test_gem_ext_cargo_builder_link_flag_converter.rb +0 -34
- data/test/rubygems/test_gem_ext_cargo_builder_unit.rb +0 -60
- data/test/rubygems/test_gem_ext_cmake_builder.rb +0 -84
- data/test/rubygems/test_gem_ext_configure_builder.rb +0 -80
- data/test/rubygems/test_gem_ext_ext_conf_builder.rb +0 -229
- data/test/rubygems/test_gem_ext_rake_builder.rb +0 -113
- data/test/rubygems/test_gem_gem_runner.rb +0 -119
- data/test/rubygems/test_gem_gemcutter_utilities.rb +0 -361
- data/test/rubygems/test_gem_impossible_dependencies_error.rb +0 -60
- data/test/rubygems/test_gem_indexer.rb +0 -381
- data/test/rubygems/test_gem_install_update_options.rb +0 -208
- data/test/rubygems/test_gem_installer.rb +0 -2512
- data/test/rubygems/test_gem_local_remote_options.rb +0 -133
- data/test/rubygems/test_gem_name_tuple.rb +0 -43
- data/test/rubygems/test_gem_package.rb +0 -1306
- data/test/rubygems/test_gem_package_old.rb +0 -91
- data/test/rubygems/test_gem_package_tar_header.rb +0 -226
- data/test/rubygems/test_gem_package_tar_reader.rb +0 -135
- data/test/rubygems/test_gem_package_tar_reader_entry.rb +0 -350
- data/test/rubygems/test_gem_package_tar_writer.rb +0 -331
- data/test/rubygems/test_gem_package_task.rb +0 -118
- data/test/rubygems/test_gem_path_support.rb +0 -139
- data/test/rubygems/test_gem_platform.rb +0 -497
- data/test/rubygems/test_gem_rdoc.rb +0 -137
- data/test/rubygems/test_gem_remote_fetcher.rb +0 -1227
- data/test/rubygems/test_gem_request.rb +0 -547
- data/test/rubygems/test_gem_request_connection_pools.rb +0 -152
- data/test/rubygems/test_gem_request_set.rb +0 -672
- data/test/rubygems/test_gem_request_set_gem_dependency_api.rb +0 -853
- data/test/rubygems/test_gem_request_set_lockfile.rb +0 -469
- data/test/rubygems/test_gem_request_set_lockfile_parser.rb +0 -544
- data/test/rubygems/test_gem_request_set_lockfile_tokenizer.rb +0 -307
- data/test/rubygems/test_gem_requirement.rb +0 -505
- data/test/rubygems/test_gem_resolver.rb +0 -859
- data/test/rubygems/test_gem_resolver_activation_request.rb +0 -43
- data/test/rubygems/test_gem_resolver_api_set.rb +0 -210
- data/test/rubygems/test_gem_resolver_api_specification.rb +0 -167
- data/test/rubygems/test_gem_resolver_best_set.rb +0 -159
- data/test/rubygems/test_gem_resolver_composed_set.rb +0 -44
- data/test/rubygems/test_gem_resolver_conflict.rb +0 -82
- data/test/rubygems/test_gem_resolver_dependency_request.rb +0 -83
- data/test/rubygems/test_gem_resolver_git_set.rb +0 -188
- data/test/rubygems/test_gem_resolver_git_specification.rb +0 -114
- data/test/rubygems/test_gem_resolver_index_set.rb +0 -88
- data/test/rubygems/test_gem_resolver_index_specification.rb +0 -93
- data/test/rubygems/test_gem_resolver_installed_specification.rb +0 -47
- data/test/rubygems/test_gem_resolver_installer_set.rb +0 -320
- data/test/rubygems/test_gem_resolver_local_specification.rb +0 -44
- data/test/rubygems/test_gem_resolver_lock_set.rb +0 -62
- data/test/rubygems/test_gem_resolver_lock_specification.rb +0 -98
- data/test/rubygems/test_gem_resolver_requirement_list.rb +0 -19
- data/test/rubygems/test_gem_resolver_specification.rb +0 -63
- data/test/rubygems/test_gem_resolver_vendor_set.rb +0 -82
- data/test/rubygems/test_gem_resolver_vendor_specification.rb +0 -82
- data/test/rubygems/test_gem_security.rb +0 -341
- data/test/rubygems/test_gem_security_policy.rb +0 -535
- data/test/rubygems/test_gem_security_signer.rb +0 -218
- data/test/rubygems/test_gem_security_trust_dir.rb +0 -99
- data/test/rubygems/test_gem_silent_ui.rb +0 -123
- data/test/rubygems/test_gem_source.rb +0 -254
- data/test/rubygems/test_gem_source_fetch_problem.rb +0 -37
- data/test/rubygems/test_gem_source_git.rb +0 -310
- data/test/rubygems/test_gem_source_installed.rb +0 -35
- data/test/rubygems/test_gem_source_list.rb +0 -119
- data/test/rubygems/test_gem_source_local.rb +0 -107
- data/test/rubygems/test_gem_source_lock.rb +0 -113
- data/test/rubygems/test_gem_source_specific_file.rb +0 -76
- data/test/rubygems/test_gem_source_subpath_problem.rb +0 -50
- data/test/rubygems/test_gem_source_vendor.rb +0 -30
- data/test/rubygems/test_gem_spec_fetcher.rb +0 -338
- data/test/rubygems/test_gem_specification.rb +0 -3856
- data/test/rubygems/test_gem_stream_ui.rb +0 -255
- data/test/rubygems/test_gem_stub_specification.rb +0 -278
- data/test/rubygems/test_gem_text.rb +0 -103
- data/test/rubygems/test_gem_uninstaller.rb +0 -675
- data/test/rubygems/test_gem_unsatisfiable_dependency_error.rb +0 -31
- data/test/rubygems/test_gem_update_suggestion.rb +0 -209
- data/test/rubygems/test_gem_uri.rb +0 -41
- data/test/rubygems/test_gem_uri_formatter.rb +0 -27
- data/test/rubygems/test_gem_util.rb +0 -91
- data/test/rubygems/test_gem_validator.rb +0 -42
- data/test/rubygems/test_gem_version.rb +0 -305
- data/test/rubygems/test_gem_version_option.rb +0 -165
- data/test/rubygems/test_kernel.rb +0 -124
- data/test/rubygems/test_project_sanity.rb +0 -49
- data/test/rubygems/test_remote_fetch_error.rb +0 -20
- data/test/rubygems/test_require.rb +0 -732
- data/test/rubygems/test_rubygems.rb +0 -76
- data/test/rubygems/test_webauthn_listener.rb +0 -143
- data/test/rubygems/test_webauthn_listener_response.rb +0 -93
- data/test/rubygems/test_webauthn_poller.rb +0 -124
- data/test/rubygems/utilities.rb +0 -436
- data/test/rubygems/wrong_key_cert.pem +0 -19
- data/test/rubygems/wrong_key_cert_32.pem +0 -19
- data/test/test_changelog_generator.rb +0 -17
data/lib/rubygems/doctor.rb
CHANGED
@@ -53,7 +53,7 @@ class Gem::Doctor
|
|
53
53
|
# Specs installed in this gem repository
|
54
54
|
|
55
55
|
def installed_specs # :nodoc:
|
56
|
-
@installed_specs ||= Gem::Specification.map
|
56
|
+
@installed_specs ||= Gem::Specification.map(&:full_name)
|
57
57
|
end
|
58
58
|
|
59
59
|
##
|
@@ -75,7 +75,7 @@ class Gem::Doctor
|
|
75
75
|
Gem.use_paths @gem_repository.to_s
|
76
76
|
|
77
77
|
unless gem_repository?
|
78
|
-
say "This directory does not appear to be a RubyGems repository, "
|
78
|
+
say "This directory does not appear to be a RubyGems repository, " \
|
79
79
|
"skipping"
|
80
80
|
say
|
81
81
|
return
|
@@ -104,16 +104,16 @@ class Gem::Doctor
|
|
104
104
|
directory = File.join(@gem_repository, sub_directory)
|
105
105
|
|
106
106
|
Dir.entries(directory).sort.each do |ent|
|
107
|
-
next if
|
107
|
+
next if [".", ".."].include?(ent)
|
108
108
|
|
109
109
|
child = File.join(directory, ent)
|
110
110
|
next unless File.exist?(child)
|
111
111
|
|
112
112
|
basename = File.basename(child, extension)
|
113
113
|
next if installed_specs.include? basename
|
114
|
-
next if /^rubygems-\d
|
115
|
-
next if "specifications"
|
116
|
-
next if "plugins"
|
114
|
+
next if /^rubygems-\d/.match?(basename)
|
115
|
+
next if sub_directory == "specifications" && basename == "default"
|
116
|
+
next if sub_directory == "plugins" && Gem.plugin_suffix_regexp =~ (basename)
|
117
117
|
|
118
118
|
type = File.directory?(child) ? "directory" : "file"
|
119
119
|
|
data/lib/rubygems/errors.rb
CHANGED
@@ -134,11 +134,7 @@ module Gem
|
|
134
134
|
##
|
135
135
|
# A wordy description of the error.
|
136
136
|
def wordy
|
137
|
-
"Found %s (%s), but was for platform%s %s"
|
138
|
-
[@name,
|
139
|
-
@version,
|
140
|
-
@platforms.size == 1 ? "" : "s",
|
141
|
-
@platforms.join(" ,")]
|
137
|
+
format("Found %s (%s), but was for platform%s %s", @name, @version, @platforms.size == 1 ? "" : "s", @platforms.join(" ,"))
|
142
138
|
end
|
143
139
|
end
|
144
140
|
|
@@ -175,6 +171,6 @@ module Gem
|
|
175
171
|
##
|
176
172
|
# The "exception" alias allows you to call raise on a SourceFetchProblem.
|
177
173
|
|
178
|
-
|
174
|
+
alias_method :exception, :error
|
179
175
|
end
|
180
176
|
end
|
data/lib/rubygems/exceptions.rb
CHANGED
@@ -172,6 +172,7 @@ class Gem::ImpossibleDependenciesError < Gem::Exception
|
|
172
172
|
end
|
173
173
|
|
174
174
|
class Gem::InstallError < Gem::Exception; end
|
175
|
+
|
175
176
|
class Gem::RuntimeRequirementNotMetError < Gem::InstallError
|
176
177
|
attr_accessor :suggestion
|
177
178
|
def message
|
@@ -231,7 +232,7 @@ class Gem::SystemExitException < SystemExit
|
|
231
232
|
##
|
232
233
|
# The exit code for the process
|
233
234
|
|
234
|
-
|
235
|
+
alias_method :exit_code, :status
|
235
236
|
|
236
237
|
##
|
237
238
|
# Creates a new SystemExitException with the given +exit_code+
|
data/lib/rubygems/ext/builder.rb
CHANGED
@@ -27,19 +27,17 @@ class Gem::Ext::Builder
|
|
27
27
|
# try to find make program from Ruby configure arguments first
|
28
28
|
RbConfig::CONFIG["configure_args"] =~ /with-make-prog\=(\w+)/
|
29
29
|
make_program_name = ENV["MAKE"] || ENV["make"] || $1
|
30
|
-
|
31
|
-
make_program_name = (RUBY_PLATFORM.include?("mswin")) ? "nmake" : "make"
|
32
|
-
end
|
30
|
+
make_program_name ||= RUBY_PLATFORM.include?("mswin") ? "nmake" : "make"
|
33
31
|
make_program = Shellwords.split(make_program_name)
|
34
32
|
|
35
33
|
# The installation of the bundled gems is failed when DESTDIR is empty in mswin platform.
|
36
|
-
destdir =
|
34
|
+
destdir = /\bnmake/i !~ make_program_name || ENV["DESTDIR"] && ENV["DESTDIR"] != "" ? format("DESTDIR=%s", ENV["DESTDIR"]) : ""
|
37
35
|
|
38
36
|
env = [destdir]
|
39
37
|
|
40
38
|
if sitedir
|
41
|
-
env << "sitearchdir=%s"
|
42
|
-
env << "sitelibdir=%s"
|
39
|
+
env << format("sitearchdir=%s", sitedir)
|
40
|
+
env << format("sitelibdir=%s", sitedir)
|
43
41
|
end
|
44
42
|
|
45
43
|
targets.each do |target|
|
@@ -90,13 +88,20 @@ class Gem::Ext::Builder
|
|
90
88
|
# Set $SOURCE_DATE_EPOCH for the subprocess.
|
91
89
|
build_env = { "SOURCE_DATE_EPOCH" => Gem.source_date_epoch_string }.merge(env)
|
92
90
|
output, status = begin
|
93
|
-
Open3.
|
91
|
+
Open3.popen2e(build_env, *command, chdir: dir) do |_stdin, stdouterr, wait_thread|
|
92
|
+
output = String.new
|
93
|
+
while line = stdouterr.gets
|
94
|
+
output << line
|
95
|
+
if verbose
|
96
|
+
print line
|
97
|
+
end
|
98
|
+
end
|
99
|
+
[output, wait_thread.value]
|
100
|
+
end
|
94
101
|
rescue StandardError => error
|
95
102
|
raise Gem::InstallError, "#{command_name || class_name} failed#{error.message}"
|
96
103
|
end
|
97
|
-
|
98
|
-
puts output
|
99
|
-
else
|
104
|
+
unless verbose
|
100
105
|
results << output
|
101
106
|
end
|
102
107
|
ensure
|
@@ -198,7 +198,7 @@ class Gem::Ext::CargoBuilder < Gem::Ext::Builder
|
|
198
198
|
|
199
199
|
output, status =
|
200
200
|
begin
|
201
|
-
Open3.capture2e(cargo, "metadata", "--no-deps", "--format-version", "1", :
|
201
|
+
Open3.capture2e(cargo, "metadata", "--no-deps", "--format-version", "1", chdir: cargo_dir)
|
202
202
|
rescue StandardError => error
|
203
203
|
raise Gem::InstallError, "cargo metadata failed #{error.message}"
|
204
204
|
end
|
@@ -246,10 +246,10 @@ EOF
|
|
246
246
|
end
|
247
247
|
|
248
248
|
def rustc_dynamic_linker_flags(dest_dir, crate_name)
|
249
|
-
split_flags("DLDFLAGS")
|
250
|
-
|
251
|
-
.
|
252
|
-
|
249
|
+
split_flags("DLDFLAGS").
|
250
|
+
map {|arg| maybe_resolve_ldflag_variable(arg, dest_dir, crate_name) }.
|
251
|
+
compact.
|
252
|
+
flat_map {|arg| ldflag_to_link_modifier(arg) }
|
253
253
|
end
|
254
254
|
|
255
255
|
def rustc_lib_flags(dest_dir)
|
@@ -43,12 +43,12 @@ class Gem::Ext::ExtConfBuilder < Gem::Ext::Builder
|
|
43
43
|
|
44
44
|
full_tmp_dest = File.join(extension_dir, tmp_dest_relative)
|
45
45
|
|
46
|
-
# TODO remove in RubyGems 4
|
46
|
+
# TODO: remove in RubyGems 4
|
47
47
|
if Gem.install_extension_in_lib && lib_dir
|
48
48
|
FileUtils.mkdir_p lib_dir
|
49
49
|
entries = Dir.entries(full_tmp_dest) - %w[. ..]
|
50
50
|
entries = entries.map {|entry| File.join full_tmp_dest, entry }
|
51
|
-
FileUtils.cp_r entries, lib_dir, :
|
51
|
+
FileUtils.cp_r entries, lib_dir, remove_destination: true
|
52
52
|
end
|
53
53
|
|
54
54
|
FileUtils::Entry_.new(full_tmp_dest).traverse do |ent|
|
@@ -66,8 +66,6 @@ class Gem::Ext::ExtConfBuilder < Gem::Ext::Builder
|
|
66
66
|
FileUtils.rm_rf tmp_dest if tmp_dest
|
67
67
|
end
|
68
68
|
|
69
|
-
private
|
70
|
-
|
71
69
|
def self.get_relative_path(path, base)
|
72
70
|
path[0..base.length - 1] = "." if path.start_with?(base)
|
73
71
|
path
|
@@ -10,7 +10,7 @@ require_relative "../shellwords"
|
|
10
10
|
|
11
11
|
class Gem::Ext::RakeBuilder < Gem::Ext::Builder
|
12
12
|
def self.build(extension, dest_path, results, args=[], lib_dir=nil, extension_dir=Dir.pwd)
|
13
|
-
if File.basename(extension)
|
13
|
+
if /mkrf_conf/i.match?(File.basename(extension))
|
14
14
|
run([Gem.ruby, File.basename(extension), *args], results, class_name, extension_dir)
|
15
15
|
end
|
16
16
|
|
data/lib/rubygems/gem_runner.rb
CHANGED
@@ -45,10 +45,10 @@ class Gem::GemRunner
|
|
45
45
|
cmd.command_names.each do |command_name|
|
46
46
|
config_args = Gem.configuration[command_name]
|
47
47
|
config_args = case config_args
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
48
|
+
when String
|
49
|
+
config_args.split " "
|
50
|
+
else
|
51
|
+
Array(config_args)
|
52
52
|
end
|
53
53
|
Gem::Command.add_specific_extra_args command_name, config_args
|
54
54
|
end
|
@@ -2,9 +2,9 @@
|
|
2
2
|
|
3
3
|
##
|
4
4
|
# The WebauthnListener Response class is used by the WebauthnListener to create
|
5
|
-
# responses to be sent to the Gem host. It creates a Net::HTTPResponse instance
|
5
|
+
# responses to be sent to the Gem host. It creates a Gem::Net::HTTPResponse instance
|
6
6
|
# when initialized and can be converted to the appropriate format to be sent by a socket using `to_s`.
|
7
|
-
# Net::HTTPResponse instances cannot be directly sent over a socket.
|
7
|
+
# Gem::Net::HTTPResponse instances cannot be directly sent over a socket.
|
8
8
|
#
|
9
9
|
# Types of response classes:
|
10
10
|
# - OkResponse
|
@@ -60,7 +60,7 @@ module Gem::GemcutterUtilities
|
|
60
60
|
def body; end
|
61
61
|
|
62
62
|
def build_http_response
|
63
|
-
response_class = Net::HTTPResponse::CODE_TO_OBJ[code.to_s]
|
63
|
+
response_class = Gem::Net::HTTPResponse::CODE_TO_OBJ[code.to_s]
|
64
64
|
@http_response = response_class.new("1.1", code, reason_phrase)
|
65
65
|
@http_response.instance_variable_set(:@read, true)
|
66
66
|
|
@@ -37,16 +37,16 @@ module Gem::GemcutterUtilities
|
|
37
37
|
thread.abort_on_exception = true
|
38
38
|
thread.report_on_exception = false
|
39
39
|
thread[:otp] = new(options, host).poll_for_otp(webauthn_url, credentials)
|
40
|
-
rescue Gem::WebauthnVerificationError, Timeout::Error => e
|
40
|
+
rescue Gem::WebauthnVerificationError, Gem::Timeout::Error => e
|
41
41
|
thread[:error] = e
|
42
42
|
end
|
43
43
|
end
|
44
44
|
|
45
45
|
def poll_for_otp(webauthn_url, credentials)
|
46
|
-
Timeout.timeout(TIMEOUT_IN_SECONDS) do
|
46
|
+
Gem::Timeout.timeout(TIMEOUT_IN_SECONDS) do
|
47
47
|
loop do
|
48
48
|
response = webauthn_verification_poll_response(webauthn_url, credentials)
|
49
|
-
raise Gem::WebauthnVerificationError, response.message unless response.is_a?(Net::HTTPSuccess)
|
49
|
+
raise Gem::WebauthnVerificationError, response.message unless response.is_a?(Gem::Net::HTTPSuccess)
|
50
50
|
|
51
51
|
require "json"
|
52
52
|
parsed_response = JSON.parse(response.body)
|
@@ -9,9 +9,8 @@ require_relative "gemcutter_utilities/webauthn_poller"
|
|
9
9
|
# Utility methods for using the RubyGems API.
|
10
10
|
|
11
11
|
module Gem::GemcutterUtilities
|
12
|
-
|
13
12
|
ERROR_CODE = 1
|
14
|
-
API_SCOPES =
|
13
|
+
API_SCOPES = [:index_rubygems, :push_rubygem, :yank_rubygem, :add_owner, :remove_owner, :access_webhooks, :show_dashboard].freeze
|
15
14
|
|
16
15
|
include Gem::Text
|
17
16
|
|
@@ -85,7 +84,7 @@ module Gem::GemcutterUtilities
|
|
85
84
|
# If +allowed_push_host+ metadata is present, then it will only allow that host.
|
86
85
|
|
87
86
|
def rubygems_api_request(method, path, host = nil, allowed_push_host = nil, scope: nil, credentials: {}, &block)
|
88
|
-
|
87
|
+
require_relative "net/http"
|
89
88
|
|
90
89
|
self.host = host if host
|
91
90
|
unless self.host
|
@@ -120,11 +119,11 @@ module Gem::GemcutterUtilities
|
|
120
119
|
end
|
121
120
|
|
122
121
|
def mfa_unauthorized?(response)
|
123
|
-
response.is_a?(Net::HTTPUnauthorized) && response.body.start_with?("You have enabled multifactor authentication")
|
122
|
+
response.is_a?(Gem::Net::HTTPUnauthorized) && response.body.start_with?("You have enabled multifactor authentication")
|
124
123
|
end
|
125
124
|
|
126
125
|
def update_scope(scope)
|
127
|
-
sign_in_host =
|
126
|
+
sign_in_host = host
|
128
127
|
pretty_host = pretty_host(sign_in_host)
|
129
128
|
update_scope_params = { scope => true }
|
130
129
|
|
@@ -137,10 +136,10 @@ module Gem::GemcutterUtilities
|
|
137
136
|
sign_in_host, scope: scope) do |request|
|
138
137
|
request.basic_auth email, password
|
139
138
|
request["OTP"] = otp if otp
|
140
|
-
request.body = URI.encode_www_form({ :
|
139
|
+
request.body = URI.encode_www_form({ api_key: api_key }.merge(update_scope_params))
|
141
140
|
end
|
142
141
|
|
143
|
-
with_response response do |
|
142
|
+
with_response response do |_resp|
|
144
143
|
say "Added #{scope} scope to the existing API key"
|
145
144
|
end
|
146
145
|
end
|
@@ -150,13 +149,13 @@ module Gem::GemcutterUtilities
|
|
150
149
|
# key.
|
151
150
|
|
152
151
|
def sign_in(sign_in_host = nil, scope: nil)
|
153
|
-
sign_in_host ||=
|
152
|
+
sign_in_host ||= host
|
154
153
|
return if api_key
|
155
154
|
|
156
155
|
pretty_host = pretty_host(sign_in_host)
|
157
156
|
|
158
157
|
say "Enter your #{pretty_host} credentials."
|
159
|
-
say "Don't have an account yet? "
|
158
|
+
say "Don't have an account yet? " \
|
160
159
|
"Create one at #{sign_in_host}/sign_up"
|
161
160
|
|
162
161
|
email = ask " Email: "
|
@@ -209,13 +208,13 @@ module Gem::GemcutterUtilities
|
|
209
208
|
|
210
209
|
def with_response(response, error_prefix = nil)
|
211
210
|
case response
|
212
|
-
when Net::HTTPSuccess then
|
211
|
+
when Gem::Net::HTTPSuccess then
|
213
212
|
if block_given?
|
214
213
|
yield response
|
215
214
|
else
|
216
215
|
say clean_text(response.body)
|
217
216
|
end
|
218
|
-
when Net::HTTPPermanentRedirect, Net::HTTPRedirection then
|
217
|
+
when Gem::Net::HTTPPermanentRedirect, Gem::Net::HTTPRedirection then
|
219
218
|
message = "The request has redirected permanently to #{response["location"]}. Please check your defined push host URL."
|
220
219
|
message = "#{error_prefix}: #{message}" if error_prefix
|
221
220
|
|
@@ -245,7 +244,7 @@ module Gem::GemcutterUtilities
|
|
245
244
|
private
|
246
245
|
|
247
246
|
def request_with_otp(method, uri, &block)
|
248
|
-
request_method = Net::HTTP.const_get method.to_s.capitalize
|
247
|
+
request_method = Gem::Net::HTTP.const_get method.to_s.capitalize
|
249
248
|
|
250
249
|
Gem::RemoteFetcher.fetcher.request(uri, request_method) do |req|
|
251
250
|
req["OTP"] = otp if otp
|
@@ -298,7 +297,7 @@ module Gem::GemcutterUtilities
|
|
298
297
|
request.basic_auth credentials[:email], credentials[:password]
|
299
298
|
end
|
300
299
|
end
|
301
|
-
response.is_a?(Net::HTTPSuccess) ? response.body : nil
|
300
|
+
response.is_a?(Gem::Net::HTTPSuccess) ? response.body : nil
|
302
301
|
end
|
303
302
|
|
304
303
|
def pretty_host(host)
|
@@ -316,9 +315,9 @@ module Gem::GemcutterUtilities
|
|
316
315
|
scope_params = { scope => true }
|
317
316
|
else
|
318
317
|
say "Please select scopes you want to enable for the API key (y/n)"
|
319
|
-
API_SCOPES.each do |
|
320
|
-
selected = ask_yes_no(
|
321
|
-
scope_params[
|
318
|
+
API_SCOPES.each do |s|
|
319
|
+
selected = ask_yes_no(s.to_s, false)
|
320
|
+
scope_params[s] = true if selected
|
322
321
|
end
|
323
322
|
say "\n"
|
324
323
|
end
|
@@ -327,7 +326,7 @@ module Gem::GemcutterUtilities
|
|
327
326
|
end
|
328
327
|
|
329
328
|
def default_host?
|
330
|
-
|
329
|
+
host == Gem::DEFAULT_HOST
|
331
330
|
end
|
332
331
|
|
333
332
|
def get_user_profile(email, password)
|
@@ -345,7 +344,7 @@ module Gem::GemcutterUtilities
|
|
345
344
|
def get_mfa_params(profile)
|
346
345
|
mfa_level = profile["mfa"]
|
347
346
|
params = {}
|
348
|
-
if
|
347
|
+
if ["ui_only", "ui_and_gem_signin"].include?(mfa_level)
|
349
348
|
selected = ask_yes_no("Would you like to enable MFA for this key? (strongly recommended)")
|
350
349
|
params["mfa"] = true if selected
|
351
350
|
end
|
@@ -367,6 +366,6 @@ module Gem::GemcutterUtilities
|
|
367
366
|
end
|
368
367
|
|
369
368
|
def api_key_forbidden?(response)
|
370
|
-
response.is_a?(Net::HTTPForbidden) && response.body.start_with?("The API key doesn't have access")
|
369
|
+
response.is_a?(Gem::Net::HTTPForbidden) && response.body.start_with?("The API key doesn't have access")
|
371
370
|
end
|
372
371
|
end
|
@@ -36,9 +36,9 @@ module Gem::InstallUpdateOptions
|
|
36
36
|
"List the documentation types you wish to",
|
37
37
|
"generate. For example: rdoc,ri") do |value, options|
|
38
38
|
options[:document] = case value
|
39
|
-
|
40
|
-
|
41
|
-
|
39
|
+
when nil then %w[ri]
|
40
|
+
when false then []
|
41
|
+
else value
|
42
42
|
end
|
43
43
|
end
|
44
44
|
|
@@ -50,7 +50,7 @@ module Gem::InstallUpdateOptions
|
|
50
50
|
|
51
51
|
add_option(:"Install/Update", "--vendor",
|
52
52
|
"Install gem into the vendor directory.",
|
53
|
-
"Only for use by gem repackagers.") do |
|
53
|
+
"Only for use by gem repackagers.") do |_value, options|
|
54
54
|
unless Gem.vendor_dir
|
55
55
|
raise Gem::OptionParser::InvalidOption.new "your platform is not supported"
|
56
56
|
end
|
@@ -60,7 +60,7 @@ module Gem::InstallUpdateOptions
|
|
60
60
|
end
|
61
61
|
|
62
62
|
add_option(:"Install/Update", "-N", "--no-document",
|
63
|
-
"Disable documentation generation") do |
|
63
|
+
"Disable documentation generation") do |_value, options|
|
64
64
|
options[:document] = []
|
65
65
|
end
|
66
66
|
|
@@ -104,21 +104,21 @@ module Gem::InstallUpdateOptions
|
|
104
104
|
|
105
105
|
add_option(:"Install/Update", "--development",
|
106
106
|
"Install additional development",
|
107
|
-
"dependencies") do |
|
107
|
+
"dependencies") do |_value, options|
|
108
108
|
options[:development] = true
|
109
109
|
options[:dev_shallow] = true
|
110
110
|
end
|
111
111
|
|
112
112
|
add_option(:"Install/Update", "--development-all",
|
113
113
|
"Install development dependencies for all",
|
114
|
-
"gems (including dev deps themselves)") do |
|
114
|
+
"gems (including dev deps themselves)") do |_value, options|
|
115
115
|
options[:development] = true
|
116
116
|
options[:dev_shallow] = false
|
117
117
|
end
|
118
118
|
|
119
119
|
add_option(:"Install/Update", "--conservative",
|
120
120
|
"Don't attempt to upgrade gems already",
|
121
|
-
"meeting version requirement") do |
|
121
|
+
"meeting version requirement") do |_value, options|
|
122
122
|
options[:conservative] = true
|
123
123
|
options[:minimal_deps] = true
|
124
124
|
end
|
@@ -136,10 +136,10 @@ module Gem::InstallUpdateOptions
|
|
136
136
|
|
137
137
|
add_option(:"Install/Update", "-g", "--file [FILE]",
|
138
138
|
"Read from a gem dependencies API file and",
|
139
|
-
"install the listed gems") do |v,
|
140
|
-
v
|
139
|
+
"install the listed gems") do |v,_o|
|
140
|
+
v ||= Gem::GEM_DEP_FILES.find do |file|
|
141
141
|
File.exist? file
|
142
|
-
end
|
142
|
+
end
|
143
143
|
|
144
144
|
unless v
|
145
145
|
message = v ? v : "(tried #{Gem::GEM_DEP_FILES.join ", "})"
|
@@ -154,29 +154,29 @@ module Gem::InstallUpdateOptions
|
|
154
154
|
add_option(:"Install/Update", "--without GROUPS", Array,
|
155
155
|
"Omit the named groups (comma separated)",
|
156
156
|
"when installing from a gem dependencies",
|
157
|
-
"file") do |v,
|
158
|
-
options[:without_groups].concat v.map
|
157
|
+
"file") do |v,_o|
|
158
|
+
options[:without_groups].concat v.map(&:intern)
|
159
159
|
end
|
160
160
|
|
161
161
|
add_option(:"Install/Update", "--default",
|
162
162
|
"Add the gem's full specification to",
|
163
|
-
"specifications/default and extract only its bin") do |v,
|
163
|
+
"specifications/default and extract only its bin") do |v,_o|
|
164
164
|
options[:install_as_default] = v
|
165
165
|
end
|
166
166
|
|
167
167
|
add_option(:"Install/Update", "--explain",
|
168
168
|
"Rather than install the gems, indicate which would",
|
169
|
-
"be installed") do |v,
|
169
|
+
"be installed") do |v,_o|
|
170
170
|
options[:explain] = v
|
171
171
|
end
|
172
172
|
|
173
173
|
add_option(:"Install/Update", "--[no-]lock",
|
174
|
-
"Create a lock file (when used with -g/--file)") do |v,
|
174
|
+
"Create a lock file (when used with -g/--file)") do |v,_o|
|
175
175
|
options[:lock] = v
|
176
176
|
end
|
177
177
|
|
178
178
|
add_option(:"Install/Update", "--[no-]suggestions",
|
179
|
-
"Suggest alternates when gems are not found") do |v,
|
179
|
+
"Suggest alternates when gems are not found") do |v,_o|
|
180
180
|
options[:suggest_alternate] = v
|
181
181
|
end
|
182
182
|
end
|
@@ -186,7 +186,7 @@ module Gem::InstallUpdateOptions
|
|
186
186
|
|
187
187
|
def install_update_options
|
188
188
|
{
|
189
|
-
:
|
189
|
+
document: %w[ri],
|
190
190
|
}
|
191
191
|
end
|
192
192
|
|
@@ -196,5 +196,4 @@ module Gem::InstallUpdateOptions
|
|
196
196
|
def install_update_defaults_str
|
197
197
|
"--document=ri"
|
198
198
|
end
|
199
|
-
|
200
199
|
end
|