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/version.rb
CHANGED
@@ -156,16 +156,16 @@ class Gem::Version
|
|
156
156
|
include Comparable
|
157
157
|
|
158
158
|
VERSION_PATTERN = '[0-9]+(?>\.[0-9a-zA-Z]+)*(-[0-9A-Za-z-]+(\.[0-9A-Za-z-]+)*)?' # :nodoc:
|
159
|
-
ANCHORED_VERSION_PATTERN = /\A\s*(#{VERSION_PATTERN})?\s*\z
|
159
|
+
ANCHORED_VERSION_PATTERN = /\A\s*(#{VERSION_PATTERN})?\s*\z/ # :nodoc:
|
160
160
|
|
161
161
|
##
|
162
162
|
# A string representation of this Version.
|
163
163
|
|
164
164
|
def version
|
165
|
-
@version
|
165
|
+
@version
|
166
166
|
end
|
167
167
|
|
168
|
-
|
168
|
+
alias_method :to_s, :version
|
169
169
|
|
170
170
|
##
|
171
171
|
# True if the +version+ string matches RubyGems' requirements.
|
@@ -173,7 +173,7 @@ class Gem::Version
|
|
173
173
|
def self.correct?(version)
|
174
174
|
nil_versions_are_discouraged! if version.nil?
|
175
175
|
|
176
|
-
|
176
|
+
ANCHORED_VERSION_PATTERN.match?(version.to_s)
|
177
177
|
end
|
178
178
|
|
179
179
|
##
|
@@ -201,7 +201,7 @@ class Gem::Version
|
|
201
201
|
@@release = {}
|
202
202
|
|
203
203
|
def self.new(version) # :nodoc:
|
204
|
-
return super unless Gem::Version
|
204
|
+
return super unless self == Gem::Version
|
205
205
|
|
206
206
|
@@all[version] ||= super
|
207
207
|
end
|
@@ -224,9 +224,17 @@ class Gem::Version
|
|
224
224
|
end
|
225
225
|
|
226
226
|
# If version is an empty string convert it to 0
|
227
|
-
version = 0 if version.is_a?(String) &&
|
227
|
+
version = 0 if version.is_a?(String) && /\A\s*\Z/.match?(version)
|
228
|
+
|
229
|
+
@version = version.to_s
|
228
230
|
|
229
|
-
|
231
|
+
# optimization to avoid allocation when given an integer, since we know
|
232
|
+
# it's to_s won't have any spaces or dashes
|
233
|
+
unless version.is_a?(Integer)
|
234
|
+
@version = @version.strip
|
235
|
+
@version.gsub!("-",".pre.")
|
236
|
+
end
|
237
|
+
@version = -@version
|
230
238
|
@segments = nil
|
231
239
|
end
|
232
240
|
|
@@ -252,7 +260,7 @@ class Gem::Version
|
|
252
260
|
# same precision. Version "1.0" is not the same as version "1".
|
253
261
|
|
254
262
|
def eql?(other)
|
255
|
-
self.class === other && @version == other.
|
263
|
+
self.class === other && @version == other.version
|
256
264
|
end
|
257
265
|
|
258
266
|
def hash # :nodoc:
|
@@ -284,7 +292,7 @@ class Gem::Version
|
|
284
292
|
end
|
285
293
|
|
286
294
|
def yaml_initialize(tag, map) # :nodoc:
|
287
|
-
@version = map["version"]
|
295
|
+
@version = -map["version"]
|
288
296
|
@segments = nil
|
289
297
|
@hash = nil
|
290
298
|
end
|
@@ -302,7 +310,7 @@ class Gem::Version
|
|
302
310
|
|
303
311
|
def prerelease?
|
304
312
|
unless instance_variable_defined? :@prerelease
|
305
|
-
@prerelease =
|
313
|
+
@prerelease = /[a-zA-Z]/.match?(version)
|
306
314
|
end
|
307
315
|
@prerelease
|
308
316
|
end
|
@@ -354,7 +362,7 @@ class Gem::Version
|
|
354
362
|
return self <=> self.class.new(other) if (String === other) && self.class.correct?(other)
|
355
363
|
|
356
364
|
return unless Gem::Version === other
|
357
|
-
return 0 if @version == other.
|
365
|
+
return 0 if @version == other.version || canonical_segments == other.canonical_segments
|
358
366
|
|
359
367
|
lhsegments = canonical_segments
|
360
368
|
rhsegments = other.canonical_segments
|
@@ -377,42 +385,40 @@ class Gem::Version
|
|
377
385
|
return lhs <=> rhs
|
378
386
|
end
|
379
387
|
|
380
|
-
|
388
|
+
0
|
381
389
|
end
|
382
390
|
|
391
|
+
# remove trailing zeros segments before first letter or at the end of the version
|
383
392
|
def canonical_segments
|
384
|
-
@canonical_segments ||=
|
385
|
-
|
386
|
-
|
387
|
-
|
393
|
+
@canonical_segments ||= begin
|
394
|
+
# remove trailing 0 segments, using dot or letter as anchor
|
395
|
+
# may leave a trailing dot which will be ignored by partition_segments
|
396
|
+
canonical_version = @version.sub(/(?<=[a-zA-Z.])[.0]+\z/, "")
|
397
|
+
# remove 0 segments before the first letter in a prerelease version
|
398
|
+
canonical_version.sub!(/(?<=\.|\A)[0.]+(?=[a-zA-Z])/, "") if prerelease?
|
399
|
+
partition_segments(canonical_version)
|
400
|
+
end
|
388
401
|
end
|
389
402
|
|
390
403
|
def freeze
|
391
404
|
prerelease?
|
405
|
+
_segments
|
392
406
|
canonical_segments
|
393
407
|
super
|
394
408
|
end
|
395
409
|
|
396
410
|
protected
|
397
411
|
|
398
|
-
def _version
|
399
|
-
@version
|
400
|
-
end
|
401
|
-
|
402
412
|
def _segments
|
403
413
|
# segments is lazy so it can pick up version values that come from
|
404
414
|
# old marshaled versions, which don't go through marshal_load.
|
405
415
|
# since this version object is cached in @@all, its @segments should be frozen
|
406
|
-
|
407
|
-
@segments ||= @version.scan(/[0-9]+|[a-z]+/i).map do |s|
|
408
|
-
/^\d+$/ =~ s ? s.to_i : s
|
409
|
-
end.freeze
|
416
|
+
@segments ||= partition_segments(@version)
|
410
417
|
end
|
411
418
|
|
412
|
-
def
|
413
|
-
|
414
|
-
|
415
|
-
|
416
|
-
return numeric_segments, string_segments
|
419
|
+
def partition_segments(ver)
|
420
|
+
ver.scan(/\d+|[a-z]+/i).map! do |s|
|
421
|
+
/\A\d/.match?(s) ? s.to_i : -s
|
422
|
+
end.freeze
|
417
423
|
end
|
418
424
|
end
|
@@ -12,7 +12,6 @@ require_relative "../rubygems"
|
|
12
12
|
# Mixin methods for --version and --platform Gem::Command options.
|
13
13
|
|
14
14
|
module Gem::VersionOption
|
15
|
-
|
16
15
|
##
|
17
16
|
# Add the --platform option to the option parser.
|
18
17
|
|
@@ -26,8 +25,7 @@ module Gem::VersionOption
|
|
26
25
|
end
|
27
26
|
|
28
27
|
add_option("--platform PLATFORM", Gem::Platform,
|
29
|
-
"Specify the platform of gem to #{task}", *wrap) do
|
30
|
-
|value, options|
|
28
|
+
"Specify the platform of gem to #{task}", *wrap) do |value, options|
|
31
29
|
unless options[:added_platform]
|
32
30
|
Gem.platforms = [Gem::Platform::RUBY]
|
33
31
|
options[:added_platform] = true
|
@@ -57,8 +55,7 @@ module Gem::VersionOption
|
|
57
55
|
end
|
58
56
|
|
59
57
|
add_option("-v", "--version VERSION", Gem::Requirement,
|
60
|
-
"Specify version of gem to #{task}", *wrap) do
|
61
|
-
|value, options|
|
58
|
+
"Specify version of gem to #{task}", *wrap) do |value, options|
|
62
59
|
# Allow handling for multiple --version operators
|
63
60
|
if options[:version] && !options[:version].none?
|
64
61
|
options[:version].concat([value])
|
@@ -17,7 +17,11 @@ module Gem
|
|
17
17
|
if v.is_a?(Hash)
|
18
18
|
yaml << dump_hash(v).gsub(/^(?!$)/, " ") # indent all non-empty lines
|
19
19
|
elsif v.is_a?(Array) # Expected to be array of strings
|
20
|
-
|
20
|
+
if v.empty?
|
21
|
+
yaml << " []\n"
|
22
|
+
else
|
23
|
+
yaml << "\n- " << v.map {|s| s.to_s.gsub(/\s+/, " ").inspect }.join("\n- ") << "\n"
|
24
|
+
end
|
21
25
|
else
|
22
26
|
yaml << " " << v.to_s.gsub(/\s+/, " ").inspect << "\n"
|
23
27
|
end
|
@@ -32,7 +36,7 @@ module Gem
|
|
32
36
|
(.*) # value
|
33
37
|
\1 # matching closing quote
|
34
38
|
$
|
35
|
-
/xo
|
39
|
+
/xo
|
36
40
|
|
37
41
|
HASH_REGEX = /
|
38
42
|
^
|
@@ -44,14 +48,14 @@ module Gem
|
|
44
48
|
(.*) # value
|
45
49
|
\3 # matching closing quote
|
46
50
|
$
|
47
|
-
/xo
|
51
|
+
/xo
|
48
52
|
|
49
53
|
def load(str)
|
50
54
|
res = {}
|
51
55
|
stack = [res]
|
52
56
|
last_hash = nil
|
53
57
|
last_empty_key = nil
|
54
|
-
str.split(/\r?\n/)
|
58
|
+
str.split(/\r?\n/) do |line|
|
55
59
|
if match = HASH_REGEX.match(line)
|
56
60
|
indent, key, quote, val = match.captures
|
57
61
|
convert_to_backward_compatible_key!(key)
|
@@ -63,6 +67,7 @@ module Gem
|
|
63
67
|
last_empty_key = key
|
64
68
|
last_hash = stack[depth]
|
65
69
|
else
|
70
|
+
val = [] if val == "[]" # empty array
|
66
71
|
stack[depth][key] = val
|
67
72
|
end
|
68
73
|
elsif match = ARRAY_REGEX.match(line)
|
data/lib/rubygems.rb
CHANGED
@@ -9,7 +9,7 @@
|
|
9
9
|
require "rbconfig"
|
10
10
|
|
11
11
|
module Gem
|
12
|
-
VERSION = "3.
|
12
|
+
VERSION = "3.5.0"
|
13
13
|
end
|
14
14
|
|
15
15
|
# Must be first since it unloads the prelude from 1.9.2
|
@@ -115,11 +115,6 @@ require_relative "rubygems/errors"
|
|
115
115
|
module Gem
|
116
116
|
RUBYGEMS_DIR = __dir__
|
117
117
|
|
118
|
-
# Taint support is deprecated in Ruby 2.7.
|
119
|
-
# This allows switching ".untaint" to ".tap(&Gem::UNTAINT)",
|
120
|
-
# to avoid deprecation warnings in Ruby 2.7.
|
121
|
-
UNTAINT = RUBY_VERSION < "2.7" ? :untaint.to_sym : proc {}
|
122
|
-
|
123
118
|
##
|
124
119
|
# An Array of Regexps that match windows Ruby platforms.
|
125
120
|
|
@@ -211,7 +206,7 @@ module Gem
|
|
211
206
|
end
|
212
207
|
end
|
213
208
|
|
214
|
-
|
209
|
+
true
|
215
210
|
end
|
216
211
|
|
217
212
|
def self.needs
|
@@ -338,16 +333,6 @@ module Gem
|
|
338
333
|
@configuration = config
|
339
334
|
end
|
340
335
|
|
341
|
-
##
|
342
|
-
# The path to the data directory specified by the gem name. If the
|
343
|
-
# package is not available as a gem, return nil.
|
344
|
-
|
345
|
-
def self.datadir(gem_name)
|
346
|
-
spec = @loaded_specs[gem_name]
|
347
|
-
return nil if spec.nil?
|
348
|
-
spec.datadir
|
349
|
-
end
|
350
|
-
|
351
336
|
##
|
352
337
|
# A Zlib::Deflate.deflate wrapper
|
353
338
|
|
@@ -439,7 +424,7 @@ An Array (#{env.inspect}) was passed in from #{caller[3]}
|
|
439
424
|
|
440
425
|
def self.ensure_subdirectories(dir, mode, subdirs) # :nodoc:
|
441
426
|
old_umask = File.umask
|
442
|
-
File.umask old_umask |
|
427
|
+
File.umask old_umask | 0o002
|
443
428
|
|
444
429
|
options = {}
|
445
430
|
|
@@ -465,7 +450,7 @@ An Array (#{env.inspect}) was passed in from #{caller[3]}
|
|
465
450
|
# distinction as extensions cannot be shared between the two.
|
466
451
|
|
467
452
|
def self.extension_api_version # :nodoc:
|
468
|
-
if
|
453
|
+
if RbConfig::CONFIG["ENABLE_SHARED"] == "no"
|
469
454
|
"#{ruby_api_version}-static"
|
470
455
|
else
|
471
456
|
ruby_api_version
|
@@ -499,14 +484,14 @@ An Array (#{env.inspect}) was passed in from #{caller[3]}
|
|
499
484
|
# the spec dirs directly, so we prune.
|
500
485
|
files.uniq! if check_load_path
|
501
486
|
|
502
|
-
|
487
|
+
files
|
503
488
|
end
|
504
489
|
|
505
490
|
def self.find_files_from_load_path(glob) # :nodoc:
|
506
491
|
glob_with_suffixes = "#{glob}#{Gem.suffix_pattern}"
|
507
492
|
$LOAD_PATH.map do |load_path|
|
508
493
|
Gem::Util.glob_files_in_dir(glob_with_suffixes, load_path)
|
509
|
-
end.flatten.select {|file| File.file? file
|
494
|
+
end.flatten.select {|file| File.file? file }
|
510
495
|
end
|
511
496
|
|
512
497
|
##
|
@@ -534,7 +519,7 @@ An Array (#{env.inspect}) was passed in from #{caller[3]}
|
|
534
519
|
# the spec dirs directly, so we prune.
|
535
520
|
files.uniq! if check_load_path
|
536
521
|
|
537
|
-
|
522
|
+
files
|
538
523
|
end
|
539
524
|
|
540
525
|
##
|
@@ -614,6 +599,16 @@ An Array (#{env.inspect}) was passed in from #{caller[3]}
|
|
614
599
|
@yaml_loaded = true
|
615
600
|
end
|
616
601
|
|
602
|
+
@safe_marshal_loaded = false
|
603
|
+
|
604
|
+
def self.load_safe_marshal
|
605
|
+
return if @safe_marshal_loaded
|
606
|
+
|
607
|
+
require_relative "rubygems/safe_marshal"
|
608
|
+
|
609
|
+
@safe_marshal_loaded = true
|
610
|
+
end
|
611
|
+
|
617
612
|
##
|
618
613
|
# The file name and line number of the caller of the caller of this method.
|
619
614
|
#
|
@@ -742,7 +737,7 @@ An Array (#{env.inspect}) was passed in from #{caller[3]}
|
|
742
737
|
|
743
738
|
if prefix != File.expand_path(RbConfig::CONFIG["sitelibdir"]) &&
|
744
739
|
prefix != File.expand_path(RbConfig::CONFIG["libdir"]) &&
|
745
|
-
|
740
|
+
File.basename(RUBYGEMS_DIR) == "lib"
|
746
741
|
prefix
|
747
742
|
end
|
748
743
|
end
|
@@ -758,13 +753,9 @@ An Array (#{env.inspect}) was passed in from #{caller[3]}
|
|
758
753
|
# Safely read a file in binary mode on all platforms.
|
759
754
|
|
760
755
|
def self.read_binary(path)
|
761
|
-
open_file(path, "rb+")
|
762
|
-
io.read
|
763
|
-
end
|
756
|
+
open_file(path, "rb+", &:read)
|
764
757
|
rescue Errno::EACCES, Errno::EROFS
|
765
|
-
open_file(path, "rb")
|
766
|
-
io.read
|
767
|
-
end
|
758
|
+
open_file(path, "rb", &:read)
|
768
759
|
end
|
769
760
|
|
770
761
|
##
|
@@ -809,7 +800,7 @@ An Array (#{env.inspect}) was passed in from #{caller[3]}
|
|
809
800
|
if @ruby.nil?
|
810
801
|
@ruby = RbConfig.ruby
|
811
802
|
|
812
|
-
@ruby = "\"#{@ruby}\"" if @ruby
|
803
|
+
@ruby = "\"#{@ruby}\"" if /\s/.match?(@ruby)
|
813
804
|
end
|
814
805
|
|
815
806
|
@ruby
|
@@ -866,7 +857,7 @@ An Array (#{env.inspect}) was passed in from #{caller[3]}
|
|
866
857
|
return @ruby_version if defined? @ruby_version
|
867
858
|
version = RUBY_VERSION.dup
|
868
859
|
|
869
|
-
|
860
|
+
if RUBY_PATCHLEVEL == -1
|
870
861
|
if RUBY_ENGINE == "ruby"
|
871
862
|
desc = RUBY_DESCRIPTION[/\Aruby #{Regexp.quote(RUBY_VERSION)}([^ ]+) /, 1]
|
872
863
|
else
|
@@ -948,8 +939,7 @@ An Array (#{env.inspect}) was passed in from #{caller[3]}
|
|
948
939
|
val = RbConfig::CONFIG[key]
|
949
940
|
next unless val && !val.empty?
|
950
941
|
".#{val}"
|
951
|
-
end
|
952
|
-
].compact.uniq
|
942
|
+
end].compact.uniq
|
953
943
|
end
|
954
944
|
|
955
945
|
##
|
@@ -963,7 +953,7 @@ An Array (#{env.inspect}) was passed in from #{caller[3]}
|
|
963
953
|
|
964
954
|
elapsed = Time.now - now
|
965
955
|
|
966
|
-
ui.say "%2$*1$s: %3$3.3fs"
|
956
|
+
ui.say format("%2$*1$s: %3$3.3fs", -width, msg, elapsed) if display
|
967
957
|
|
968
958
|
value
|
969
959
|
end
|
@@ -995,7 +985,7 @@ An Array (#{env.inspect}) was passed in from #{caller[3]}
|
|
995
985
|
def self.win_platform?
|
996
986
|
if @@win_platform.nil?
|
997
987
|
ruby_platform = RbConfig::CONFIG["host_os"]
|
998
|
-
@@win_platform =
|
988
|
+
@@win_platform = !WIN_PATTERNS.find {|r| ruby_platform =~ r }.nil?
|
999
989
|
end
|
1000
990
|
|
1001
991
|
@@win_platform
|
@@ -1023,11 +1013,11 @@ An Array (#{env.inspect}) was passed in from #{caller[3]}
|
|
1023
1013
|
# Skip older versions of the GemCutter plugin: Its commands are in
|
1024
1014
|
# RubyGems proper now.
|
1025
1015
|
|
1026
|
-
next if
|
1016
|
+
next if /gemcutter-0\.[0-3]/.match?(plugin)
|
1027
1017
|
|
1028
1018
|
begin
|
1029
1019
|
load plugin
|
1030
|
-
rescue
|
1020
|
+
rescue ScriptError, StandardError => e
|
1031
1021
|
details = "#{plugin.inspect}: #{e.message} (#{e.class})"
|
1032
1022
|
warn "Error loading RubyGems plugin #{details}"
|
1033
1023
|
end
|
@@ -1089,8 +1079,6 @@ An Array (#{env.inspect}) was passed in from #{caller[3]}
|
|
1089
1079
|
end
|
1090
1080
|
end
|
1091
1081
|
|
1092
|
-
path.tap(&Gem::UNTAINT)
|
1093
|
-
|
1094
1082
|
unless File.file? path
|
1095
1083
|
return unless raise_exception
|
1096
1084
|
|
@@ -1152,7 +1140,7 @@ An Array (#{env.inspect}) was passed in from #{caller[3]}
|
|
1152
1140
|
# This is used throughout RubyGems for enabling reproducible builds.
|
1153
1141
|
|
1154
1142
|
def self.source_date_epoch
|
1155
|
-
Time.at(
|
1143
|
+
Time.at(source_date_epoch_string.to_i).utc.freeze
|
1156
1144
|
end
|
1157
1145
|
|
1158
1146
|
# FIX: Almost everywhere else we use the `def self.` way of defining class
|
@@ -1299,9 +1287,10 @@ An Array (#{env.inspect}) was passed in from #{caller[3]}
|
|
1299
1287
|
##
|
1300
1288
|
# Location of Marshal quick gemspecs on remote repositories
|
1301
1289
|
|
1302
|
-
MARSHAL_SPEC_DIR = "quick/Marshal.#{Gem.marshal_version}/"
|
1290
|
+
MARSHAL_SPEC_DIR = "quick/Marshal.#{Gem.marshal_version}/".freeze
|
1303
1291
|
|
1304
1292
|
autoload :ConfigFile, File.expand_path("rubygems/config_file", __dir__)
|
1293
|
+
autoload :CIDetector, File.expand_path("rubygems/ci_detector", __dir__)
|
1305
1294
|
autoload :Dependency, File.expand_path("rubygems/dependency", __dir__)
|
1306
1295
|
autoload :DependencyList, File.expand_path("rubygems/dependency_list", __dir__)
|
1307
1296
|
autoload :Installer, File.expand_path("rubygems/installer", __dir__)
|
@@ -1348,6 +1337,17 @@ begin
|
|
1348
1337
|
rescue LoadError
|
1349
1338
|
end
|
1350
1339
|
|
1340
|
+
# TruffleRuby >= 24 defines REUSE_AS_BINARY_ON_TRUFFLERUBY in defaults/truffleruby.
|
1341
|
+
# However, TruffleRuby < 24 defines REUSE_AS_BINARY_ON_TRUFFLERUBY directly in its copy
|
1342
|
+
# of lib/rubygems/platform.rb, so it is not defined if RubyGems is updated (gem update --system).
|
1343
|
+
# Instead, we define it here in that case, similar to bundler/lib/bundler/rubygems_ext.rb.
|
1344
|
+
# We must define it here and not in platform.rb because platform.rb is loaded before defaults/truffleruby.
|
1345
|
+
class Gem::Platform
|
1346
|
+
if RUBY_ENGINE == "truffleruby" && !defined?(REUSE_AS_BINARY_ON_TRUFFLERUBY)
|
1347
|
+
REUSE_AS_BINARY_ON_TRUFFLERUBY = %w[libv8 libv8-node sorbet-static].freeze
|
1348
|
+
end
|
1349
|
+
end
|
1350
|
+
|
1351
1351
|
##
|
1352
1352
|
# Loads the default specs.
|
1353
1353
|
Gem::Specification.load_defaults
|
@@ -1357,7 +1357,7 @@ require_relative "rubygems/core_ext/kernel_gem"
|
|
1357
1357
|
path = File.join(__dir__, "rubygems/core_ext/kernel_require.rb")
|
1358
1358
|
# When https://bugs.ruby-lang.org/issues/17259 is available, there is no need to override Kernel#warn
|
1359
1359
|
if RUBY_ENGINE == "truffleruby" ||
|
1360
|
-
|
1360
|
+
RUBY_ENGINE == "ruby"
|
1361
1361
|
file = "<internal:#{path}>"
|
1362
1362
|
else
|
1363
1363
|
require_relative "rubygems/core_ext/kernel_warn"
|
data/rubygems-update.gemspec
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |s|
|
4
4
|
s.name = "rubygems-update"
|
5
|
-
s.version = "3.
|
5
|
+
s.version = "3.5.0"
|
6
6
|
s.authors = ["Jim Weirich", "Chad Fowler", "Eric Hodel", "Luis Lavena", "Aaron Patterson", "Samuel Giddins", "André Arko", "Evan Phoenix", "Hiroshi SHIBATA"]
|
7
7
|
s.email = ["", "", "drbrain@segment7.net", "luislavena@gmail.com", "aaron@tenderlovemaking.com", "segiddins@segiddins.me", "andre@arko.net", "evan@phx.io", "hsbt@ruby-lang.org"]
|
8
8
|
|
@@ -17,7 +17,7 @@ Gem::Specification.new do |s|
|
|
17
17
|
s.metadata = { "source_code_uri" => "https://github.com/rubygems/rubygems" }
|
18
18
|
s.licenses = ["Ruby", "MIT"]
|
19
19
|
|
20
|
-
s.files = File.read("Manifest.txt").split
|
20
|
+
s.files = File.read(File.expand_path("Manifest.txt", __dir__)).split
|
21
21
|
s.bindir = "exe"
|
22
22
|
s.executables = ["update_rubygems"]
|
23
23
|
s.require_paths = ["hide_lib_for_update"]
|
@@ -28,10 +28,10 @@ Gem::Specification.new do |s|
|
|
28
28
|
"UPGRADING.md", "POLICIES.md", "CODE_OF_CONDUCT.md",
|
29
29
|
"CONTRIBUTING.md",
|
30
30
|
"bundler/LICENSE.md", "bundler/README.md",
|
31
|
-
"hide_lib_for_update/note.txt", *Dir["bundler/lib/bundler/man/*.1"]
|
31
|
+
"hide_lib_for_update/note.txt", *Dir["bundler/lib/bundler/man/*.1", base: __dir__]
|
32
32
|
]
|
33
33
|
|
34
|
-
s.required_ruby_version = Gem::Requirement.new(">=
|
34
|
+
s.required_ruby_version = Gem::Requirement.new(">= 3.0.0")
|
35
35
|
s.required_rubygems_version = Gem::Requirement.new(">= 0")
|
36
36
|
|
37
37
|
s.specification_version = 4
|
data/setup.rb
CHANGED
@@ -7,7 +7,7 @@
|
|
7
7
|
# See LICENSE.txt for permissions.
|
8
8
|
#++
|
9
9
|
|
10
|
-
abort "RubyGems only supports Ruby
|
10
|
+
abort "RubyGems only supports Ruby 3.0 or higher" if RUBY_VERSION < "3.0.0"
|
11
11
|
|
12
12
|
# Make sure rubygems isn't already loaded.
|
13
13
|
if ENV["RUBYOPT"] || defined? Gem
|
@@ -29,7 +29,7 @@ Gem::CommandManager.instance.register_command :setup
|
|
29
29
|
|
30
30
|
args = ARGV.clone
|
31
31
|
if ENV["GEM_PREV_VER"]
|
32
|
-
args = [
|
32
|
+
args = ["--previous-version", ENV["GEM_PREV_VER"]] + args
|
33
33
|
end
|
34
34
|
args.unshift "setup"
|
35
35
|
|