rubygems-update 3.5.5 → 3.6.9
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 +606 -1
- data/CODE_OF_CONDUCT.md +79 -28
- data/Manifest.txt +114 -73
- data/README.md +16 -11
- data/bundler/CHANGELOG.md +506 -6
- data/bundler/README.md +2 -2
- data/bundler/bundler.gemspec +2 -2
- data/bundler/lib/bundler/build_metadata.rb +2 -2
- data/bundler/lib/bundler/checksum.rb +22 -12
- data/bundler/lib/bundler/cli/add.rb +3 -1
- data/bundler/lib/bundler/cli/binstubs.rb +1 -1
- data/bundler/lib/bundler/cli/check.rb +3 -3
- data/bundler/lib/bundler/cli/console.rb +8 -10
- data/bundler/lib/bundler/cli/doctor/diagnose.rb +167 -0
- data/bundler/lib/bundler/cli/doctor/ssl.rb +249 -0
- data/bundler/lib/bundler/cli/doctor.rb +27 -151
- data/bundler/lib/bundler/cli/exec.rb +1 -0
- data/bundler/lib/bundler/cli/fund.rb +1 -1
- data/bundler/lib/bundler/cli/gem.rb +13 -17
- data/bundler/lib/bundler/cli/info.rb +6 -6
- data/bundler/lib/bundler/cli/inject.rb +3 -3
- data/bundler/lib/bundler/cli/install.rb +14 -5
- data/bundler/lib/bundler/cli/issue.rb +3 -3
- data/bundler/lib/bundler/cli/lock.rb +32 -11
- data/bundler/lib/bundler/cli/outdated.rb +22 -22
- data/bundler/lib/bundler/cli/plugin.rb +3 -2
- data/bundler/lib/bundler/cli/pristine.rb +1 -1
- data/bundler/lib/bundler/cli/show.rb +3 -3
- data/bundler/lib/bundler/cli.rb +51 -107
- data/bundler/lib/bundler/compact_index_client/cache.rb +48 -73
- data/bundler/lib/bundler/compact_index_client/cache_file.rb +0 -5
- data/bundler/lib/bundler/compact_index_client/parser.rb +84 -0
- data/bundler/lib/bundler/compact_index_client/updater.rb +2 -12
- data/bundler/lib/bundler/compact_index_client.rb +51 -80
- data/bundler/lib/bundler/constants.rb +8 -1
- data/bundler/lib/bundler/current_ruby.rb +23 -33
- data/bundler/lib/bundler/definition.rb +485 -313
- data/bundler/lib/bundler/dependency.rb +92 -46
- data/bundler/lib/bundler/dsl.rb +135 -101
- data/bundler/lib/bundler/endpoint_specification.rb +30 -3
- data/bundler/lib/bundler/env.rb +1 -1
- data/bundler/lib/bundler/environment_preserver.rb +5 -23
- data/bundler/lib/bundler/errors.rb +53 -5
- data/bundler/lib/bundler/feature_flag.rb +3 -6
- data/bundler/lib/bundler/fetcher/compact_index.rb +16 -25
- data/bundler/lib/bundler/fetcher/downloader.rb +1 -1
- data/bundler/lib/bundler/fetcher.rb +14 -7
- data/bundler/lib/bundler/force_platform.rb +0 -2
- data/bundler/lib/bundler/friendly_errors.rb +1 -1
- data/bundler/lib/bundler/gem_helper.rb +1 -1
- data/bundler/lib/bundler/gem_helpers.rb +36 -19
- data/bundler/lib/bundler/gem_version_promoter.rb +42 -40
- data/bundler/lib/bundler/injector.rb +14 -16
- data/bundler/lib/bundler/inline.rb +42 -17
- data/bundler/lib/bundler/installer/gem_installer.rb +4 -3
- data/bundler/lib/bundler/installer/parallel_installer.rb +3 -2
- data/bundler/lib/bundler/installer/standalone.rb +2 -5
- data/bundler/lib/bundler/installer.rb +17 -41
- data/bundler/lib/bundler/lazy_specification.rb +117 -46
- data/bundler/lib/bundler/lockfile_generator.rb +1 -1
- data/bundler/lib/bundler/lockfile_parser.rb +18 -7
- data/bundler/lib/bundler/man/bundle-add.1 +44 -27
- data/bundler/lib/bundler/man/bundle-add.1.ronn +52 -23
- data/bundler/lib/bundler/man/bundle-binstubs.1 +9 -6
- data/bundler/lib/bundler/man/bundle-binstubs.1.ronn +6 -3
- data/bundler/lib/bundler/man/bundle-cache.1 +32 -4
- data/bundler/lib/bundler/man/bundle-cache.1.ronn +31 -2
- data/bundler/lib/bundler/man/bundle-check.1 +7 -5
- data/bundler/lib/bundler/man/bundle-check.1.ronn +7 -2
- data/bundler/lib/bundler/man/bundle-clean.1 +3 -3
- data/bundler/lib/bundler/man/bundle-config.1 +11 -15
- data/bundler/lib/bundler/man/bundle-config.1.ronn +12 -15
- data/bundler/lib/bundler/man/bundle-console.1 +4 -6
- data/bundler/lib/bundler/man/bundle-console.1.ronn +2 -7
- data/bundler/lib/bundler/man/bundle-doctor.1 +4 -4
- data/bundler/lib/bundler/man/bundle-doctor.1.ronn +1 -1
- data/bundler/lib/bundler/man/bundle-env.1 +9 -0
- data/bundler/lib/bundler/man/bundle-env.1.ronn +10 -0
- data/bundler/lib/bundler/man/bundle-exec.1 +9 -6
- data/bundler/lib/bundler/man/bundle-exec.1.ronn +6 -3
- data/bundler/lib/bundler/man/bundle-fund.1 +22 -0
- data/bundler/lib/bundler/man/bundle-fund.1.ronn +25 -0
- data/bundler/lib/bundler/man/bundle-gem.1 +25 -7
- data/bundler/lib/bundler/man/bundle-gem.1.ronn +38 -6
- data/bundler/lib/bundler/man/bundle-help.1 +3 -3
- data/bundler/lib/bundler/man/bundle-info.1 +7 -4
- data/bundler/lib/bundler/man/bundle-info.1.ronn +6 -2
- data/bundler/lib/bundler/man/bundle-init.1 +5 -5
- data/bundler/lib/bundler/man/bundle-init.1.ronn +3 -2
- data/bundler/lib/bundler/man/bundle-inject.1 +12 -4
- data/bundler/lib/bundler/man/bundle-inject.1.ronn +9 -1
- data/bundler/lib/bundler/man/bundle-install.1 +19 -16
- data/bundler/lib/bundler/man/bundle-install.1.ronn +24 -20
- data/bundler/lib/bundler/man/bundle-issue.1 +45 -0
- data/bundler/lib/bundler/man/bundle-issue.1.ronn +37 -0
- data/bundler/lib/bundler/man/bundle-licenses.1 +9 -0
- data/bundler/lib/bundler/man/bundle-licenses.1.ronn +10 -0
- data/bundler/lib/bundler/man/bundle-list.1 +3 -3
- data/bundler/lib/bundler/man/bundle-list.1.ronn +4 -1
- data/bundler/lib/bundler/man/bundle-lock.1 +23 -8
- data/bundler/lib/bundler/man/bundle-lock.1.ronn +25 -4
- data/bundler/lib/bundler/man/bundle-open.1 +4 -4
- data/bundler/lib/bundler/man/bundle-open.1.ronn +2 -1
- data/bundler/lib/bundler/man/bundle-outdated.1 +10 -7
- data/bundler/lib/bundler/man/bundle-outdated.1.ronn +8 -4
- data/bundler/lib/bundler/man/bundle-platform.1 +3 -3
- data/bundler/lib/bundler/man/bundle-plugin.1 +9 -6
- data/bundler/lib/bundler/man/bundle-plugin.1.ronn +7 -3
- data/bundler/lib/bundler/man/bundle-pristine.1 +3 -3
- data/bundler/lib/bundler/man/bundle-pristine.1.ronn +1 -1
- data/bundler/lib/bundler/man/bundle-remove.1 +3 -3
- data/bundler/lib/bundler/man/bundle-remove.1.ronn +1 -1
- data/bundler/lib/bundler/man/bundle-show.1 +7 -4
- data/bundler/lib/bundler/man/bundle-show.1.ronn +4 -0
- data/bundler/lib/bundler/man/bundle-update.1 +15 -9
- data/bundler/lib/bundler/man/bundle-update.1.ronn +14 -6
- data/bundler/lib/bundler/man/bundle-version.1 +3 -3
- data/bundler/lib/bundler/man/bundle-viz.1 +6 -6
- data/bundler/lib/bundler/man/bundle-viz.1.ronn +7 -3
- data/bundler/lib/bundler/man/bundle.1 +3 -3
- data/bundler/lib/bundler/man/gemfile.5 +7 -5
- data/bundler/lib/bundler/man/gemfile.5.ronn +8 -2
- data/bundler/lib/bundler/man/index.txt +4 -0
- data/bundler/lib/bundler/match_metadata.rb +13 -0
- data/bundler/lib/bundler/materialization.rb +59 -0
- data/bundler/lib/bundler/mirror.rb +3 -3
- data/bundler/lib/bundler/plugin/api/source.rb +5 -4
- data/bundler/lib/bundler/plugin/events.rb +24 -0
- data/bundler/lib/bundler/plugin/index.rb +5 -1
- data/bundler/lib/bundler/plugin/installer/path.rb +26 -0
- data/bundler/lib/bundler/plugin/installer.rb +37 -17
- data/bundler/lib/bundler/plugin/source_list.rb +4 -4
- data/bundler/lib/bundler/plugin.rb +21 -2
- data/bundler/lib/bundler/process_lock.rb +10 -14
- data/bundler/lib/bundler/remote_specification.rb +6 -1
- data/bundler/lib/bundler/resolver/base.rb +14 -3
- data/bundler/lib/bundler/resolver/candidate.rb +18 -27
- data/bundler/lib/bundler/resolver/package.rb +20 -3
- data/bundler/lib/bundler/resolver/spec_group.rb +22 -27
- data/bundler/lib/bundler/resolver/strategy.rb +40 -0
- data/bundler/lib/bundler/resolver.rb +114 -50
- data/bundler/lib/bundler/retry.rb +1 -1
- data/bundler/lib/bundler/ruby_dsl.rb +12 -3
- data/bundler/lib/bundler/ruby_version.rb +7 -1
- data/bundler/lib/bundler/rubygems_ext.rb +282 -125
- data/bundler/lib/bundler/rubygems_gem_installer.rb +40 -5
- data/bundler/lib/bundler/rubygems_integration.rb +29 -67
- data/bundler/lib/bundler/runtime.rb +48 -35
- data/bundler/lib/bundler/self_manager.rb +27 -7
- data/bundler/lib/bundler/settings.rb +32 -21
- data/bundler/lib/bundler/setup.rb +6 -0
- data/bundler/lib/bundler/shared_helpers.rb +39 -21
- data/bundler/lib/bundler/source/gemspec.rb +1 -4
- data/bundler/lib/bundler/source/git/git_proxy.rb +23 -6
- data/bundler/lib/bundler/source/git.rb +113 -41
- data/bundler/lib/bundler/source/metadata.rb +4 -3
- data/bundler/lib/bundler/source/path.rb +7 -18
- data/bundler/lib/bundler/source/rubygems/remote.rb +12 -4
- data/bundler/lib/bundler/source/rubygems.rb +54 -48
- data/bundler/lib/bundler/source.rb +2 -0
- data/bundler/lib/bundler/source_list.rb +53 -7
- data/bundler/lib/bundler/spec_set.rb +187 -88
- data/bundler/lib/bundler/stub_specification.rb +29 -2
- data/bundler/lib/bundler/templates/newgem/CODE_OF_CONDUCT.md.tt +77 -29
- data/bundler/lib/bundler/templates/newgem/Gemfile.tt +1 -3
- data/bundler/lib/bundler/templates/newgem/README.md.tt +7 -3
- data/bundler/lib/bundler/templates/newgem/github/workflows/main.yml.tt +15 -15
- data/bundler/lib/bundler/templates/newgem/newgem.gemspec.tt +8 -7
- data/bundler/lib/bundler/templates/newgem/rubocop.yml.tt +0 -5
- data/bundler/lib/bundler/ui/shell.rb +24 -2
- data/bundler/lib/bundler/ui/silent.rb +12 -1
- data/bundler/lib/bundler/uri_credentials_filter.rb +3 -3
- data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/timed_stack.rb +53 -3
- data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/version.rb +1 -1
- data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool.rb +11 -0
- data/bundler/lib/bundler/vendor/fileutils/lib/fileutils.rb +15 -13
- data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb +68 -30
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/basic_package_source.rb +4 -24
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/static_package_source.rb +1 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/strategy.rb +42 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_range.rb +20 -8
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_solver.rb +17 -29
- data/bundler/lib/bundler/vendor/securerandom/COPYING +56 -0
- data/bundler/lib/bundler/vendor/securerandom/lib/securerandom.rb +102 -0
- data/bundler/lib/bundler/vendor/thor/lib/thor/actions/file_manipulation.rb +3 -5
- data/bundler/lib/bundler/vendor/thor/lib/thor/group.rb +11 -0
- data/bundler/lib/bundler/vendor/thor/lib/thor/parser/argument.rb +1 -4
- data/bundler/lib/bundler/vendor/thor/lib/thor/parser/option.rb +2 -2
- data/bundler/lib/bundler/vendor/thor/lib/thor/parser/options.rb +2 -1
- data/bundler/lib/bundler/vendor/thor/lib/thor/shell/basic.rb +9 -9
- data/bundler/lib/bundler/vendor/thor/lib/thor/shell/html.rb +1 -1
- data/bundler/lib/bundler/vendor/thor/lib/thor/shell/table_printer.rb +5 -21
- data/bundler/lib/bundler/vendor/thor/lib/thor/util.rb +1 -1
- data/bundler/lib/bundler/vendor/thor/lib/thor/version.rb +1 -1
- data/bundler/lib/bundler/vendor/thor/lib/thor.rb +11 -0
- data/bundler/lib/bundler/vendor/uri/COPYING +56 -0
- data/bundler/lib/bundler/vendor/uri/lib/uri/common.rb +43 -16
- data/bundler/lib/bundler/vendor/uri/lib/uri/file.rb +3 -3
- data/bundler/lib/bundler/vendor/uri/lib/uri/ftp.rb +1 -1
- data/bundler/lib/bundler/vendor/uri/lib/uri/generic.rb +28 -37
- data/bundler/lib/bundler/vendor/uri/lib/uri/http.rb +2 -2
- data/bundler/lib/bundler/vendor/uri/lib/uri/rfc2396_parser.rb +16 -9
- data/bundler/lib/bundler/vendor/uri/lib/uri/rfc3986_parser.rb +26 -3
- data/bundler/lib/bundler/vendor/uri/lib/uri/version.rb +1 -1
- data/bundler/lib/bundler/vendor/uri/lib/uri.rb +9 -9
- data/bundler/lib/bundler/vendored_net_http.rb +20 -5
- data/bundler/lib/bundler/vendored_securerandom.rb +12 -0
- data/bundler/lib/bundler/vendored_timeout.rb +7 -3
- data/bundler/lib/bundler/vendored_uri.rb +18 -1
- data/bundler/lib/bundler/version.rb +1 -1
- data/bundler/lib/bundler/yaml_serializer.rb +12 -7
- data/bundler/lib/bundler.rb +89 -51
- data/{CONTRIBUTING.md → doc/rubygems/CONTRIBUTING.md} +10 -14
- data/{POLICIES.md → doc/rubygems/POLICIES.md} +81 -12
- data/exe/update_rubygems +1 -1
- data/lib/rubygems/basic_specification.rb +43 -10
- data/lib/rubygems/bundler_version_finder.rb +1 -1
- data/lib/rubygems/command.rb +1 -4
- data/lib/rubygems/command_manager.rb +5 -6
- data/lib/rubygems/commands/build_command.rb +2 -11
- data/lib/rubygems/commands/cleanup_command.rb +3 -13
- data/lib/rubygems/commands/contents_command.rb +17 -10
- data/lib/rubygems/commands/environment_command.rb +5 -0
- data/lib/rubygems/commands/exec_command.rb +18 -11
- data/lib/rubygems/commands/fetch_command.rb +14 -0
- data/lib/rubygems/commands/help_command.rb +2 -2
- data/lib/rubygems/commands/install_command.rb +0 -4
- data/lib/rubygems/commands/pristine_command.rb +30 -17
- data/lib/rubygems/commands/push_command.rb +31 -6
- data/lib/rubygems/commands/rdoc_command.rb +3 -10
- data/lib/rubygems/commands/rebuild_command.rb +262 -0
- data/lib/rubygems/commands/setup_command.rb +11 -16
- data/lib/rubygems/commands/sources_command.rb +2 -2
- data/lib/rubygems/commands/uninstall_command.rb +9 -4
- data/lib/rubygems/commands/unpack_command.rb +0 -6
- data/lib/rubygems/commands/update_command.rb +10 -17
- data/lib/rubygems/config_file.rb +45 -16
- data/lib/rubygems/core_ext/kernel_warn.rb +2 -6
- data/lib/rubygems/defaults.rb +6 -6
- data/lib/rubygems/dependency.rb +12 -16
- data/lib/rubygems/dependency_list.rb +1 -1
- data/lib/rubygems/deprecate.rb +79 -77
- data/lib/rubygems/errors.rb +2 -1
- data/lib/rubygems/exceptions.rb +2 -9
- data/lib/rubygems/ext/builder.rb +21 -8
- data/lib/rubygems/ext/cargo_builder.rb +12 -26
- data/lib/rubygems/ext/cmake_builder.rb +7 -2
- data/lib/rubygems/ext/configure_builder.rb +7 -2
- data/lib/rubygems/ext/ext_conf_builder.rb +9 -5
- data/lib/rubygems/ext/rake_builder.rb +7 -4
- data/lib/rubygems/gem_runner.rb +9 -0
- data/lib/rubygems/gemcutter_utilities/webauthn_listener.rb +1 -1
- data/lib/rubygems/gemcutter_utilities/webauthn_poller.rb +3 -1
- data/lib/rubygems/gemcutter_utilities.rb +52 -26
- data/lib/rubygems/gemspec_helpers.rb +19 -0
- data/lib/rubygems/install_update_options.rb +5 -0
- data/lib/rubygems/installer.rb +31 -40
- data/lib/rubygems/local_remote_options.rb +8 -8
- data/lib/rubygems/package/tar_header.rb +31 -4
- data/lib/rubygems/package/tar_reader/entry.rb +1 -5
- data/lib/rubygems/package/tar_writer.rb +5 -4
- data/lib/rubygems/package.rb +13 -8
- data/lib/rubygems/platform.rb +7 -5
- data/lib/rubygems/psych_tree.rb +4 -0
- data/lib/rubygems/query_utils.rb +2 -2
- data/lib/rubygems/rdoc.rb +16 -3
- data/lib/rubygems/remote_fetcher.rb +3 -4
- data/lib/rubygems/request.rb +5 -5
- data/lib/rubygems/request_set/gem_dependency_api.rb +1 -1
- data/lib/rubygems/request_set.rb +1 -1
- data/lib/rubygems/requirement.rb +16 -12
- data/lib/rubygems/resolver/activation_request.rb +1 -1
- data/lib/rubygems/resolver/api_set/gem_parser.rb +2 -5
- data/lib/rubygems/resolver/api_set.rb +13 -8
- data/lib/rubygems/resolver/best_set.rb +0 -28
- data/lib/rubygems/resolver/composed_set.rb +3 -3
- data/lib/rubygems/resolver/git_set.rb +0 -1
- data/lib/rubygems/resolver/index_set.rb +2 -2
- data/lib/rubygems/resolver/spec_specification.rb +7 -0
- data/lib/rubygems/resolver.rb +7 -7
- data/lib/rubygems/s3_uri_signer.rb +3 -3
- data/lib/rubygems/safe_marshal/reader.rb +31 -14
- data/lib/rubygems/safe_marshal/visitors/to_ruby.rb +29 -16
- data/lib/rubygems/safe_yaml.rb +10 -1
- data/lib/rubygems/security.rb +1 -1
- data/lib/rubygems/source/git.rb +22 -17
- data/lib/rubygems/source/installed.rb +3 -1
- data/lib/rubygems/source/local.rb +8 -4
- data/lib/rubygems/source/specific_file.rb +5 -3
- data/lib/rubygems/source.rb +10 -8
- data/lib/rubygems/source_list.rb +1 -1
- data/lib/rubygems/spec_fetcher.rb +47 -15
- data/lib/rubygems/specification.rb +107 -180
- data/lib/rubygems/specification_policy.rb +33 -13
- data/lib/rubygems/specification_record.rb +212 -0
- data/lib/rubygems/stub_specification.rb +32 -10
- data/lib/rubygems/target_rbconfig.rb +50 -0
- data/lib/rubygems/uninstaller.rb +42 -22
- data/lib/rubygems/uri.rb +6 -6
- data/lib/rubygems/util/licenses.rb +97 -1
- data/lib/rubygems/util.rb +1 -1
- data/lib/rubygems/vendor/molinillo/lib/molinillo/delegates/resolution_state.rb +57 -0
- data/lib/rubygems/{resolver → vendor}/molinillo/lib/molinillo/delegates/specification_provider.rb +11 -11
- data/lib/rubygems/{resolver → vendor}/molinillo/lib/molinillo/dependency_graph/action.rb +1 -1
- data/lib/rubygems/{resolver → vendor}/molinillo/lib/molinillo/dependency_graph/add_edge_no_circular.rb +1 -1
- data/lib/rubygems/{resolver → vendor}/molinillo/lib/molinillo/dependency_graph/add_vertex.rb +1 -1
- data/lib/rubygems/{resolver → vendor}/molinillo/lib/molinillo/dependency_graph/delete_edge.rb +1 -1
- data/lib/rubygems/{resolver → vendor}/molinillo/lib/molinillo/dependency_graph/detach_vertex_named.rb +1 -1
- data/lib/rubygems/{resolver → vendor}/molinillo/lib/molinillo/dependency_graph/log.rb +1 -1
- data/lib/rubygems/{resolver → vendor}/molinillo/lib/molinillo/dependency_graph/set_payload.rb +1 -1
- data/lib/rubygems/{resolver → vendor}/molinillo/lib/molinillo/dependency_graph/tag.rb +1 -1
- data/lib/rubygems/{resolver → vendor}/molinillo/lib/molinillo/dependency_graph/vertex.rb +1 -1
- data/lib/rubygems/{resolver → vendor}/molinillo/lib/molinillo/dependency_graph.rb +2 -2
- data/lib/rubygems/{resolver → vendor}/molinillo/lib/molinillo/errors.rb +1 -1
- data/lib/rubygems/vendor/molinillo/lib/molinillo/gem_metadata.rb +6 -0
- data/lib/rubygems/{resolver → vendor}/molinillo/lib/molinillo/modules/specification_provider.rb +2 -2
- data/lib/rubygems/{resolver → vendor}/molinillo/lib/molinillo/modules/ui.rb +1 -1
- data/lib/rubygems/{resolver → vendor}/molinillo/lib/molinillo/resolution.rb +4 -4
- data/lib/rubygems/{resolver → vendor}/molinillo/lib/molinillo/resolver.rb +1 -1
- data/lib/rubygems/{resolver → vendor}/molinillo/lib/molinillo/state.rb +1 -1
- data/lib/rubygems/{resolver → vendor}/molinillo/lib/molinillo.rb +2 -2
- data/lib/rubygems/vendor/net-http/COPYING +56 -0
- data/lib/rubygems/{net-http → vendor/net-http}/lib/net/http/generic_request.rb +9 -9
- data/lib/rubygems/{net-http → vendor/net-http}/lib/net/http/header.rb +3 -3
- data/lib/rubygems/{net-http → vendor/net-http}/lib/net/http/request.rb +3 -3
- data/lib/rubygems/{net-http → vendor/net-http}/lib/net/http/requests.rb +35 -30
- data/lib/rubygems/{net-http → vendor/net-http}/lib/net/http/response.rb +2 -2
- data/lib/rubygems/{net-http → vendor/net-http}/lib/net/http/responses.rb +6 -6
- data/lib/rubygems/{net-http → vendor/net-http}/lib/net/http/status.rb +1 -1
- data/lib/rubygems/{net-http → vendor/net-http}/lib/net/http.rb +135 -51
- data/lib/rubygems/{net-http → vendor/net-http}/lib/net/https.rb +1 -1
- data/lib/rubygems/vendor/optparse/COPYING +56 -0
- data/lib/rubygems/{optparse → vendor/optparse}/lib/optparse/ac.rb +16 -0
- data/lib/rubygems/{optparse → vendor/optparse}/lib/optparse/kwargs.rb +8 -3
- data/lib/rubygems/vendor/optparse/lib/optparse/uri.rb +7 -0
- data/lib/rubygems/{optparse → vendor/optparse}/lib/optparse/version.rb +9 -0
- data/lib/rubygems/{optparse → vendor/optparse}/lib/optparse.rb +158 -62
- data/lib/rubygems/vendor/resolv/COPYING +56 -0
- data/lib/rubygems/{resolv → vendor/resolv}/lib/resolv.rb +117 -49
- data/lib/rubygems/vendor/securerandom/COPYING +56 -0
- data/lib/rubygems/vendor/securerandom/lib/securerandom.rb +102 -0
- data/lib/rubygems/vendor/timeout/.document +1 -0
- data/lib/rubygems/vendor/timeout/COPYING +56 -0
- data/lib/rubygems/{timeout → vendor/timeout}/lib/timeout.rb +10 -11
- data/lib/rubygems/vendor/tsort/.document +1 -0
- data/lib/rubygems/{tsort → vendor/tsort}/lib/tsort.rb +2 -2
- data/lib/rubygems/vendor/uri/.document +1 -0
- data/lib/rubygems/vendor/uri/COPYING +56 -0
- data/lib/rubygems/vendor/uri/lib/uri/common.rb +880 -0
- data/lib/rubygems/vendor/uri/lib/uri/file.rb +100 -0
- data/lib/rubygems/vendor/uri/lib/uri/ftp.rb +267 -0
- data/lib/rubygems/vendor/uri/lib/uri/generic.rb +1579 -0
- data/lib/rubygems/vendor/uri/lib/uri/http.rb +125 -0
- data/lib/rubygems/vendor/uri/lib/uri/https.rb +23 -0
- data/lib/rubygems/vendor/uri/lib/uri/ldap.rb +261 -0
- data/lib/rubygems/vendor/uri/lib/uri/ldaps.rb +22 -0
- data/lib/rubygems/vendor/uri/lib/uri/mailto.rb +293 -0
- data/lib/rubygems/vendor/uri/lib/uri/rfc2396_parser.rb +546 -0
- data/lib/rubygems/vendor/uri/lib/uri/rfc3986_parser.rb +206 -0
- data/lib/rubygems/vendor/uri/lib/uri/version.rb +6 -0
- data/lib/rubygems/vendor/uri/lib/uri/ws.rb +83 -0
- data/lib/rubygems/vendor/uri/lib/uri/wss.rb +23 -0
- data/lib/rubygems/vendor/uri/lib/uri.rb +104 -0
- data/lib/rubygems/vendored_molinillo.rb +3 -0
- data/lib/rubygems/vendored_net_http.rb +5 -0
- data/lib/rubygems/vendored_optparse.rb +3 -0
- data/lib/rubygems/vendored_securerandom.rb +3 -0
- data/lib/rubygems/vendored_timeout.rb +5 -0
- data/lib/rubygems/vendored_tsort.rb +3 -0
- data/lib/rubygems/version.rb +26 -9
- data/lib/rubygems/yaml_serializer.rb +12 -7
- data/lib/rubygems.rb +82 -47
- data/rubygems-update.gemspec +11 -6
- data/setup.rb +1 -1
- metadata +131 -86
- data/bundler/lib/bundler/compact_index_client/gem_parser.rb +0 -32
- data/lib/rubygems/net/http.rb +0 -3
- data/lib/rubygems/net-http/LICENSE.txt +0 -22
- data/lib/rubygems/net-http/lib/net/http/backward.rb +0 -40
- data/lib/rubygems/net-protocol/LICENSE.txt +0 -22
- data/lib/rubygems/optparse/lib/optparse/uri.rb +0 -7
- data/lib/rubygems/optparse.rb +0 -3
- data/lib/rubygems/resolv/LICENSE.txt +0 -22
- data/lib/rubygems/resolver/molinillo/lib/molinillo/delegates/resolution_state.rb +0 -57
- data/lib/rubygems/resolver/molinillo/lib/molinillo/gem_metadata.rb +0 -6
- data/lib/rubygems/resolver/molinillo.rb +0 -3
- data/lib/rubygems/shellwords.rb +0 -3
- data/lib/rubygems/timeout/LICENSE.txt +0 -22
- data/lib/rubygems/timeout.rb +0 -3
- data/lib/rubygems/tsort/LICENSE.txt +0 -22
- data/lib/rubygems/tsort.rb +0 -3
- /data/{lib/rubygems/optparse → bundler/lib/bundler/vendor/fileutils}/COPYING +0 -0
- /data/{lib/rubygems/net-http → bundler/lib/bundler/vendor/securerandom}/.document +0 -0
- /data/{MAINTAINERS.txt → doc/MAINTAINERS.txt} +0 -0
- /data/{bundler → doc/bundler}/UPGRADING.md +0 -0
- /data/{UPGRADING.md → doc/rubygems/UPGRADING.md} +0 -0
- /data/lib/rubygems/{net-protocol → vendor/molinillo}/.document +0 -0
- /data/lib/rubygems/{resolver → vendor}/molinillo/LICENSE +0 -0
- /data/lib/rubygems/{optparse → vendor/net-http}/.document +0 -0
- /data/lib/rubygems/{net-http → vendor/net-http}/lib/net/http/exceptions.rb +0 -0
- /data/lib/rubygems/{net-http → vendor/net-http}/lib/net/http/proxy_delta.rb +0 -0
- /data/lib/rubygems/{resolv → vendor/net-protocol}/.document +0 -0
- /data/{bundler/lib/bundler/vendor/fileutils → lib/rubygems/vendor/net-protocol}/LICENSE.txt +0 -0
- /data/lib/rubygems/{net-protocol → vendor/net-protocol}/lib/net/protocol.rb +0 -0
- /data/lib/rubygems/{resolver/molinillo → vendor/optparse}/.document +0 -0
- /data/lib/rubygems/{optparse → vendor/optparse}/lib/optionparser.rb +0 -0
- /data/lib/rubygems/{optparse → vendor/optparse}/lib/optparse/date.rb +0 -0
- /data/lib/rubygems/{optparse → vendor/optparse}/lib/optparse/shellwords.rb +0 -0
- /data/lib/rubygems/{optparse → vendor/optparse}/lib/optparse/time.rb +0 -0
- /data/lib/rubygems/{timeout → vendor/resolv}/.document +0 -0
- /data/lib/rubygems/{tsort → vendor/securerandom}/.document +0 -0
- /data/{bundler/lib/bundler/vendor/uri → lib/rubygems/vendor/tsort}/LICENSE.txt +0 -0
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
# See LICENSE.txt for permissions.
|
|
7
7
|
#++
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
require_relative "vendor/uri/lib/uri"
|
|
10
10
|
require_relative "../rubygems"
|
|
11
11
|
|
|
12
12
|
##
|
|
@@ -17,10 +17,10 @@ module Gem::LocalRemoteOptions
|
|
|
17
17
|
# Allows Gem::OptionParser to handle HTTP URIs.
|
|
18
18
|
|
|
19
19
|
def accept_uri_http
|
|
20
|
-
Gem::OptionParser.accept URI::HTTP do |value|
|
|
20
|
+
Gem::OptionParser.accept Gem::URI::HTTP do |value|
|
|
21
21
|
begin
|
|
22
|
-
uri = URI.parse value
|
|
23
|
-
rescue URI::InvalidURIError
|
|
22
|
+
uri = Gem::URI.parse value
|
|
23
|
+
rescue Gem::URI::InvalidURIError
|
|
24
24
|
raise Gem::OptionParser::InvalidArgument, value
|
|
25
25
|
end
|
|
26
26
|
|
|
@@ -88,7 +88,7 @@ module Gem::LocalRemoteOptions
|
|
|
88
88
|
def add_proxy_option
|
|
89
89
|
accept_uri_http
|
|
90
90
|
|
|
91
|
-
add_option(:"Local/Remote", "-p", "--[no-]http-proxy [URL]", URI::HTTP,
|
|
91
|
+
add_option(:"Local/Remote", "-p", "--[no-]http-proxy [URL]", Gem::URI::HTTP,
|
|
92
92
|
"Use HTTP proxy for remote operations") do |value, options|
|
|
93
93
|
options[:http_proxy] = value == false ? :no_proxy : value
|
|
94
94
|
Gem.configuration[:http_proxy] = options[:http_proxy]
|
|
@@ -101,7 +101,7 @@ module Gem::LocalRemoteOptions
|
|
|
101
101
|
def add_source_option
|
|
102
102
|
accept_uri_http
|
|
103
103
|
|
|
104
|
-
add_option(:"Local/Remote", "-s", "--source URL", URI::HTTP,
|
|
104
|
+
add_option(:"Local/Remote", "-s", "--source URL", Gem::URI::HTTP,
|
|
105
105
|
"Append URL to list of remote gem sources") do |source, options|
|
|
106
106
|
source << "/" unless source.end_with?("/")
|
|
107
107
|
|
|
@@ -134,13 +134,13 @@ module Gem::LocalRemoteOptions
|
|
|
134
134
|
# Is local fetching enabled?
|
|
135
135
|
|
|
136
136
|
def local?
|
|
137
|
-
|
|
137
|
+
[:local, :both].include?(options[:domain])
|
|
138
138
|
end
|
|
139
139
|
|
|
140
140
|
##
|
|
141
141
|
# Is remote fetching enabled?
|
|
142
142
|
|
|
143
143
|
def remote?
|
|
144
|
-
|
|
144
|
+
[:remote, :both].include?(options[:domain])
|
|
145
145
|
end
|
|
146
146
|
end
|
|
@@ -95,14 +95,14 @@ class Gem::Package::TarHeader
|
|
|
95
95
|
|
|
96
96
|
attr_reader(*FIELDS)
|
|
97
97
|
|
|
98
|
-
EMPTY_HEADER = ("\0" * 512).freeze # :nodoc:
|
|
98
|
+
EMPTY_HEADER = ("\0" * 512).b.freeze # :nodoc:
|
|
99
99
|
|
|
100
100
|
##
|
|
101
101
|
# Creates a tar header from IO +stream+
|
|
102
102
|
|
|
103
103
|
def self.from(stream)
|
|
104
104
|
header = stream.read 512
|
|
105
|
-
|
|
105
|
+
return EMPTY if header == EMPTY_HEADER
|
|
106
106
|
|
|
107
107
|
fields = header.unpack UNPACK_FORMAT
|
|
108
108
|
|
|
@@ -123,7 +123,7 @@ class Gem::Package::TarHeader
|
|
|
123
123
|
devminor: strict_oct(fields.shift),
|
|
124
124
|
prefix: fields.shift,
|
|
125
125
|
|
|
126
|
-
empty:
|
|
126
|
+
empty: false
|
|
127
127
|
end
|
|
128
128
|
|
|
129
129
|
def self.strict_oct(str)
|
|
@@ -172,6 +172,22 @@ class Gem::Package::TarHeader
|
|
|
172
172
|
@empty = vals[:empty]
|
|
173
173
|
end
|
|
174
174
|
|
|
175
|
+
EMPTY = new({ # :nodoc:
|
|
176
|
+
checksum: 0,
|
|
177
|
+
gname: "",
|
|
178
|
+
linkname: "",
|
|
179
|
+
magic: "",
|
|
180
|
+
mode: 0,
|
|
181
|
+
name: "",
|
|
182
|
+
prefix: "",
|
|
183
|
+
size: 0,
|
|
184
|
+
uname: "",
|
|
185
|
+
version: 0,
|
|
186
|
+
|
|
187
|
+
empty: true,
|
|
188
|
+
}).freeze
|
|
189
|
+
private_constant :EMPTY
|
|
190
|
+
|
|
175
191
|
##
|
|
176
192
|
# Is the tar entry empty?
|
|
177
193
|
|
|
@@ -212,6 +228,17 @@ class Gem::Package::TarHeader
|
|
|
212
228
|
@checksum = oct calculate_checksum(header), 6
|
|
213
229
|
end
|
|
214
230
|
|
|
231
|
+
##
|
|
232
|
+
# Header's full name, including prefix
|
|
233
|
+
|
|
234
|
+
def full_name
|
|
235
|
+
if prefix != ""
|
|
236
|
+
File.join prefix, name
|
|
237
|
+
else
|
|
238
|
+
name
|
|
239
|
+
end
|
|
240
|
+
end
|
|
241
|
+
|
|
215
242
|
private
|
|
216
243
|
|
|
217
244
|
def calculate_checksum(header)
|
|
@@ -241,7 +268,7 @@ class Gem::Package::TarHeader
|
|
|
241
268
|
|
|
242
269
|
header = header.pack PACK_FORMAT
|
|
243
270
|
|
|
244
|
-
header
|
|
271
|
+
header.ljust 512, "\0"
|
|
245
272
|
end
|
|
246
273
|
|
|
247
274
|
def oct(num, len)
|
|
@@ -87,11 +87,7 @@ class Gem::Package::TarReader::Entry
|
|
|
87
87
|
# Full name of the tar entry
|
|
88
88
|
|
|
89
89
|
def full_name
|
|
90
|
-
|
|
91
|
-
File.join @header.prefix, @header.name
|
|
92
|
-
else
|
|
93
|
-
@header.name
|
|
94
|
-
end
|
|
90
|
+
@header.full_name.force_encoding(Encoding::UTF_8)
|
|
95
91
|
rescue ArgumentError => e
|
|
96
92
|
raise unless e.message == "string contains null byte"
|
|
97
93
|
raise Gem::Package::TarInvalidError,
|
|
@@ -95,10 +95,11 @@ class Gem::Package::TarWriter
|
|
|
95
95
|
end
|
|
96
96
|
|
|
97
97
|
##
|
|
98
|
-
# Adds file +name+ with permissions +mode
|
|
99
|
-
#
|
|
98
|
+
# Adds file +name+ with permissions +mode+ and mtime +mtime+ (sets
|
|
99
|
+
# Gem.source_date_epoch if not specified), and yields an IO for
|
|
100
|
+
# writing the file to
|
|
100
101
|
|
|
101
|
-
def add_file(name, mode) # :yields: io
|
|
102
|
+
def add_file(name, mode, mtime=nil) # :yields: io
|
|
102
103
|
check_closed
|
|
103
104
|
|
|
104
105
|
name, prefix = split_name name
|
|
@@ -118,7 +119,7 @@ class Gem::Package::TarWriter
|
|
|
118
119
|
|
|
119
120
|
header = Gem::Package::TarHeader.new name: name, mode: mode,
|
|
120
121
|
size: size, prefix: prefix,
|
|
121
|
-
mtime: Gem.source_date_epoch
|
|
122
|
+
mtime: mtime || Gem.source_date_epoch
|
|
122
123
|
|
|
123
124
|
@io.write header
|
|
124
125
|
@io.pos = final_pos
|
data/lib/rubygems/package.rb
CHANGED
|
@@ -7,7 +7,6 @@
|
|
|
7
7
|
|
|
8
8
|
# rubocop:enable Style/AsciiComments
|
|
9
9
|
|
|
10
|
-
require_relative "../rubygems"
|
|
11
10
|
require_relative "security"
|
|
12
11
|
require_relative "user_interaction"
|
|
13
12
|
|
|
@@ -59,7 +58,7 @@ class Gem::Package
|
|
|
59
58
|
|
|
60
59
|
def initialize(message, source = nil)
|
|
61
60
|
if source
|
|
62
|
-
@path = source.path
|
|
61
|
+
@path = source.is_a?(String) ? source : source.path
|
|
63
62
|
|
|
64
63
|
message += " in #{path}" if path
|
|
65
64
|
end
|
|
@@ -295,7 +294,6 @@ class Gem::Package
|
|
|
295
294
|
|
|
296
295
|
Gem.load_yaml
|
|
297
296
|
|
|
298
|
-
@spec.mark_version
|
|
299
297
|
@spec.validate true, strict_validation unless skip_validation
|
|
300
298
|
|
|
301
299
|
setup_signer(
|
|
@@ -454,7 +452,7 @@ EOM
|
|
|
454
452
|
|
|
455
453
|
if entry.file?
|
|
456
454
|
File.open(destination, "wb") {|out| copy_stream(entry, out) }
|
|
457
|
-
FileUtils.chmod file_mode(entry.header.mode), destination
|
|
455
|
+
FileUtils.chmod file_mode(entry.header.mode) & ~File.umask, destination
|
|
458
456
|
end
|
|
459
457
|
|
|
460
458
|
verbose destination
|
|
@@ -528,12 +526,13 @@ EOM
|
|
|
528
526
|
# Loads a Gem::Specification from the TarEntry +entry+
|
|
529
527
|
|
|
530
528
|
def load_spec(entry) # :nodoc:
|
|
529
|
+
limit = 10 * 1024 * 1024
|
|
531
530
|
case entry.full_name
|
|
532
531
|
when "metadata" then
|
|
533
|
-
@spec = Gem::Specification.from_yaml entry
|
|
532
|
+
@spec = Gem::Specification.from_yaml limit_read(entry, "metadata", limit)
|
|
534
533
|
when "metadata.gz" then
|
|
535
534
|
Zlib::GzipReader.wrap(entry, external_encoding: Encoding::UTF_8) do |gzio|
|
|
536
|
-
@spec = Gem::Specification.from_yaml gzio.
|
|
535
|
+
@spec = Gem::Specification.from_yaml limit_read(gzio, "metadata.gz", limit)
|
|
537
536
|
end
|
|
538
537
|
end
|
|
539
538
|
end
|
|
@@ -557,7 +556,7 @@ EOM
|
|
|
557
556
|
|
|
558
557
|
@checksums = gem.seek "checksums.yaml.gz" do |entry|
|
|
559
558
|
Zlib::GzipReader.wrap entry do |gz_io|
|
|
560
|
-
Gem::SafeYAML.safe_load gz_io.
|
|
559
|
+
Gem::SafeYAML.safe_load limit_read(gz_io, "checksums.yaml.gz", 10 * 1024 * 1024)
|
|
561
560
|
end
|
|
562
561
|
end
|
|
563
562
|
end
|
|
@@ -664,7 +663,7 @@ EOM
|
|
|
664
663
|
|
|
665
664
|
case file_name
|
|
666
665
|
when /\.sig$/ then
|
|
667
|
-
@signatures[$`] = entry
|
|
666
|
+
@signatures[$`] = limit_read(entry, file_name, 1024 * 1024) if @security_policy
|
|
668
667
|
return
|
|
669
668
|
else
|
|
670
669
|
digest entry
|
|
@@ -724,6 +723,12 @@ EOM
|
|
|
724
723
|
IO.copy_stream(src, dst)
|
|
725
724
|
end
|
|
726
725
|
end
|
|
726
|
+
|
|
727
|
+
def limit_read(io, name, limit)
|
|
728
|
+
bytes = io.read(limit + 1)
|
|
729
|
+
raise Gem::Package::FormatError, "#{name} is too big (over #{limit} bytes)" if bytes.size > limit
|
|
730
|
+
bytes
|
|
731
|
+
end
|
|
727
732
|
end
|
|
728
733
|
|
|
729
734
|
require_relative "package/digest_io"
|
data/lib/rubygems/platform.rb
CHANGED
|
@@ -12,9 +12,10 @@ class Gem::Platform
|
|
|
12
12
|
|
|
13
13
|
attr_accessor :cpu, :os, :version
|
|
14
14
|
|
|
15
|
-
def self.local
|
|
16
|
-
@local
|
|
17
|
-
|
|
15
|
+
def self.local(refresh: false)
|
|
16
|
+
return @local if @local && !refresh
|
|
17
|
+
@local = begin
|
|
18
|
+
arch = Gem.target_rbconfig["arch"]
|
|
18
19
|
arch = "#{arch}_60" if /mswin(?:32|64)$/.match?(arch)
|
|
19
20
|
new(arch)
|
|
20
21
|
end
|
|
@@ -134,6 +135,7 @@ class Gem::Platform
|
|
|
134
135
|
when /netbsdelf/ then ["netbsdelf", nil]
|
|
135
136
|
when /openbsd(\d+\.\d+)?/ then ["openbsd", $1]
|
|
136
137
|
when /solaris(\d+\.\d+)?/ then ["solaris", $1]
|
|
138
|
+
when /wasi/ then ["wasi", nil]
|
|
137
139
|
# test
|
|
138
140
|
when /^(\w+_platform)(\d+)?/ then [$1, $2]
|
|
139
141
|
else ["unknown", nil]
|
|
@@ -175,7 +177,7 @@ class Gem::Platform
|
|
|
175
177
|
# they have the same version, or either one has no version
|
|
176
178
|
#
|
|
177
179
|
# Additionally, the platform will match if the local CPU is 'arm' and the
|
|
178
|
-
# other CPU starts with "
|
|
180
|
+
# other CPU starts with "armv" (for generic 32-bit ARM family support).
|
|
179
181
|
#
|
|
180
182
|
# Of note, this method is not commutative. Indeed the OS 'linux' has a
|
|
181
183
|
# special case: the version is the libc name, yet while "no version" stands
|
|
@@ -196,7 +198,7 @@ class Gem::Platform
|
|
|
196
198
|
|
|
197
199
|
# cpu
|
|
198
200
|
([nil,"universal"].include?(@cpu) || [nil, "universal"].include?(other.cpu) || @cpu == other.cpu ||
|
|
199
|
-
(@cpu == "arm" && other.cpu.start_with?("
|
|
201
|
+
(@cpu == "arm" && other.cpu.start_with?("armv"))) &&
|
|
200
202
|
|
|
201
203
|
# os
|
|
202
204
|
@os == other.os &&
|
data/lib/rubygems/psych_tree.rb
CHANGED
data/lib/rubygems/query_utils.rb
CHANGED
|
@@ -132,7 +132,7 @@ module Gem::QueryUtils
|
|
|
132
132
|
version_matches = show_prereleases? || !s.version.prerelease?
|
|
133
133
|
|
|
134
134
|
name_matches && version_matches
|
|
135
|
-
end
|
|
135
|
+
end.uniq(&:full_name)
|
|
136
136
|
|
|
137
137
|
spec_tuples = specs.map do |spec|
|
|
138
138
|
[spec.name_tuple, spec]
|
|
@@ -311,7 +311,7 @@ module Gem::QueryUtils
|
|
|
311
311
|
label = "Installed at"
|
|
312
312
|
specs.each do |s|
|
|
313
313
|
version = s.version.to_s
|
|
314
|
-
default = ", default"
|
|
314
|
+
default = s.default_gem? ? ", default" : ""
|
|
315
315
|
entry << "\n" << " #{label} (#{version}#{default}): #{s.base_dir}"
|
|
316
316
|
label = " " * label.length
|
|
317
317
|
end
|
data/lib/rubygems/rdoc.rb
CHANGED
|
@@ -5,9 +5,22 @@ require_relative "../rubygems"
|
|
|
5
5
|
begin
|
|
6
6
|
require "rdoc/rubygems_hook"
|
|
7
7
|
module Gem
|
|
8
|
-
|
|
9
|
-
|
|
8
|
+
##
|
|
9
|
+
# Returns whether RDoc defines its own install hooks through a RubyGems
|
|
10
|
+
# plugin. This and whatever is guarded by it can be removed once no
|
|
11
|
+
# supported Ruby ships with RDoc older than 6.9.0.
|
|
12
|
+
|
|
13
|
+
def self.rdoc_hooks_defined_via_plugin?
|
|
14
|
+
Gem::Version.new(::RDoc::VERSION) >= Gem::Version.new("6.9.0")
|
|
15
|
+
end
|
|
10
16
|
|
|
11
|
-
|
|
17
|
+
if rdoc_hooks_defined_via_plugin?
|
|
18
|
+
RDoc = ::RDoc::RubyGemsHook
|
|
19
|
+
else
|
|
20
|
+
RDoc = ::RDoc::RubygemsHook
|
|
21
|
+
|
|
22
|
+
Gem.done_installing(&Gem::RDoc.method(:generation_hook))
|
|
23
|
+
end
|
|
24
|
+
end
|
|
12
25
|
rescue LoadError
|
|
13
26
|
end
|
|
@@ -74,9 +74,8 @@ class Gem::RemoteFetcher
|
|
|
74
74
|
|
|
75
75
|
def initialize(proxy=nil, dns=nil, headers={})
|
|
76
76
|
require_relative "core_ext/tcpsocket_init" if Gem.configuration.ipv4_fallback_enabled
|
|
77
|
-
require_relative "
|
|
78
|
-
|
|
79
|
-
require "uri"
|
|
77
|
+
require_relative "vendored_net_http"
|
|
78
|
+
require_relative "vendor/uri/lib/uri"
|
|
80
79
|
|
|
81
80
|
Socket.do_not_reverse_lookup = true
|
|
82
81
|
|
|
@@ -135,7 +134,7 @@ class Gem::RemoteFetcher
|
|
|
135
134
|
|
|
136
135
|
scheme = source_uri.scheme
|
|
137
136
|
|
|
138
|
-
# URI.parse gets confused by MS Windows paths with forward slashes.
|
|
137
|
+
# Gem::URI.parse gets confused by MS Windows paths with forward slashes.
|
|
139
138
|
scheme = nil if /^[a-z]$/i.match?(scheme)
|
|
140
139
|
|
|
141
140
|
# REFACTOR: split this up and dispatch on scheme (eg download_http)
|
data/lib/rubygems/request.rb
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
require_relative "
|
|
3
|
+
require_relative "vendored_net_http"
|
|
4
4
|
require_relative "user_interaction"
|
|
5
5
|
|
|
6
6
|
class Gem::Request
|
|
@@ -18,11 +18,11 @@ class Gem::Request
|
|
|
18
18
|
end
|
|
19
19
|
|
|
20
20
|
def self.proxy_uri(proxy) # :nodoc:
|
|
21
|
-
|
|
21
|
+
require_relative "vendor/uri/lib/uri"
|
|
22
22
|
case proxy
|
|
23
23
|
when :no_proxy then nil
|
|
24
|
-
when URI::HTTP then proxy
|
|
25
|
-
else URI.parse(proxy)
|
|
24
|
+
when Gem::URI::HTTP then proxy
|
|
25
|
+
else Gem::URI.parse(proxy)
|
|
26
26
|
end
|
|
27
27
|
end
|
|
28
28
|
|
|
@@ -176,7 +176,7 @@ class Gem::Request
|
|
|
176
176
|
end
|
|
177
177
|
|
|
178
178
|
require "uri"
|
|
179
|
-
uri = URI(Gem::UriFormatter.new(env_proxy).normalize)
|
|
179
|
+
uri = Gem::URI(Gem::UriFormatter.new(env_proxy).normalize)
|
|
180
180
|
|
|
181
181
|
if uri && uri.user.nil? && uri.password.nil?
|
|
182
182
|
user = ENV["#{downcase_scheme}_proxy_user"] || ENV["#{upcase_scheme}_PROXY_USER"]
|
|
@@ -330,7 +330,7 @@ class Gem::RequestSet::GemDependencyAPI
|
|
|
330
330
|
# git: ::
|
|
331
331
|
# Install this dependency from a git repository:
|
|
332
332
|
#
|
|
333
|
-
# gem 'private_gem', git: git@my.company.example:private_gem.git'
|
|
333
|
+
# gem 'private_gem', git: 'git@my.company.example:private_gem.git'
|
|
334
334
|
#
|
|
335
335
|
# gist: ::
|
|
336
336
|
# Install this dependency from the gist ID:
|
data/lib/rubygems/request_set.rb
CHANGED
data/lib/rubygems/requirement.rb
CHANGED
|
@@ -13,8 +13,8 @@ class Gem::Requirement
|
|
|
13
13
|
OPS = { # :nodoc:
|
|
14
14
|
"=" => lambda {|v, r| v == r },
|
|
15
15
|
"!=" => lambda {|v, r| v != r },
|
|
16
|
-
">" => lambda {|v, r| v >
|
|
17
|
-
"<" => lambda {|v, r| v <
|
|
16
|
+
">" => lambda {|v, r| v > r },
|
|
17
|
+
"<" => lambda {|v, r| v < r },
|
|
18
18
|
">=" => lambda {|v, r| v >= r },
|
|
19
19
|
"<=" => lambda {|v, r| v <= r },
|
|
20
20
|
"~>" => lambda {|v, r| v >= r && v.release < r.bump },
|
|
@@ -22,7 +22,7 @@ class Gem::Requirement
|
|
|
22
22
|
|
|
23
23
|
SOURCE_SET_REQUIREMENT = Struct.new(:for_lockfile).new "!" # :nodoc:
|
|
24
24
|
|
|
25
|
-
quoted = OPS.keys
|
|
25
|
+
quoted = Regexp.union(OPS.keys)
|
|
26
26
|
PATTERN_RAW = "\\s*(#{quoted})?\\s*(#{Gem::Version::VERSION_PATTERN})\\s*".freeze # :nodoc:
|
|
27
27
|
|
|
28
28
|
##
|
|
@@ -106,13 +106,15 @@ class Gem::Requirement
|
|
|
106
106
|
unless PATTERN =~ obj.to_s
|
|
107
107
|
raise BadRequirementError, "Illformed requirement [#{obj.inspect}]"
|
|
108
108
|
end
|
|
109
|
+
op = -($1 || "=")
|
|
110
|
+
version = -$2
|
|
109
111
|
|
|
110
|
-
if
|
|
112
|
+
if op == ">=" && version == "0"
|
|
111
113
|
DefaultRequirement
|
|
112
|
-
elsif
|
|
114
|
+
elsif op == ">=" && version == "0.a"
|
|
113
115
|
DefaultPrereleaseRequirement
|
|
114
116
|
else
|
|
115
|
-
[
|
|
117
|
+
[op, Gem::Version.new(version)]
|
|
116
118
|
end
|
|
117
119
|
end
|
|
118
120
|
|
|
@@ -201,7 +203,8 @@ class Gem::Requirement
|
|
|
201
203
|
def marshal_load(array) # :nodoc:
|
|
202
204
|
@requirements = array[0]
|
|
203
205
|
|
|
204
|
-
raise TypeError, "wrong @requirements" unless Array === @requirements
|
|
206
|
+
raise TypeError, "wrong @requirements" unless Array === @requirements &&
|
|
207
|
+
@requirements.all? {|r| r.size == 2 && (r.first.is_a?(String) || r[0] = "=") && r.last.is_a?(Gem::Version) }
|
|
205
208
|
end
|
|
206
209
|
|
|
207
210
|
def yaml_initialize(tag, vals) # :nodoc:
|
|
@@ -214,10 +217,6 @@ class Gem::Requirement
|
|
|
214
217
|
yaml_initialize coder.tag, coder.map
|
|
215
218
|
end
|
|
216
219
|
|
|
217
|
-
def to_yaml_properties # :nodoc:
|
|
218
|
-
["@requirements"]
|
|
219
|
-
end
|
|
220
|
-
|
|
221
220
|
def encode_with(coder) # :nodoc:
|
|
222
221
|
coder.add "requirements", @requirements
|
|
223
222
|
end
|
|
@@ -242,7 +241,7 @@ class Gem::Requirement
|
|
|
242
241
|
def satisfied_by?(version)
|
|
243
242
|
raise ArgumentError, "Need a Gem::Version: #{version.inspect}" unless
|
|
244
243
|
Gem::Version === version
|
|
245
|
-
requirements.all? {|op, rv| OPS
|
|
244
|
+
requirements.all? {|op, rv| OPS.fetch(op).call version, rv }
|
|
246
245
|
end
|
|
247
246
|
|
|
248
247
|
alias_method :===, :satisfied_by?
|
|
@@ -284,6 +283,11 @@ class Gem::Requirement
|
|
|
284
283
|
def _tilde_requirements
|
|
285
284
|
@_tilde_requirements ||= _sorted_requirements.select {|r| r.first == "~>" }
|
|
286
285
|
end
|
|
286
|
+
|
|
287
|
+
def initialize_copy(other) # :nodoc:
|
|
288
|
+
@requirements = other.requirements.dup
|
|
289
|
+
super
|
|
290
|
+
end
|
|
287
291
|
end
|
|
288
292
|
|
|
289
293
|
class Gem::Version
|
|
@@ -1,15 +1,12 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
3
|
class Gem::Resolver::APISet::GemParser
|
|
4
|
-
EMPTY_ARRAY = [].freeze
|
|
5
|
-
private_constant :EMPTY_ARRAY
|
|
6
|
-
|
|
7
4
|
def parse(line)
|
|
8
5
|
version_and_platform, rest = line.split(" ", 2)
|
|
9
6
|
version, platform = version_and_platform.split("-", 2)
|
|
10
7
|
dependencies, requirements = rest.split("|", 2).map! {|s| s.split(",") } if rest
|
|
11
|
-
dependencies = dependencies ? dependencies.map! {|d| parse_dependency(d) } :
|
|
12
|
-
requirements = requirements ? requirements.map! {|d| parse_dependency(d) } :
|
|
8
|
+
dependencies = dependencies ? dependencies.map! {|d| parse_dependency(d) } : []
|
|
9
|
+
requirements = requirements ? requirements.map! {|d| parse_dependency(d) } : []
|
|
13
10
|
[version, platform, dependencies, requirements]
|
|
14
11
|
end
|
|
15
12
|
|
|
@@ -30,7 +30,7 @@ class Gem::Resolver::APISet < Gem::Resolver::Set
|
|
|
30
30
|
def initialize(dep_uri = "https://index.rubygems.org/info/")
|
|
31
31
|
super()
|
|
32
32
|
|
|
33
|
-
dep_uri = URI dep_uri unless URI === dep_uri
|
|
33
|
+
dep_uri = Gem::URI dep_uri unless Gem::URI === dep_uri
|
|
34
34
|
|
|
35
35
|
@dep_uri = dep_uri
|
|
36
36
|
@uri = dep_uri + ".."
|
|
@@ -104,16 +104,21 @@ class Gem::Resolver::APISet < Gem::Resolver::Set
|
|
|
104
104
|
end
|
|
105
105
|
|
|
106
106
|
uri = @dep_uri + name
|
|
107
|
-
str = Gem::RemoteFetcher.fetcher.fetch_path uri
|
|
108
107
|
|
|
109
|
-
|
|
110
|
-
|
|
108
|
+
begin
|
|
109
|
+
str = Gem::RemoteFetcher.fetcher.fetch_path uri
|
|
110
|
+
rescue Gem::RemoteFetcher::FetchError
|
|
111
|
+
@data[name] = []
|
|
112
|
+
else
|
|
113
|
+
lines(str).each do |ver|
|
|
114
|
+
number, platform, dependencies, requirements = parse_gem(ver)
|
|
111
115
|
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
116
|
+
platform ||= "ruby"
|
|
117
|
+
dependencies = dependencies.map {|dep_name, reqs| [dep_name, reqs.join(", ")] }
|
|
118
|
+
requirements = requirements.map {|req_name, reqs| [req_name.to_sym, reqs] }.to_h
|
|
115
119
|
|
|
116
|
-
|
|
120
|
+
@data[name] << { name: name, number: number, platform: platform, dependencies: dependencies, requirements: requirements }
|
|
121
|
+
end
|
|
117
122
|
end
|
|
118
123
|
|
|
119
124
|
@data[name]
|
|
@@ -29,10 +29,6 @@ class Gem::Resolver::BestSet < Gem::Resolver::ComposedSet
|
|
|
29
29
|
pick_sets if @remote && @sets.empty?
|
|
30
30
|
|
|
31
31
|
super
|
|
32
|
-
rescue Gem::RemoteFetcher::FetchError => e
|
|
33
|
-
replace_failed_api_set e
|
|
34
|
-
|
|
35
|
-
retry
|
|
36
32
|
end
|
|
37
33
|
|
|
38
34
|
def prefetch(reqs) # :nodoc:
|
|
@@ -50,28 +46,4 @@ class Gem::Resolver::BestSet < Gem::Resolver::ComposedSet
|
|
|
50
46
|
q.pp @sets
|
|
51
47
|
end
|
|
52
48
|
end
|
|
53
|
-
|
|
54
|
-
##
|
|
55
|
-
# Replaces a failed APISet for the URI in +error+ with an IndexSet.
|
|
56
|
-
#
|
|
57
|
-
# If no matching APISet can be found the original +error+ is raised.
|
|
58
|
-
#
|
|
59
|
-
# The calling method must retry the exception to repeat the lookup.
|
|
60
|
-
|
|
61
|
-
def replace_failed_api_set(error) # :nodoc:
|
|
62
|
-
uri = error.original_uri
|
|
63
|
-
uri = URI uri unless URI === uri
|
|
64
|
-
uri += "."
|
|
65
|
-
|
|
66
|
-
raise error unless api_set = @sets.find do |set|
|
|
67
|
-
Gem::Resolver::APISet === set && set.dep_uri == uri
|
|
68
|
-
end
|
|
69
|
-
|
|
70
|
-
index_set = Gem::Resolver::IndexSet.new api_set.source
|
|
71
|
-
|
|
72
|
-
@sets.map! do |set|
|
|
73
|
-
next set unless set == api_set
|
|
74
|
-
index_set
|
|
75
|
-
end
|
|
76
|
-
end
|
|
77
49
|
end
|
|
@@ -44,16 +44,16 @@ class Gem::Resolver::ComposedSet < Gem::Resolver::Set
|
|
|
44
44
|
end
|
|
45
45
|
|
|
46
46
|
def errors
|
|
47
|
-
@errors + @sets.
|
|
47
|
+
@errors + @sets.flat_map(&:errors)
|
|
48
48
|
end
|
|
49
49
|
|
|
50
50
|
##
|
|
51
51
|
# Finds all specs matching +req+ in all sets.
|
|
52
52
|
|
|
53
53
|
def find_all(req)
|
|
54
|
-
@sets.
|
|
54
|
+
@sets.flat_map do |s|
|
|
55
55
|
s.find_all req
|
|
56
|
-
end
|
|
56
|
+
end
|
|
57
57
|
end
|
|
58
58
|
|
|
59
59
|
##
|
|
@@ -65,11 +65,11 @@ class Gem::Resolver::IndexSet < Gem::Resolver::Set
|
|
|
65
65
|
|
|
66
66
|
q.breakable
|
|
67
67
|
|
|
68
|
-
names = @all.values.
|
|
68
|
+
names = @all.values.flat_map do |tuples|
|
|
69
69
|
tuples.map do |_, tuple|
|
|
70
70
|
tuple.full_name
|
|
71
71
|
end
|
|
72
|
-
end
|
|
72
|
+
end
|
|
73
73
|
|
|
74
74
|
q.seplist names do |name|
|
|
75
75
|
q.text name
|