rubygems-update 3.4.22 → 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 +99 -2
- data/Manifest.txt +34 -221
- data/README.md +1 -3
- data/bundler/CHANGELOG.md +53 -0
- 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 +28 -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 +42 -15
- 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 +5 -1
- data/bundler/lib/bundler/env.rb +1 -3
- data/bundler/lib/bundler/errors.rb +43 -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 +5 -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 +5 -5
- 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 +24 -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/installer.rb +1 -1
- data/bundler/lib/bundler/plugin.rb +3 -3
- 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 +24 -50
- data/bundler/lib/bundler/rubygems_gem_installer.rb +6 -56
- 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 +15 -15
- data/bundler/lib/bundler/source/git.rb +4 -3
- data/bundler/lib/bundler/source/metadata.rb +15 -15
- 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 +38 -10
- 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/standard.yml.tt +1 -1
- data/bundler/lib/bundler/ui/shell.rb +1 -1
- 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 +3 -3
- data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/pool.rb +2 -2
- 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 +35 -35
- 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 +3 -3
- data/bundler/lib/bundler.rb +38 -27
- 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 +13 -15
- data/lib/rubygems/command_manager.rb +5 -4
- data/lib/rubygems/commands/build_command.rb +2 -2
- data/lib/rubygems/commands/cert_command.rb +1 -2
- 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 +4 -4
- data/lib/rubygems/commands/dependency_command.rb +4 -5
- data/lib/rubygems/commands/environment_command.rb +1 -3
- 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 +3 -3
- 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 +31 -34
- 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 +9 -10
- data/lib/rubygems/commands/unpack_command.rb +4 -4
- data/lib/rubygems/commands/update_command.rb +10 -12
- 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 +4 -4
- data/lib/rubygems/core_ext/kernel_gem.rb +0 -2
- data/lib/rubygems/core_ext/kernel_require.rb +19 -48
- 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 +29 -30
- data/lib/rubygems/dependency_list.rb +1 -1
- data/lib/rubygems/deprecate.rb +16 -15
- data/lib/rubygems/doctor.rb +5 -5
- 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 +1 -3
- 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 +59 -33
- data/lib/rubygems/installer_uninstaller_utils.rb +0 -2
- data/lib/rubygems/local_remote_options.rb +7 -10
- 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/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 +5 -3
- data/lib/rubygems/package/tar_writer.rb +19 -17
- data/lib/rubygems/package.rb +27 -26
- data/lib/rubygems/package_task.rb +2 -2
- data/lib/rubygems/path_support.rb +9 -10
- data/lib/rubygems/platform.rb +60 -45
- data/lib/rubygems/query_utils.rb +7 -9
- data/lib/rubygems/remote_fetcher.rb +15 -15
- 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 +119 -122
- 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 +3 -10
- 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 +3 -3
- 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 +5 -8
- 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 +4 -4
- data/lib/rubygems/spec_fetcher.rb +29 -29
- data/lib/rubygems/specification.rb +125 -138
- data/lib/rubygems/specification_policy.rb +55 -25
- 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 +7 -9
- data/lib/rubygems/update_suggestion.rb +5 -18
- data/lib/rubygems/uri_formatter.rb +1 -1
- data/lib/rubygems/user_interaction.rb +15 -21
- data/lib/rubygems/util/licenses.rb +65 -35
- data/lib/rubygems/util/list.rb +3 -1
- data/lib/rubygems/util.rb +2 -4
- data/lib/rubygems/validator.rb +5 -3
- data/lib/rubygems/version.rb +34 -28
- data/lib/rubygems/version_option.rb +2 -5
- data/lib/rubygems/yaml_serializer.rb +3 -3
- data/lib/rubygems.rb +37 -37
- data/rubygems-update.gemspec +4 -4
- data/setup.rb +2 -2
- metadata +38 -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 -542
- 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 -150
- 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
@@ -0,0 +1,23 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
=begin
|
3
|
+
|
4
|
+
= net/https -- SSL/TLS enhancement for Gem::Net::HTTP.
|
5
|
+
|
6
|
+
This file has been merged with net/http. There is no longer any need to
|
7
|
+
require 'rubygems/net-http/lib/net/https' to use HTTPS.
|
8
|
+
|
9
|
+
See Gem::Net::HTTP for details on how to make HTTPS connections.
|
10
|
+
|
11
|
+
== Info
|
12
|
+
'OpenSSL for Ruby 2' project
|
13
|
+
Copyright (C) 2001 GOTOU Yuuzou <gotoyuzo@notwork.org>
|
14
|
+
All rights reserved.
|
15
|
+
|
16
|
+
== Licence
|
17
|
+
This program is licensed under the same licence as Ruby.
|
18
|
+
(See the file 'LICENCE'.)
|
19
|
+
|
20
|
+
=end
|
21
|
+
|
22
|
+
require_relative 'http'
|
23
|
+
require 'openssl'
|
@@ -0,0 +1,22 @@
|
|
1
|
+
Copyright (C) 1993-2013 Yukihiro Matsumoto. All rights reserved.
|
2
|
+
|
3
|
+
Redistribution and use in source and binary forms, with or without
|
4
|
+
modification, are permitted provided that the following conditions
|
5
|
+
are met:
|
6
|
+
1. Redistributions of source code must retain the above copyright
|
7
|
+
notice, this list of conditions and the following disclaimer.
|
8
|
+
2. Redistributions in binary form must reproduce the above copyright
|
9
|
+
notice, this list of conditions and the following disclaimer in the
|
10
|
+
documentation and/or other materials provided with the distribution.
|
11
|
+
|
12
|
+
THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
|
13
|
+
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
14
|
+
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
15
|
+
ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
|
16
|
+
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
17
|
+
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
18
|
+
OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
19
|
+
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
20
|
+
LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
21
|
+
OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
22
|
+
SUCH DAMAGE.
|
@@ -0,0 +1,544 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
#
|
3
|
+
# = net/protocol.rb
|
4
|
+
#
|
5
|
+
#--
|
6
|
+
# Copyright (c) 1999-2004 Yukihiro Matsumoto
|
7
|
+
# Copyright (c) 1999-2004 Minero Aoki
|
8
|
+
#
|
9
|
+
# written and maintained by Minero Aoki <aamine@loveruby.net>
|
10
|
+
#
|
11
|
+
# This program is free software. You can re-distribute and/or
|
12
|
+
# modify this program under the same terms as Ruby itself,
|
13
|
+
# Ruby Distribute License or GNU General Public License.
|
14
|
+
#
|
15
|
+
# $Id$
|
16
|
+
#++
|
17
|
+
#
|
18
|
+
# WARNING: This file is going to remove.
|
19
|
+
# Do not rely on the implementation written in this file.
|
20
|
+
#
|
21
|
+
|
22
|
+
require 'socket'
|
23
|
+
require_relative '../../../timeout/lib/timeout'
|
24
|
+
require 'io/wait'
|
25
|
+
|
26
|
+
module Gem::Net # :nodoc:
|
27
|
+
|
28
|
+
class Protocol #:nodoc: internal use only
|
29
|
+
VERSION = "0.2.2"
|
30
|
+
|
31
|
+
private
|
32
|
+
def Protocol.protocol_param(name, val)
|
33
|
+
module_eval(<<-End, __FILE__, __LINE__ + 1)
|
34
|
+
def #{name}
|
35
|
+
#{val}
|
36
|
+
end
|
37
|
+
End
|
38
|
+
end
|
39
|
+
|
40
|
+
def ssl_socket_connect(s, timeout)
|
41
|
+
if timeout
|
42
|
+
while true
|
43
|
+
raise Gem::Net::OpenTimeout if timeout <= 0
|
44
|
+
start = Process.clock_gettime Process::CLOCK_MONOTONIC
|
45
|
+
# to_io is required because SSLSocket doesn't have wait_readable yet
|
46
|
+
case s.connect_nonblock(exception: false)
|
47
|
+
when :wait_readable; s.to_io.wait_readable(timeout)
|
48
|
+
when :wait_writable; s.to_io.wait_writable(timeout)
|
49
|
+
else; break
|
50
|
+
end
|
51
|
+
timeout -= Process.clock_gettime(Process::CLOCK_MONOTONIC) - start
|
52
|
+
end
|
53
|
+
else
|
54
|
+
s.connect
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
|
60
|
+
class ProtocolError < StandardError; end
|
61
|
+
class ProtoSyntaxError < ProtocolError; end
|
62
|
+
class ProtoFatalError < ProtocolError; end
|
63
|
+
class ProtoUnknownError < ProtocolError; end
|
64
|
+
class ProtoServerError < ProtocolError; end
|
65
|
+
class ProtoAuthError < ProtocolError; end
|
66
|
+
class ProtoCommandError < ProtocolError; end
|
67
|
+
class ProtoRetriableError < ProtocolError; end
|
68
|
+
ProtocRetryError = ProtoRetriableError
|
69
|
+
|
70
|
+
##
|
71
|
+
# OpenTimeout, a subclass of Gem::Timeout::Error, is raised if a connection cannot
|
72
|
+
# be created within the open_timeout.
|
73
|
+
|
74
|
+
class OpenTimeout < Gem::Timeout::Error; end
|
75
|
+
|
76
|
+
##
|
77
|
+
# ReadTimeout, a subclass of Gem::Timeout::Error, is raised if a chunk of the
|
78
|
+
# response cannot be read within the read_timeout.
|
79
|
+
|
80
|
+
class ReadTimeout < Gem::Timeout::Error
|
81
|
+
def initialize(io = nil)
|
82
|
+
@io = io
|
83
|
+
end
|
84
|
+
attr_reader :io
|
85
|
+
|
86
|
+
def message
|
87
|
+
msg = super
|
88
|
+
if @io
|
89
|
+
msg = "#{msg} with #{@io.inspect}"
|
90
|
+
end
|
91
|
+
msg
|
92
|
+
end
|
93
|
+
end
|
94
|
+
|
95
|
+
##
|
96
|
+
# WriteTimeout, a subclass of Gem::Timeout::Error, is raised if a chunk of the
|
97
|
+
# response cannot be written within the write_timeout. Not raised on Windows.
|
98
|
+
|
99
|
+
class WriteTimeout < Gem::Timeout::Error
|
100
|
+
def initialize(io = nil)
|
101
|
+
@io = io
|
102
|
+
end
|
103
|
+
attr_reader :io
|
104
|
+
|
105
|
+
def message
|
106
|
+
msg = super
|
107
|
+
if @io
|
108
|
+
msg = "#{msg} with #{@io.inspect}"
|
109
|
+
end
|
110
|
+
msg
|
111
|
+
end
|
112
|
+
end
|
113
|
+
|
114
|
+
|
115
|
+
class BufferedIO #:nodoc: internal use only
|
116
|
+
def initialize(io, read_timeout: 60, write_timeout: 60, continue_timeout: nil, debug_output: nil)
|
117
|
+
@io = io
|
118
|
+
@read_timeout = read_timeout
|
119
|
+
@write_timeout = write_timeout
|
120
|
+
@continue_timeout = continue_timeout
|
121
|
+
@debug_output = debug_output
|
122
|
+
@rbuf = ''.b
|
123
|
+
@rbuf_empty = true
|
124
|
+
@rbuf_offset = 0
|
125
|
+
end
|
126
|
+
|
127
|
+
attr_reader :io
|
128
|
+
attr_accessor :read_timeout
|
129
|
+
attr_accessor :write_timeout
|
130
|
+
attr_accessor :continue_timeout
|
131
|
+
attr_accessor :debug_output
|
132
|
+
|
133
|
+
def inspect
|
134
|
+
"#<#{self.class} io=#{@io}>"
|
135
|
+
end
|
136
|
+
|
137
|
+
def eof?
|
138
|
+
@io.eof?
|
139
|
+
end
|
140
|
+
|
141
|
+
def closed?
|
142
|
+
@io.closed?
|
143
|
+
end
|
144
|
+
|
145
|
+
def close
|
146
|
+
@io.close
|
147
|
+
end
|
148
|
+
|
149
|
+
#
|
150
|
+
# Read
|
151
|
+
#
|
152
|
+
|
153
|
+
public
|
154
|
+
|
155
|
+
def read(len, dest = ''.b, ignore_eof = false)
|
156
|
+
LOG "reading #{len} bytes..."
|
157
|
+
read_bytes = 0
|
158
|
+
begin
|
159
|
+
while read_bytes + rbuf_size < len
|
160
|
+
if s = rbuf_consume_all
|
161
|
+
read_bytes += s.bytesize
|
162
|
+
dest << s
|
163
|
+
end
|
164
|
+
rbuf_fill
|
165
|
+
end
|
166
|
+
s = rbuf_consume(len - read_bytes)
|
167
|
+
read_bytes += s.bytesize
|
168
|
+
dest << s
|
169
|
+
rescue EOFError
|
170
|
+
raise unless ignore_eof
|
171
|
+
end
|
172
|
+
LOG "read #{read_bytes} bytes"
|
173
|
+
dest
|
174
|
+
end
|
175
|
+
|
176
|
+
def read_all(dest = ''.b)
|
177
|
+
LOG 'reading all...'
|
178
|
+
read_bytes = 0
|
179
|
+
begin
|
180
|
+
while true
|
181
|
+
if s = rbuf_consume_all
|
182
|
+
read_bytes += s.bytesize
|
183
|
+
dest << s
|
184
|
+
end
|
185
|
+
rbuf_fill
|
186
|
+
end
|
187
|
+
rescue EOFError
|
188
|
+
;
|
189
|
+
end
|
190
|
+
LOG "read #{read_bytes} bytes"
|
191
|
+
dest
|
192
|
+
end
|
193
|
+
|
194
|
+
def readuntil(terminator, ignore_eof = false)
|
195
|
+
offset = @rbuf_offset
|
196
|
+
begin
|
197
|
+
until idx = @rbuf.index(terminator, offset)
|
198
|
+
offset = @rbuf.bytesize
|
199
|
+
rbuf_fill
|
200
|
+
end
|
201
|
+
return rbuf_consume(idx + terminator.bytesize - @rbuf_offset)
|
202
|
+
rescue EOFError
|
203
|
+
raise unless ignore_eof
|
204
|
+
return rbuf_consume
|
205
|
+
end
|
206
|
+
end
|
207
|
+
|
208
|
+
def readline
|
209
|
+
readuntil("\n").chop
|
210
|
+
end
|
211
|
+
|
212
|
+
private
|
213
|
+
|
214
|
+
BUFSIZE = 1024 * 16
|
215
|
+
|
216
|
+
def rbuf_fill
|
217
|
+
tmp = @rbuf_empty ? @rbuf : nil
|
218
|
+
case rv = @io.read_nonblock(BUFSIZE, tmp, exception: false)
|
219
|
+
when String
|
220
|
+
@rbuf_empty = false
|
221
|
+
if rv.equal?(tmp)
|
222
|
+
@rbuf_offset = 0
|
223
|
+
else
|
224
|
+
@rbuf << rv
|
225
|
+
rv.clear
|
226
|
+
end
|
227
|
+
return
|
228
|
+
when :wait_readable
|
229
|
+
(io = @io.to_io).wait_readable(@read_timeout) or raise Gem::Net::ReadTimeout.new(io)
|
230
|
+
# continue looping
|
231
|
+
when :wait_writable
|
232
|
+
# OpenSSL::Buffering#read_nonblock may fail with IO::WaitWritable.
|
233
|
+
# http://www.openssl.org/support/faq.html#PROG10
|
234
|
+
(io = @io.to_io).wait_writable(@read_timeout) or raise Gem::Net::ReadTimeout.new(io)
|
235
|
+
# continue looping
|
236
|
+
when nil
|
237
|
+
raise EOFError, 'end of file reached'
|
238
|
+
end while true
|
239
|
+
end
|
240
|
+
|
241
|
+
def rbuf_flush
|
242
|
+
if @rbuf_empty
|
243
|
+
@rbuf.clear
|
244
|
+
@rbuf_offset = 0
|
245
|
+
end
|
246
|
+
nil
|
247
|
+
end
|
248
|
+
|
249
|
+
def rbuf_size
|
250
|
+
@rbuf.bytesize - @rbuf_offset
|
251
|
+
end
|
252
|
+
|
253
|
+
def rbuf_consume_all
|
254
|
+
rbuf_consume if rbuf_size > 0
|
255
|
+
end
|
256
|
+
|
257
|
+
def rbuf_consume(len = nil)
|
258
|
+
if @rbuf_offset == 0 && (len.nil? || len == @rbuf.bytesize)
|
259
|
+
s = @rbuf
|
260
|
+
@rbuf = ''.b
|
261
|
+
@rbuf_offset = 0
|
262
|
+
@rbuf_empty = true
|
263
|
+
elsif len.nil?
|
264
|
+
s = @rbuf.byteslice(@rbuf_offset..-1)
|
265
|
+
@rbuf = ''.b
|
266
|
+
@rbuf_offset = 0
|
267
|
+
@rbuf_empty = true
|
268
|
+
else
|
269
|
+
s = @rbuf.byteslice(@rbuf_offset, len)
|
270
|
+
@rbuf_offset += len
|
271
|
+
@rbuf_empty = @rbuf_offset == @rbuf.bytesize
|
272
|
+
rbuf_flush
|
273
|
+
end
|
274
|
+
|
275
|
+
@debug_output << %Q[-> #{s.dump}\n] if @debug_output
|
276
|
+
s
|
277
|
+
end
|
278
|
+
|
279
|
+
#
|
280
|
+
# Write
|
281
|
+
#
|
282
|
+
|
283
|
+
public
|
284
|
+
|
285
|
+
def write(*strs)
|
286
|
+
writing {
|
287
|
+
write0(*strs)
|
288
|
+
}
|
289
|
+
end
|
290
|
+
|
291
|
+
alias << write
|
292
|
+
|
293
|
+
def writeline(str)
|
294
|
+
writing {
|
295
|
+
write0 str + "\r\n"
|
296
|
+
}
|
297
|
+
end
|
298
|
+
|
299
|
+
private
|
300
|
+
|
301
|
+
def writing
|
302
|
+
@written_bytes = 0
|
303
|
+
@debug_output << '<- ' if @debug_output
|
304
|
+
yield
|
305
|
+
@debug_output << "\n" if @debug_output
|
306
|
+
bytes = @written_bytes
|
307
|
+
@written_bytes = nil
|
308
|
+
bytes
|
309
|
+
end
|
310
|
+
|
311
|
+
def write0(*strs)
|
312
|
+
@debug_output << strs.map(&:dump).join if @debug_output
|
313
|
+
orig_written_bytes = @written_bytes
|
314
|
+
strs.each_with_index do |str, i|
|
315
|
+
need_retry = true
|
316
|
+
case len = @io.write_nonblock(str, exception: false)
|
317
|
+
when Integer
|
318
|
+
@written_bytes += len
|
319
|
+
len -= str.bytesize
|
320
|
+
if len == 0
|
321
|
+
if strs.size == i+1
|
322
|
+
return @written_bytes - orig_written_bytes
|
323
|
+
else
|
324
|
+
need_retry = false
|
325
|
+
# next string
|
326
|
+
end
|
327
|
+
elsif len < 0
|
328
|
+
str = str.byteslice(len, -len)
|
329
|
+
else # len > 0
|
330
|
+
need_retry = false
|
331
|
+
# next string
|
332
|
+
end
|
333
|
+
# continue looping
|
334
|
+
when :wait_writable
|
335
|
+
(io = @io.to_io).wait_writable(@write_timeout) or raise Gem::Net::WriteTimeout.new(io)
|
336
|
+
# continue looping
|
337
|
+
end while need_retry
|
338
|
+
end
|
339
|
+
end
|
340
|
+
|
341
|
+
#
|
342
|
+
# Logging
|
343
|
+
#
|
344
|
+
|
345
|
+
private
|
346
|
+
|
347
|
+
def LOG_off
|
348
|
+
@save_debug_out = @debug_output
|
349
|
+
@debug_output = nil
|
350
|
+
end
|
351
|
+
|
352
|
+
def LOG_on
|
353
|
+
@debug_output = @save_debug_out
|
354
|
+
end
|
355
|
+
|
356
|
+
def LOG(msg)
|
357
|
+
return unless @debug_output
|
358
|
+
@debug_output << msg + "\n"
|
359
|
+
end
|
360
|
+
end
|
361
|
+
|
362
|
+
|
363
|
+
class InternetMessageIO < BufferedIO #:nodoc: internal use only
|
364
|
+
def initialize(*, **)
|
365
|
+
super
|
366
|
+
@wbuf = nil
|
367
|
+
end
|
368
|
+
|
369
|
+
#
|
370
|
+
# Read
|
371
|
+
#
|
372
|
+
|
373
|
+
def each_message_chunk
|
374
|
+
LOG 'reading message...'
|
375
|
+
LOG_off()
|
376
|
+
read_bytes = 0
|
377
|
+
while (line = readuntil("\r\n")) != ".\r\n"
|
378
|
+
read_bytes += line.size
|
379
|
+
yield line.delete_prefix('.')
|
380
|
+
end
|
381
|
+
LOG_on()
|
382
|
+
LOG "read message (#{read_bytes} bytes)"
|
383
|
+
end
|
384
|
+
|
385
|
+
# *library private* (cannot handle 'break')
|
386
|
+
def each_list_item
|
387
|
+
while (str = readuntil("\r\n")) != ".\r\n"
|
388
|
+
yield str.chop
|
389
|
+
end
|
390
|
+
end
|
391
|
+
|
392
|
+
def write_message_0(src)
|
393
|
+
prev = @written_bytes
|
394
|
+
each_crlf_line(src) do |line|
|
395
|
+
write0 dot_stuff(line)
|
396
|
+
end
|
397
|
+
@written_bytes - prev
|
398
|
+
end
|
399
|
+
|
400
|
+
#
|
401
|
+
# Write
|
402
|
+
#
|
403
|
+
|
404
|
+
def write_message(src)
|
405
|
+
LOG "writing message from #{src.class}"
|
406
|
+
LOG_off()
|
407
|
+
len = writing {
|
408
|
+
using_each_crlf_line {
|
409
|
+
write_message_0 src
|
410
|
+
}
|
411
|
+
}
|
412
|
+
LOG_on()
|
413
|
+
LOG "wrote #{len} bytes"
|
414
|
+
len
|
415
|
+
end
|
416
|
+
|
417
|
+
def write_message_by_block(&block)
|
418
|
+
LOG 'writing message from block'
|
419
|
+
LOG_off()
|
420
|
+
len = writing {
|
421
|
+
using_each_crlf_line {
|
422
|
+
begin
|
423
|
+
block.call(WriteAdapter.new(self.method(:write_message_0)))
|
424
|
+
rescue LocalJumpError
|
425
|
+
# allow `break' from writer block
|
426
|
+
end
|
427
|
+
}
|
428
|
+
}
|
429
|
+
LOG_on()
|
430
|
+
LOG "wrote #{len} bytes"
|
431
|
+
len
|
432
|
+
end
|
433
|
+
|
434
|
+
private
|
435
|
+
|
436
|
+
def dot_stuff(s)
|
437
|
+
s.sub(/\A\./, '..')
|
438
|
+
end
|
439
|
+
|
440
|
+
def using_each_crlf_line
|
441
|
+
@wbuf = ''.b
|
442
|
+
yield
|
443
|
+
if not @wbuf.empty? # unterminated last line
|
444
|
+
write0 dot_stuff(@wbuf.chomp) + "\r\n"
|
445
|
+
elsif @written_bytes == 0 # empty src
|
446
|
+
write0 "\r\n"
|
447
|
+
end
|
448
|
+
write0 ".\r\n"
|
449
|
+
@wbuf = nil
|
450
|
+
end
|
451
|
+
|
452
|
+
def each_crlf_line(src)
|
453
|
+
buffer_filling(@wbuf, src) do
|
454
|
+
while line = @wbuf.slice!(/\A[^\r\n]*(?:\n|\r(?:\n|(?!\z)))/)
|
455
|
+
yield line.chomp("\n") + "\r\n"
|
456
|
+
end
|
457
|
+
end
|
458
|
+
end
|
459
|
+
|
460
|
+
def buffer_filling(buf, src)
|
461
|
+
case src
|
462
|
+
when String # for speeding up.
|
463
|
+
0.step(src.size - 1, 1024) do |i|
|
464
|
+
buf << src[i, 1024]
|
465
|
+
yield
|
466
|
+
end
|
467
|
+
when File # for speeding up.
|
468
|
+
while s = src.read(1024)
|
469
|
+
buf << s
|
470
|
+
yield
|
471
|
+
end
|
472
|
+
else # generic reader
|
473
|
+
src.each do |str|
|
474
|
+
buf << str
|
475
|
+
yield if buf.size > 1024
|
476
|
+
end
|
477
|
+
yield unless buf.empty?
|
478
|
+
end
|
479
|
+
end
|
480
|
+
end
|
481
|
+
|
482
|
+
|
483
|
+
#
|
484
|
+
# The writer adapter class
|
485
|
+
#
|
486
|
+
class WriteAdapter
|
487
|
+
def initialize(writer)
|
488
|
+
@writer = writer
|
489
|
+
end
|
490
|
+
|
491
|
+
def inspect
|
492
|
+
"#<#{self.class} writer=#{@writer.inspect}>"
|
493
|
+
end
|
494
|
+
|
495
|
+
def write(str)
|
496
|
+
@writer.call(str)
|
497
|
+
end
|
498
|
+
|
499
|
+
alias print write
|
500
|
+
|
501
|
+
def <<(str)
|
502
|
+
write str
|
503
|
+
self
|
504
|
+
end
|
505
|
+
|
506
|
+
def puts(str = '')
|
507
|
+
write str.chomp("\n") + "\n"
|
508
|
+
end
|
509
|
+
|
510
|
+
def printf(*args)
|
511
|
+
write sprintf(*args)
|
512
|
+
end
|
513
|
+
end
|
514
|
+
|
515
|
+
|
516
|
+
class ReadAdapter #:nodoc: internal use only
|
517
|
+
def initialize(block)
|
518
|
+
@block = block
|
519
|
+
end
|
520
|
+
|
521
|
+
def inspect
|
522
|
+
"#<#{self.class}>"
|
523
|
+
end
|
524
|
+
|
525
|
+
def <<(str)
|
526
|
+
call_block(str, &@block) if @block
|
527
|
+
end
|
528
|
+
|
529
|
+
private
|
530
|
+
|
531
|
+
# This method is needed because @block must be called by yield,
|
532
|
+
# not Proc#call. You can see difference when using `break' in
|
533
|
+
# the block.
|
534
|
+
def call_block(str)
|
535
|
+
yield str
|
536
|
+
end
|
537
|
+
end
|
538
|
+
|
539
|
+
|
540
|
+
module NetPrivate #:nodoc: obsolete
|
541
|
+
Socket = ::Gem::Net::InternetMessageIO
|
542
|
+
end
|
543
|
+
|
544
|
+
end # module Gem::Net
|
@@ -48,7 +48,7 @@
|
|
48
48
|
#
|
49
49
|
# == Gem::OptionParser
|
50
50
|
#
|
51
|
-
# === New to
|
51
|
+
# === New to +Gem::OptionParser+?
|
52
52
|
#
|
53
53
|
# See the {Tutorial}[optparse/tutorial.rdoc].
|
54
54
|
#
|
@@ -152,14 +152,14 @@
|
|
152
152
|
# Gem::OptionParser supports the ability to coerce command line arguments
|
153
153
|
# into objects for us.
|
154
154
|
#
|
155
|
-
# Gem::OptionParser comes with a few ready-to-use kinds of
|
155
|
+
# Gem::OptionParser comes with a few ready-to-use kinds of type
|
156
156
|
# coercion. They are:
|
157
157
|
#
|
158
|
-
# - Date -- Anything accepted by +Date.parse+
|
159
|
-
# - DateTime -- Anything accepted by +DateTime.parse+
|
160
|
-
# - Time -- Anything accepted by +Time.httpdate+ or +Time.parse+
|
161
|
-
# - URI -- Anything accepted by +URI.parse+
|
162
|
-
# - Shellwords -- Anything accepted by +Shellwords.shellwords+
|
158
|
+
# - Date -- Anything accepted by +Date.parse+ (need to require +optparse/date+)
|
159
|
+
# - DateTime -- Anything accepted by +DateTime.parse+ (need to require +optparse/date+)
|
160
|
+
# - Time -- Anything accepted by +Time.httpdate+ or +Time.parse+ (need to require +optparse/time+)
|
161
|
+
# - URI -- Anything accepted by +URI.parse+ (need to require +optparse/uri+)
|
162
|
+
# - Shellwords -- Anything accepted by +Shellwords.shellwords+ (need to require +optparse/shellwords+)
|
163
163
|
# - String -- Any non-empty string
|
164
164
|
# - Integer -- Any integer. Will convert octal. (e.g. 124, -3, 040)
|
165
165
|
# - Float -- Any float. (e.g. 10, 3.14, -100E+13)
|
@@ -425,7 +425,7 @@
|
|
425
425
|
# If you have any questions, file a ticket at http://bugs.ruby-lang.org.
|
426
426
|
#
|
427
427
|
class Gem::OptionParser
|
428
|
-
Gem::OptionParser::Version = "0.
|
428
|
+
Gem::OptionParser::Version = "0.4.0"
|
429
429
|
|
430
430
|
# :stopdoc:
|
431
431
|
NoArgument = [NO_ARGUMENT = :NONE, nil].freeze
|
@@ -1775,7 +1775,16 @@ XXX
|
|
1775
1775
|
# # params["bar"] = "x" # --bar x
|
1776
1776
|
# # params["zot"] = "z" # --zot Z
|
1777
1777
|
#
|
1778
|
-
|
1778
|
+
# Option +symbolize_names+ (boolean) specifies whether returned Hash keys should be Symbols; defaults to +false+ (use Strings).
|
1779
|
+
#
|
1780
|
+
# params = ARGV.getopts("ab:", "foo", "bar:", "zot:Z;zot option", symbolize_names: true)
|
1781
|
+
# # params[:a] = true # -a
|
1782
|
+
# # params[:b] = "1" # -b1
|
1783
|
+
# # params[:foo] = "1" # --foo
|
1784
|
+
# # params[:bar] = "x" # --bar x
|
1785
|
+
# # params[:zot] = "z" # --zot Z
|
1786
|
+
#
|
1787
|
+
def getopts(*args, symbolize_names: false)
|
1779
1788
|
argv = Array === args.first ? args.shift : default_argv
|
1780
1789
|
single_options, *long_options = *args
|
1781
1790
|
|
@@ -1804,14 +1813,14 @@ XXX
|
|
1804
1813
|
end
|
1805
1814
|
|
1806
1815
|
parse_in_order(argv, result.method(:[]=))
|
1807
|
-
result
|
1816
|
+
symbolize_names ? result.transform_keys(&:to_sym) : result
|
1808
1817
|
end
|
1809
1818
|
|
1810
1819
|
#
|
1811
1820
|
# See #getopts.
|
1812
1821
|
#
|
1813
|
-
def self.getopts(*args)
|
1814
|
-
new.getopts(*args)
|
1822
|
+
def self.getopts(*args, symbolize_names: false)
|
1823
|
+
new.getopts(*args, symbolize_names: symbolize_names)
|
1815
1824
|
end
|
1816
1825
|
|
1817
1826
|
#
|
@@ -2084,10 +2093,23 @@ XXX
|
|
2084
2093
|
f |= Regexp::IGNORECASE if /i/ =~ o
|
2085
2094
|
f |= Regexp::MULTILINE if /m/ =~ o
|
2086
2095
|
f |= Regexp::EXTENDED if /x/ =~ o
|
2087
|
-
|
2088
|
-
|
2096
|
+
case o = o.delete("imx")
|
2097
|
+
when ""
|
2098
|
+
when "u"
|
2099
|
+
s = s.encode(Encoding::UTF_8)
|
2100
|
+
when "e"
|
2101
|
+
s = s.encode(Encoding::EUC_JP)
|
2102
|
+
when "s"
|
2103
|
+
s = s.encode(Encoding::SJIS)
|
2104
|
+
when "n"
|
2105
|
+
f |= Regexp::NOENCODING
|
2106
|
+
else
|
2107
|
+
raise Gem::OptionParser::InvalidArgument, "unknown regexp option - #{o}"
|
2108
|
+
end
|
2109
|
+
else
|
2110
|
+
s ||= all
|
2089
2111
|
end
|
2090
|
-
Regexp.new(s
|
2112
|
+
Regexp.new(s, f)
|
2091
2113
|
end
|
2092
2114
|
|
2093
2115
|
#
|
@@ -2276,8 +2298,8 @@ XXX
|
|
2276
2298
|
# rescue Gem::OptionParser::ParseError
|
2277
2299
|
# end
|
2278
2300
|
#
|
2279
|
-
def getopts(*args)
|
2280
|
-
options.getopts(self, *args)
|
2301
|
+
def getopts(*args, symbolize_names: false)
|
2302
|
+
options.getopts(self, *args, symbolize_names: symbolize_names)
|
2281
2303
|
end
|
2282
2304
|
|
2283
2305
|
#
|
data/lib/rubygems/package/old.rb
CHANGED
@@ -70,7 +70,7 @@ class Gem::Package::Old < Gem::Package
|
|
70
70
|
file_data << line
|
71
71
|
end
|
72
72
|
|
73
|
-
file_data = file_data.strip.
|
73
|
+
file_data = file_data.strip.unpack1("m")
|
74
74
|
file_data = Zlib::Inflate.inflate file_data
|
75
75
|
|
76
76
|
raise Gem::Package::FormatError, "#{full_name} in #{@gem} is corrupt" if
|
@@ -78,7 +78,7 @@ class Gem::Package::Old < Gem::Package
|
|
78
78
|
|
79
79
|
FileUtils.rm_rf destination
|
80
80
|
|
81
|
-
FileUtils.mkdir_p File.dirname(destination), :
|
81
|
+
FileUtils.mkdir_p File.dirname(destination), mode: dir_mode && 0o755
|
82
82
|
|
83
83
|
File.open destination, "wb", file_mode(entry["mode"]) do |out|
|
84
84
|
out.write file_data
|