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
|
@@ -3,11 +3,7 @@
|
|
|
3
3
|
require 'socket'
|
|
4
4
|
require_relative '../../timeout/lib/timeout'
|
|
5
5
|
require 'io/wait'
|
|
6
|
-
|
|
7
|
-
begin
|
|
8
|
-
require 'securerandom'
|
|
9
|
-
rescue LoadError
|
|
10
|
-
end
|
|
6
|
+
require_relative '../../../vendored_securerandom'
|
|
11
7
|
|
|
12
8
|
# Gem::Resolv is a thread-aware DNS resolver library written in Ruby. Gem::Resolv can
|
|
13
9
|
# handle multiple DNS requests concurrently without blocking the entire Ruby
|
|
@@ -37,7 +33,7 @@ end
|
|
|
37
33
|
|
|
38
34
|
class Gem::Resolv
|
|
39
35
|
|
|
40
|
-
VERSION = "0.
|
|
36
|
+
VERSION = "0.6.0"
|
|
41
37
|
|
|
42
38
|
##
|
|
43
39
|
# Looks up the first IP address for +name+.
|
|
@@ -83,9 +79,22 @@ class Gem::Resolv
|
|
|
83
79
|
|
|
84
80
|
##
|
|
85
81
|
# Creates a new Gem::Resolv using +resolvers+.
|
|
82
|
+
#
|
|
83
|
+
# If +resolvers+ is not given, a hash, or +nil+, uses a Hosts resolver and
|
|
84
|
+
# and a DNS resolver. If +resolvers+ is a hash, uses the hash as
|
|
85
|
+
# configuration for the DNS resolver.
|
|
86
|
+
|
|
87
|
+
def initialize(resolvers=(arg_not_set = true; nil), use_ipv6: (keyword_not_set = true; nil))
|
|
88
|
+
if !keyword_not_set && !arg_not_set
|
|
89
|
+
warn "Support for separate use_ipv6 keyword is deprecated, as it is ignored if an argument is provided. Do not provide a positional argument if using the use_ipv6 keyword argument.", uplevel: 1
|
|
90
|
+
end
|
|
86
91
|
|
|
87
|
-
|
|
88
|
-
|
|
92
|
+
@resolvers = case resolvers
|
|
93
|
+
when Hash, nil
|
|
94
|
+
[Hosts.new, DNS.new(DNS::Config.default_config_hash.merge(resolvers || {}))]
|
|
95
|
+
else
|
|
96
|
+
resolvers
|
|
97
|
+
end
|
|
89
98
|
end
|
|
90
99
|
|
|
91
100
|
##
|
|
@@ -194,17 +203,10 @@ class Gem::Resolv
|
|
|
194
203
|
File.open(@filename, 'rb') {|f|
|
|
195
204
|
f.each {|line|
|
|
196
205
|
line.sub!(/#.*/, '')
|
|
197
|
-
addr,
|
|
206
|
+
addr, *hostnames = line.split(/\s+/)
|
|
198
207
|
next unless addr
|
|
199
|
-
@addr2name[addr]
|
|
200
|
-
@
|
|
201
|
-
@addr2name[addr].concat(aliases)
|
|
202
|
-
@name2addr[hostname] = [] unless @name2addr.include? hostname
|
|
203
|
-
@name2addr[hostname] << addr
|
|
204
|
-
aliases.each {|n|
|
|
205
|
-
@name2addr[n] = [] unless @name2addr.include? n
|
|
206
|
-
@name2addr[n] << addr
|
|
207
|
-
}
|
|
208
|
+
(@addr2name[addr] ||= []).concat(hostnames)
|
|
209
|
+
hostnames.each {|hostname| (@name2addr[hostname] ||= []) << addr}
|
|
208
210
|
}
|
|
209
211
|
}
|
|
210
212
|
@name2addr.each {|name, arr| arr.reverse!}
|
|
@@ -403,13 +405,15 @@ class Gem::Resolv
|
|
|
403
405
|
# be a Gem::Resolv::IPv4 or Gem::Resolv::IPv6
|
|
404
406
|
|
|
405
407
|
def each_address(name)
|
|
406
|
-
each_resource(name, Resource::IN::A) {|resource| yield resource.address}
|
|
407
408
|
if use_ipv6?
|
|
408
409
|
each_resource(name, Resource::IN::AAAA) {|resource| yield resource.address}
|
|
409
410
|
end
|
|
411
|
+
each_resource(name, Resource::IN::A) {|resource| yield resource.address}
|
|
410
412
|
end
|
|
411
413
|
|
|
412
414
|
def use_ipv6? # :nodoc:
|
|
415
|
+
@config.lazy_initialize unless @config.instance_variable_get(:@initialized)
|
|
416
|
+
|
|
413
417
|
use_ipv6 = @config.use_ipv6?
|
|
414
418
|
unless use_ipv6.nil?
|
|
415
419
|
return use_ipv6
|
|
@@ -520,35 +524,40 @@ class Gem::Resolv
|
|
|
520
524
|
|
|
521
525
|
def fetch_resource(name, typeclass)
|
|
522
526
|
lazy_initialize
|
|
523
|
-
|
|
524
|
-
|
|
527
|
+
truncated = {}
|
|
528
|
+
requesters = {}
|
|
529
|
+
udp_requester = begin
|
|
530
|
+
make_udp_requester
|
|
525
531
|
rescue Errno::EACCES
|
|
526
532
|
# fall back to TCP
|
|
527
533
|
end
|
|
528
534
|
senders = {}
|
|
535
|
+
|
|
529
536
|
begin
|
|
530
|
-
@config.resolv(name)
|
|
531
|
-
requester ||= make_tcp_requester(nameserver, port)
|
|
537
|
+
@config.resolv(name) do |candidate, tout, nameserver, port|
|
|
532
538
|
msg = Message.new
|
|
533
539
|
msg.rd = 1
|
|
534
540
|
msg.add_question(candidate, typeclass)
|
|
535
|
-
|
|
541
|
+
|
|
542
|
+
requester = requesters.fetch([nameserver, port]) do
|
|
543
|
+
if !truncated[candidate] && udp_requester
|
|
544
|
+
udp_requester
|
|
545
|
+
else
|
|
546
|
+
requesters[[nameserver, port]] = make_tcp_requester(nameserver, port)
|
|
547
|
+
end
|
|
548
|
+
end
|
|
549
|
+
|
|
550
|
+
unless sender = senders[[candidate, requester, nameserver, port]]
|
|
536
551
|
sender = requester.sender(msg, candidate, nameserver, port)
|
|
537
552
|
next if !sender
|
|
538
|
-
senders[[candidate, nameserver, port]] = sender
|
|
553
|
+
senders[[candidate, requester, nameserver, port]] = sender
|
|
539
554
|
end
|
|
540
555
|
reply, reply_name = requester.request(sender, tout)
|
|
541
556
|
case reply.rcode
|
|
542
557
|
when RCode::NoError
|
|
543
558
|
if reply.tc == 1 and not Requester::TCP === requester
|
|
544
|
-
requester.close
|
|
545
559
|
# Retry via TCP:
|
|
546
|
-
|
|
547
|
-
senders = {}
|
|
548
|
-
# This will use TCP for all remaining candidates (assuming the
|
|
549
|
-
# current candidate does not already respond successfully via
|
|
550
|
-
# TCP). This makes sense because we already know the full
|
|
551
|
-
# response will not fit in an untruncated UDP packet.
|
|
560
|
+
truncated[candidate] = true
|
|
552
561
|
redo
|
|
553
562
|
else
|
|
554
563
|
yield(reply, reply_name)
|
|
@@ -559,9 +568,10 @@ class Gem::Resolv
|
|
|
559
568
|
else
|
|
560
569
|
raise Config::OtherResolvError.new(reply_name.to_s)
|
|
561
570
|
end
|
|
562
|
-
|
|
571
|
+
end
|
|
563
572
|
ensure
|
|
564
|
-
|
|
573
|
+
udp_requester&.close
|
|
574
|
+
requesters.each_value { |requester| requester&.close }
|
|
565
575
|
end
|
|
566
576
|
end
|
|
567
577
|
|
|
@@ -576,6 +586,11 @@ class Gem::Resolv
|
|
|
576
586
|
|
|
577
587
|
def make_tcp_requester(host, port) # :nodoc:
|
|
578
588
|
return Requester::TCP.new(host, port)
|
|
589
|
+
rescue Errno::ECONNREFUSED
|
|
590
|
+
# Treat a refused TCP connection attempt to a nameserver like a timeout,
|
|
591
|
+
# as Gem::Resolv::DNS::Config#resolv considers ResolvTimeout exceptions as a
|
|
592
|
+
# hint to try the next nameserver:
|
|
593
|
+
raise ResolvTimeout
|
|
579
594
|
end
|
|
580
595
|
|
|
581
596
|
def extract_resources(msg, name, typeclass) # :nodoc:
|
|
@@ -609,16 +624,10 @@ class Gem::Resolv
|
|
|
609
624
|
}
|
|
610
625
|
end
|
|
611
626
|
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
rescue NotImplementedError
|
|
617
|
-
rand(arg)
|
|
618
|
-
end
|
|
619
|
-
end
|
|
620
|
-
else
|
|
621
|
-
def self.random(arg) # :nodoc:
|
|
627
|
+
def self.random(arg) # :nodoc:
|
|
628
|
+
begin
|
|
629
|
+
Gem::SecureRandom.random_number(arg)
|
|
630
|
+
rescue NotImplementedError
|
|
622
631
|
rand(arg)
|
|
623
632
|
end
|
|
624
633
|
end
|
|
@@ -1807,7 +1816,6 @@ class Gem::Resolv
|
|
|
1807
1816
|
end
|
|
1808
1817
|
end
|
|
1809
1818
|
|
|
1810
|
-
|
|
1811
1819
|
##
|
|
1812
1820
|
# Base class for SvcParam. [RFC9460]
|
|
1813
1821
|
|
|
@@ -2506,7 +2514,6 @@ class Gem::Resolv
|
|
|
2506
2514
|
|
|
2507
2515
|
attr_reader :altitude
|
|
2508
2516
|
|
|
2509
|
-
|
|
2510
2517
|
def encode_rdata(msg) # :nodoc:
|
|
2511
2518
|
msg.put_bytes(@version)
|
|
2512
2519
|
msg.put_bytes(@ssize.scalar)
|
|
@@ -2544,8 +2551,70 @@ class Gem::Resolv
|
|
|
2544
2551
|
TypeValue = 255 # :nodoc:
|
|
2545
2552
|
end
|
|
2546
2553
|
|
|
2554
|
+
##
|
|
2555
|
+
# CAA resource record defined in RFC 8659
|
|
2556
|
+
#
|
|
2557
|
+
# These records identify certificate authority allowed to issue
|
|
2558
|
+
# certificates for the given domain.
|
|
2559
|
+
|
|
2560
|
+
class CAA < Resource
|
|
2561
|
+
TypeValue = 257
|
|
2562
|
+
|
|
2563
|
+
##
|
|
2564
|
+
# Creates a new CAA for +flags+, +tag+ and +value+.
|
|
2565
|
+
|
|
2566
|
+
def initialize(flags, tag, value)
|
|
2567
|
+
unless (0..255) === flags
|
|
2568
|
+
raise ArgumentError.new('flags must be an Integer between 0 and 255')
|
|
2569
|
+
end
|
|
2570
|
+
unless (1..15) === tag.bytesize
|
|
2571
|
+
raise ArgumentError.new('length of tag must be between 1 and 15')
|
|
2572
|
+
end
|
|
2573
|
+
|
|
2574
|
+
@flags = flags
|
|
2575
|
+
@tag = tag
|
|
2576
|
+
@value = value
|
|
2577
|
+
end
|
|
2578
|
+
|
|
2579
|
+
##
|
|
2580
|
+
# Flags for this proprty:
|
|
2581
|
+
# - Bit 0 : 0 = not critical, 1 = critical
|
|
2582
|
+
|
|
2583
|
+
attr_reader :flags
|
|
2584
|
+
|
|
2585
|
+
##
|
|
2586
|
+
# Property tag ("issue", "issuewild", "iodef"...).
|
|
2587
|
+
|
|
2588
|
+
attr_reader :tag
|
|
2589
|
+
|
|
2590
|
+
##
|
|
2591
|
+
# Property value.
|
|
2592
|
+
|
|
2593
|
+
attr_reader :value
|
|
2594
|
+
|
|
2595
|
+
##
|
|
2596
|
+
# Whether the critical flag is set on this property.
|
|
2597
|
+
|
|
2598
|
+
def critical?
|
|
2599
|
+
flags & 0x80 != 0
|
|
2600
|
+
end
|
|
2601
|
+
|
|
2602
|
+
def encode_rdata(msg) # :nodoc:
|
|
2603
|
+
msg.put_pack('C', @flags)
|
|
2604
|
+
msg.put_string(@tag)
|
|
2605
|
+
msg.put_bytes(@value)
|
|
2606
|
+
end
|
|
2607
|
+
|
|
2608
|
+
def self.decode_rdata(msg) # :nodoc:
|
|
2609
|
+
flags, = msg.get_unpack('C')
|
|
2610
|
+
tag = msg.get_string
|
|
2611
|
+
value = msg.get_bytes
|
|
2612
|
+
self.new flags, tag, value
|
|
2613
|
+
end
|
|
2614
|
+
end
|
|
2615
|
+
|
|
2547
2616
|
ClassInsensitiveTypes = [ # :nodoc:
|
|
2548
|
-
NS, CNAME, SOA, PTR, HINFO, MINFO, MX, TXT, LOC, ANY
|
|
2617
|
+
NS, CNAME, SOA, PTR, HINFO, MINFO, MX, TXT, LOC, ANY, CAA
|
|
2549
2618
|
]
|
|
2550
2619
|
|
|
2551
2620
|
##
|
|
@@ -2771,7 +2840,7 @@ class Gem::Resolv
|
|
|
2771
2840
|
attr_reader :target
|
|
2772
2841
|
|
|
2773
2842
|
##
|
|
2774
|
-
# The service
|
|
2843
|
+
# The service parameters for the target host.
|
|
2775
2844
|
|
|
2776
2845
|
attr_reader :params
|
|
2777
2846
|
|
|
@@ -3384,4 +3453,3 @@ class Gem::Resolv
|
|
|
3384
3453
|
AddressRegex = /(?:#{IPv4::Regex})|(?:#{IPv6::Regex})/
|
|
3385
3454
|
|
|
3386
3455
|
end
|
|
3387
|
-
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
Ruby is copyrighted free software by Yukihiro Matsumoto <matz@netlab.jp>.
|
|
2
|
+
You can redistribute it and/or modify it under either the terms of the
|
|
3
|
+
2-clause BSDL (see the file BSDL), or the conditions below:
|
|
4
|
+
|
|
5
|
+
1. You may make and give away verbatim copies of the source form of the
|
|
6
|
+
software without restriction, provided that you duplicate all of the
|
|
7
|
+
original copyright notices and associated disclaimers.
|
|
8
|
+
|
|
9
|
+
2. You may modify your copy of the software in any way, provided that
|
|
10
|
+
you do at least ONE of the following:
|
|
11
|
+
|
|
12
|
+
a. place your modifications in the Public Domain or otherwise
|
|
13
|
+
make them Freely Available, such as by posting said
|
|
14
|
+
modifications to Usenet or an equivalent medium, or by allowing
|
|
15
|
+
the author to include your modifications in the software.
|
|
16
|
+
|
|
17
|
+
b. use the modified software only within your corporation or
|
|
18
|
+
organization.
|
|
19
|
+
|
|
20
|
+
c. give non-standard binaries non-standard names, with
|
|
21
|
+
instructions on where to get the original software distribution.
|
|
22
|
+
|
|
23
|
+
d. make other distribution arrangements with the author.
|
|
24
|
+
|
|
25
|
+
3. You may distribute the software in object code or binary form,
|
|
26
|
+
provided that you do at least ONE of the following:
|
|
27
|
+
|
|
28
|
+
a. distribute the binaries and library files of the software,
|
|
29
|
+
together with instructions (in the manual page or equivalent)
|
|
30
|
+
on where to get the original distribution.
|
|
31
|
+
|
|
32
|
+
b. accompany the distribution with the machine-readable source of
|
|
33
|
+
the software.
|
|
34
|
+
|
|
35
|
+
c. give non-standard binaries non-standard names, with
|
|
36
|
+
instructions on where to get the original software distribution.
|
|
37
|
+
|
|
38
|
+
d. make other distribution arrangements with the author.
|
|
39
|
+
|
|
40
|
+
4. You may modify and include the part of the software into any other
|
|
41
|
+
software (possibly commercial). But some files in the distribution
|
|
42
|
+
are not written by the author, so that they are not under these terms.
|
|
43
|
+
|
|
44
|
+
For the list of those files and their copying conditions, see the
|
|
45
|
+
file LEGAL.
|
|
46
|
+
|
|
47
|
+
5. The scripts and library files supplied as input to or produced as
|
|
48
|
+
output from the software do not automatically fall under the
|
|
49
|
+
copyright of the software, but belong to whomever generated them,
|
|
50
|
+
and may be sold commercially, and may be aggregated with this
|
|
51
|
+
software.
|
|
52
|
+
|
|
53
|
+
6. THIS SOFTWARE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR
|
|
54
|
+
IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
|
|
55
|
+
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
|
56
|
+
PURPOSE.
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
# -*- coding: us-ascii -*-
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
require 'random/formatter'
|
|
5
|
+
|
|
6
|
+
# == Secure random number generator interface.
|
|
7
|
+
#
|
|
8
|
+
# This library is an interface to secure random number generators which are
|
|
9
|
+
# suitable for generating session keys in HTTP cookies, etc.
|
|
10
|
+
#
|
|
11
|
+
# You can use this library in your application by requiring it:
|
|
12
|
+
#
|
|
13
|
+
# require 'rubygems/vendor/securerandom/lib/securerandom'
|
|
14
|
+
#
|
|
15
|
+
# It supports the following secure random number generators:
|
|
16
|
+
#
|
|
17
|
+
# * openssl
|
|
18
|
+
# * /dev/urandom
|
|
19
|
+
# * Win32
|
|
20
|
+
#
|
|
21
|
+
# Gem::SecureRandom is extended by the Random::Formatter module which
|
|
22
|
+
# defines the following methods:
|
|
23
|
+
#
|
|
24
|
+
# * alphanumeric
|
|
25
|
+
# * base64
|
|
26
|
+
# * choose
|
|
27
|
+
# * gen_random
|
|
28
|
+
# * hex
|
|
29
|
+
# * rand
|
|
30
|
+
# * random_bytes
|
|
31
|
+
# * random_number
|
|
32
|
+
# * urlsafe_base64
|
|
33
|
+
# * uuid
|
|
34
|
+
#
|
|
35
|
+
# These methods are usable as class methods of Gem::SecureRandom such as
|
|
36
|
+
# +Gem::SecureRandom.hex+.
|
|
37
|
+
#
|
|
38
|
+
# If a secure random number generator is not available,
|
|
39
|
+
# +NotImplementedError+ is raised.
|
|
40
|
+
|
|
41
|
+
module Gem::SecureRandom
|
|
42
|
+
|
|
43
|
+
# The version
|
|
44
|
+
VERSION = "0.4.1"
|
|
45
|
+
|
|
46
|
+
class << self
|
|
47
|
+
# Returns a random binary string containing +size+ bytes.
|
|
48
|
+
#
|
|
49
|
+
# See Random.bytes
|
|
50
|
+
def bytes(n)
|
|
51
|
+
return gen_random(n)
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
# Compatibility methods for Ruby 3.2, we can remove this after dropping to support Ruby 3.2
|
|
55
|
+
def alphanumeric(n = nil, chars: ALPHANUMERIC)
|
|
56
|
+
n = 16 if n.nil?
|
|
57
|
+
choose(chars, n)
|
|
58
|
+
end if RUBY_VERSION < '3.3'
|
|
59
|
+
|
|
60
|
+
private
|
|
61
|
+
|
|
62
|
+
# :stopdoc:
|
|
63
|
+
|
|
64
|
+
# Implementation using OpenSSL
|
|
65
|
+
def gen_random_openssl(n)
|
|
66
|
+
return OpenSSL::Random.random_bytes(n)
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
# Implementation using system random device
|
|
70
|
+
def gen_random_urandom(n)
|
|
71
|
+
ret = Random.urandom(n)
|
|
72
|
+
unless ret
|
|
73
|
+
raise NotImplementedError, "No random device"
|
|
74
|
+
end
|
|
75
|
+
unless ret.length == n
|
|
76
|
+
raise NotImplementedError, "Unexpected partial read from random device: only #{ret.length} for #{n} bytes"
|
|
77
|
+
end
|
|
78
|
+
ret
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
begin
|
|
82
|
+
# Check if Random.urandom is available
|
|
83
|
+
Random.urandom(1)
|
|
84
|
+
alias gen_random gen_random_urandom
|
|
85
|
+
rescue RuntimeError
|
|
86
|
+
begin
|
|
87
|
+
require 'openssl'
|
|
88
|
+
rescue NoMethodError
|
|
89
|
+
raise NotImplementedError, "No random device"
|
|
90
|
+
else
|
|
91
|
+
alias gen_random gen_random_openssl
|
|
92
|
+
end
|
|
93
|
+
end
|
|
94
|
+
|
|
95
|
+
# :startdoc:
|
|
96
|
+
|
|
97
|
+
# Generate random data bytes for Random::Formatter
|
|
98
|
+
public :gen_random
|
|
99
|
+
end
|
|
100
|
+
end
|
|
101
|
+
|
|
102
|
+
Gem::SecureRandom.extend(Random::Formatter)
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
# Vendored files do not need to be documented
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
Ruby is copyrighted free software by Yukihiro Matsumoto <matz@netlab.jp>.
|
|
2
|
+
You can redistribute it and/or modify it under either the terms of the
|
|
3
|
+
2-clause BSDL (see the file BSDL), or the conditions below:
|
|
4
|
+
|
|
5
|
+
1. You may make and give away verbatim copies of the source form of the
|
|
6
|
+
software without restriction, provided that you duplicate all of the
|
|
7
|
+
original copyright notices and associated disclaimers.
|
|
8
|
+
|
|
9
|
+
2. You may modify your copy of the software in any way, provided that
|
|
10
|
+
you do at least ONE of the following:
|
|
11
|
+
|
|
12
|
+
a. place your modifications in the Public Domain or otherwise
|
|
13
|
+
make them Freely Available, such as by posting said
|
|
14
|
+
modifications to Usenet or an equivalent medium, or by allowing
|
|
15
|
+
the author to include your modifications in the software.
|
|
16
|
+
|
|
17
|
+
b. use the modified software only within your corporation or
|
|
18
|
+
organization.
|
|
19
|
+
|
|
20
|
+
c. give non-standard binaries non-standard names, with
|
|
21
|
+
instructions on where to get the original software distribution.
|
|
22
|
+
|
|
23
|
+
d. make other distribution arrangements with the author.
|
|
24
|
+
|
|
25
|
+
3. You may distribute the software in object code or binary form,
|
|
26
|
+
provided that you do at least ONE of the following:
|
|
27
|
+
|
|
28
|
+
a. distribute the binaries and library files of the software,
|
|
29
|
+
together with instructions (in the manual page or equivalent)
|
|
30
|
+
on where to get the original distribution.
|
|
31
|
+
|
|
32
|
+
b. accompany the distribution with the machine-readable source of
|
|
33
|
+
the software.
|
|
34
|
+
|
|
35
|
+
c. give non-standard binaries non-standard names, with
|
|
36
|
+
instructions on where to get the original software distribution.
|
|
37
|
+
|
|
38
|
+
d. make other distribution arrangements with the author.
|
|
39
|
+
|
|
40
|
+
4. You may modify and include the part of the software into any other
|
|
41
|
+
software (possibly commercial). But some files in the distribution
|
|
42
|
+
are not written by the author, so that they are not under these terms.
|
|
43
|
+
|
|
44
|
+
For the list of those files and their copying conditions, see the
|
|
45
|
+
file LEGAL.
|
|
46
|
+
|
|
47
|
+
5. The scripts and library files supplied as input to or produced as
|
|
48
|
+
output from the software do not automatically fall under the
|
|
49
|
+
copyright of the software, but belong to whomever generated them,
|
|
50
|
+
and may be sold commercially, and may be aggregated with this
|
|
51
|
+
software.
|
|
52
|
+
|
|
53
|
+
6. THIS SOFTWARE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR
|
|
54
|
+
IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
|
|
55
|
+
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
|
56
|
+
PURPOSE.
|
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
#
|
|
4
4
|
# == Synopsis
|
|
5
5
|
#
|
|
6
|
-
# require 'rubygems/timeout/lib/timeout'
|
|
7
|
-
# status = Gem::Timeout
|
|
6
|
+
# require 'rubygems/vendor/timeout/lib/timeout'
|
|
7
|
+
# status = Gem::Timeout.timeout(5) {
|
|
8
8
|
# # Something that should be interrupted if it takes more than 5 seconds...
|
|
9
9
|
# }
|
|
10
10
|
#
|
|
@@ -13,28 +13,25 @@
|
|
|
13
13
|
# Gem::Timeout provides a way to auto-terminate a potentially long-running
|
|
14
14
|
# operation if it hasn't finished in a fixed amount of time.
|
|
15
15
|
#
|
|
16
|
-
# Previous versions didn't use a module for namespacing, however
|
|
17
|
-
# #timeout is provided for backwards compatibility. You
|
|
18
|
-
# should prefer Gem::Timeout.timeout instead.
|
|
19
|
-
#
|
|
20
16
|
# == Copyright
|
|
21
17
|
#
|
|
22
18
|
# Copyright:: (C) 2000 Network Applied Communication Laboratory, Inc.
|
|
23
19
|
# Copyright:: (C) 2000 Information-technology Promotion Agency, Japan
|
|
24
20
|
|
|
25
21
|
module Gem::Timeout
|
|
26
|
-
|
|
22
|
+
# The version
|
|
23
|
+
VERSION = "0.4.3"
|
|
27
24
|
|
|
28
25
|
# Internal error raised to when a timeout is triggered.
|
|
29
26
|
class ExitException < Exception
|
|
30
|
-
def exception(*)
|
|
27
|
+
def exception(*) # :nodoc:
|
|
31
28
|
self
|
|
32
29
|
end
|
|
33
30
|
end
|
|
34
31
|
|
|
35
32
|
# Raised by Gem::Timeout.timeout when the block times out.
|
|
36
33
|
class Error < RuntimeError
|
|
37
|
-
def self.handle_timeout(message)
|
|
34
|
+
def self.handle_timeout(message) # :nodoc:
|
|
38
35
|
exc = ExitException.new(message)
|
|
39
36
|
|
|
40
37
|
begin
|
|
@@ -144,9 +141,10 @@ module Gem::Timeout
|
|
|
144
141
|
# Perform an operation in a block, raising an error if it takes longer than
|
|
145
142
|
# +sec+ seconds to complete.
|
|
146
143
|
#
|
|
147
|
-
# +sec+:: Number of seconds to wait for the block to terminate. Any number
|
|
148
|
-
# may be used, including Floats to specify fractional seconds. A
|
|
144
|
+
# +sec+:: Number of seconds to wait for the block to terminate. Any non-negative number
|
|
145
|
+
# or nil may be used, including Floats to specify fractional seconds. A
|
|
149
146
|
# value of 0 or +nil+ will execute the block without any timeout.
|
|
147
|
+
# Any negative number will raise an ArgumentError.
|
|
150
148
|
# +klass+:: Exception Class to raise if the block fails to terminate
|
|
151
149
|
# in +sec+ seconds. Omitting will use the default, Gem::Timeout::Error
|
|
152
150
|
# +message+:: Error message to raise with Exception Class.
|
|
@@ -168,6 +166,7 @@ module Gem::Timeout
|
|
|
168
166
|
# a module method, so you can call it directly as Gem::Timeout.timeout().
|
|
169
167
|
def timeout(sec, klass = nil, message = nil, &block) #:yield: +sec+
|
|
170
168
|
return yield(sec) if sec == nil or sec.zero?
|
|
169
|
+
raise ArgumentError, "Timeout sec must be a non-negative number" if 0 > sec
|
|
171
170
|
|
|
172
171
|
message ||= "execution expired"
|
|
173
172
|
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
# Vendored files do not need to be documented
|
|
@@ -32,7 +32,7 @@
|
|
|
32
32
|
# method, which fetches the array of child nodes and then iterates over that
|
|
33
33
|
# array using the user-supplied block.
|
|
34
34
|
#
|
|
35
|
-
# require 'rubygems/tsort/lib/tsort'
|
|
35
|
+
# require 'rubygems/vendor/tsort/lib/tsort'
|
|
36
36
|
#
|
|
37
37
|
# class Hash
|
|
38
38
|
# include Gem::TSort
|
|
@@ -52,7 +52,7 @@
|
|
|
52
52
|
#
|
|
53
53
|
# A very simple `make' like tool can be implemented as follows:
|
|
54
54
|
#
|
|
55
|
-
# require 'rubygems/tsort/lib/tsort'
|
|
55
|
+
# require 'rubygems/vendor/tsort/lib/tsort'
|
|
56
56
|
#
|
|
57
57
|
# class Make
|
|
58
58
|
# def initialize
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
# Vendored files do not need to be documented
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
Ruby is copyrighted free software by Yukihiro Matsumoto <matz@netlab.jp>.
|
|
2
|
+
You can redistribute it and/or modify it under either the terms of the
|
|
3
|
+
2-clause BSDL (see the file BSDL), or the conditions below:
|
|
4
|
+
|
|
5
|
+
1. You may make and give away verbatim copies of the source form of the
|
|
6
|
+
software without restriction, provided that you duplicate all of the
|
|
7
|
+
original copyright notices and associated disclaimers.
|
|
8
|
+
|
|
9
|
+
2. You may modify your copy of the software in any way, provided that
|
|
10
|
+
you do at least ONE of the following:
|
|
11
|
+
|
|
12
|
+
a. place your modifications in the Public Domain or otherwise
|
|
13
|
+
make them Freely Available, such as by posting said
|
|
14
|
+
modifications to Usenet or an equivalent medium, or by allowing
|
|
15
|
+
the author to include your modifications in the software.
|
|
16
|
+
|
|
17
|
+
b. use the modified software only within your corporation or
|
|
18
|
+
organization.
|
|
19
|
+
|
|
20
|
+
c. give non-standard binaries non-standard names, with
|
|
21
|
+
instructions on where to get the original software distribution.
|
|
22
|
+
|
|
23
|
+
d. make other distribution arrangements with the author.
|
|
24
|
+
|
|
25
|
+
3. You may distribute the software in object code or binary form,
|
|
26
|
+
provided that you do at least ONE of the following:
|
|
27
|
+
|
|
28
|
+
a. distribute the binaries and library files of the software,
|
|
29
|
+
together with instructions (in the manual page or equivalent)
|
|
30
|
+
on where to get the original distribution.
|
|
31
|
+
|
|
32
|
+
b. accompany the distribution with the machine-readable source of
|
|
33
|
+
the software.
|
|
34
|
+
|
|
35
|
+
c. give non-standard binaries non-standard names, with
|
|
36
|
+
instructions on where to get the original software distribution.
|
|
37
|
+
|
|
38
|
+
d. make other distribution arrangements with the author.
|
|
39
|
+
|
|
40
|
+
4. You may modify and include the part of the software into any other
|
|
41
|
+
software (possibly commercial). But some files in the distribution
|
|
42
|
+
are not written by the author, so that they are not under these terms.
|
|
43
|
+
|
|
44
|
+
For the list of those files and their copying conditions, see the
|
|
45
|
+
file LEGAL.
|
|
46
|
+
|
|
47
|
+
5. The scripts and library files supplied as input to or produced as
|
|
48
|
+
output from the software do not automatically fall under the
|
|
49
|
+
copyright of the software, but belong to whomever generated them,
|
|
50
|
+
and may be sold commercially, and may be aggregated with this
|
|
51
|
+
software.
|
|
52
|
+
|
|
53
|
+
6. THIS SOFTWARE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR
|
|
54
|
+
IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
|
|
55
|
+
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
|
56
|
+
PURPOSE.
|