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
@@ -13,6 +13,8 @@ require_relative "stub_specification"
|
|
13
13
|
require_relative "platform"
|
14
14
|
require_relative "util/list"
|
15
15
|
|
16
|
+
require "rbconfig"
|
17
|
+
|
16
18
|
##
|
17
19
|
# The Specification class contains the information for a gem. Typically
|
18
20
|
# defined in a .gemspec file or a Rakefile, and looks like this:
|
@@ -106,7 +108,7 @@ class Gem::Specification < Gem::BasicSpecification
|
|
106
108
|
@load_cache = {} # :nodoc:
|
107
109
|
@load_cache_mutex = Thread::Mutex.new
|
108
110
|
|
109
|
-
VALID_NAME_PATTERN = /\A[a-zA-Z0-9\.\-\_]+\z
|
111
|
+
VALID_NAME_PATTERN = /\A[a-zA-Z0-9\.\-\_]+\z/ # :nodoc:
|
110
112
|
|
111
113
|
# :startdoc:
|
112
114
|
|
@@ -125,35 +127,35 @@ class Gem::Specification < Gem::BasicSpecification
|
|
125
127
|
# Map of attribute names to default values.
|
126
128
|
|
127
129
|
@@default_value = {
|
128
|
-
:
|
129
|
-
:
|
130
|
-
:
|
131
|
-
:
|
132
|
-
:
|
133
|
-
:
|
134
|
-
:
|
135
|
-
:
|
136
|
-
:
|
137
|
-
:
|
138
|
-
:
|
139
|
-
:
|
140
|
-
:
|
141
|
-
:
|
142
|
-
:
|
143
|
-
:
|
144
|
-
:
|
145
|
-
:
|
146
|
-
:
|
147
|
-
:
|
148
|
-
:
|
149
|
-
:
|
150
|
-
:
|
151
|
-
:
|
152
|
-
:
|
153
|
-
:
|
154
|
-
:
|
155
|
-
:
|
156
|
-
:
|
130
|
+
authors: [],
|
131
|
+
autorequire: nil,
|
132
|
+
bindir: "bin",
|
133
|
+
cert_chain: [],
|
134
|
+
date: nil,
|
135
|
+
dependencies: [],
|
136
|
+
description: nil,
|
137
|
+
email: nil,
|
138
|
+
executables: [],
|
139
|
+
extensions: [],
|
140
|
+
extra_rdoc_files: [],
|
141
|
+
files: [],
|
142
|
+
homepage: nil,
|
143
|
+
licenses: [],
|
144
|
+
metadata: {},
|
145
|
+
name: nil,
|
146
|
+
platform: Gem::Platform::RUBY,
|
147
|
+
post_install_message: nil,
|
148
|
+
rdoc_options: [],
|
149
|
+
require_paths: ["lib"],
|
150
|
+
required_ruby_version: Gem::Requirement.default,
|
151
|
+
required_rubygems_version: Gem::Requirement.default,
|
152
|
+
requirements: [],
|
153
|
+
rubygems_version: Gem::VERSION,
|
154
|
+
signing_key: nil,
|
155
|
+
specification_version: CURRENT_SPECIFICATION_VERSION,
|
156
|
+
summary: nil,
|
157
|
+
test_files: [],
|
158
|
+
version: nil,
|
157
159
|
}.freeze
|
158
160
|
|
159
161
|
# rubocop:disable Style/MutableConstant
|
@@ -162,19 +164,17 @@ class Gem::Specification < Gem::BasicSpecification
|
|
162
164
|
|
163
165
|
@@default_value.each do |k,v|
|
164
166
|
INITIALIZE_CODE_FOR_DEFAULTS[k] = case v
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
else
|
172
|
-
"default_value(:#{k}).dup"
|
167
|
+
when [], {}, true, false, nil, Numeric, Symbol
|
168
|
+
v.inspect
|
169
|
+
when String
|
170
|
+
v.dump
|
171
|
+
else
|
172
|
+
"default_value(:#{k}).dup"
|
173
173
|
end
|
174
174
|
end
|
175
175
|
|
176
|
-
@@attributes = @@default_value.keys.sort_by
|
177
|
-
@@array_attributes = @@default_value.reject {|
|
176
|
+
@@attributes = @@default_value.keys.sort_by(&:to_s)
|
177
|
+
@@array_attributes = @@default_value.reject {|_k,v| v != [] }.keys
|
178
178
|
@@nil_attributes, @@non_nil_attributes = @@default_value.keys.partition do |k|
|
179
179
|
@@default_value[k].nil?
|
180
180
|
end
|
@@ -263,8 +263,7 @@ class Gem::Specification < Gem::BasicSpecification
|
|
263
263
|
@test_files,
|
264
264
|
add_bindir(@executables),
|
265
265
|
@extra_rdoc_files,
|
266
|
-
@extensions
|
267
|
-
].flatten.compact.uniq.sort
|
266
|
+
@extensions].flatten.compact.uniq.sort
|
268
267
|
end
|
269
268
|
|
270
269
|
##
|
@@ -503,8 +502,6 @@ class Gem::Specification < Gem::BasicSpecification
|
|
503
502
|
@platform = @new_platform.to_s
|
504
503
|
|
505
504
|
invalidate_memoized_attributes
|
506
|
-
|
507
|
-
@new_platform
|
508
505
|
end
|
509
506
|
|
510
507
|
##
|
@@ -571,7 +568,7 @@ class Gem::Specification < Gem::BasicSpecification
|
|
571
568
|
##
|
572
569
|
# Executables included in the gem.
|
573
570
|
#
|
574
|
-
# For example, the rake gem has rake as an executable. You don
|
571
|
+
# For example, the rake gem has rake as an executable. You don't specify the
|
575
572
|
# full path (as in bin/rake); all application-style files are expected to be
|
576
573
|
# found in bindir. These files must be executable Ruby files. Files that
|
577
574
|
# use bash or other interpreters will not work.
|
@@ -592,7 +589,7 @@ class Gem::Specification < Gem::BasicSpecification
|
|
592
589
|
# extconf.rb-style files used to compile extensions.
|
593
590
|
#
|
594
591
|
# These files will be run when the gem is installed, causing the C (or
|
595
|
-
# whatever) code to be compiled on the user
|
592
|
+
# whatever) code to be compiled on the user's machine.
|
596
593
|
#
|
597
594
|
# Usage:
|
598
595
|
#
|
@@ -743,7 +740,7 @@ class Gem::Specification < Gem::BasicSpecification
|
|
743
740
|
|
744
741
|
attr_accessor :activated
|
745
742
|
|
746
|
-
|
743
|
+
alias_method :activated?, :activated
|
747
744
|
|
748
745
|
##
|
749
746
|
# Autorequire was used by old RubyGems to automatically require a file.
|
@@ -786,7 +783,7 @@ class Gem::Specification < Gem::BasicSpecification
|
|
786
783
|
def self.each_gemspec(dirs) # :nodoc:
|
787
784
|
dirs.each do |dir|
|
788
785
|
Gem::Util.glob_files_in_dir("*.gemspec", dir).each do |path|
|
789
|
-
yield path
|
786
|
+
yield path
|
790
787
|
end
|
791
788
|
end
|
792
789
|
end
|
@@ -865,7 +862,7 @@ class Gem::Specification < Gem::BasicSpecification
|
|
865
862
|
installed_stubs = installed_stubs(Gem::Specification.dirs, pattern)
|
866
863
|
installed_stubs.select! {|s| Gem::Platform.match_spec? s } if match_platform
|
867
864
|
stubs = installed_stubs + default_stubs(pattern)
|
868
|
-
stubs = stubs.uniq
|
865
|
+
stubs = stubs.uniq(&:full_name)
|
869
866
|
_resort!(stubs)
|
870
867
|
stubs
|
871
868
|
end
|
@@ -946,7 +943,7 @@ class Gem::Specification < Gem::BasicSpecification
|
|
946
943
|
# Return full names of all specs in sorted order.
|
947
944
|
|
948
945
|
def self.all_names
|
949
|
-
|
946
|
+
_all.map(&:full_name)
|
950
947
|
end
|
951
948
|
|
952
949
|
##
|
@@ -972,7 +969,7 @@ class Gem::Specification < Gem::BasicSpecification
|
|
972
969
|
|
973
970
|
def self.dirs
|
974
971
|
@@dirs ||= Gem.path.collect do |dir|
|
975
|
-
File.join dir
|
972
|
+
File.join dir, "specifications"
|
976
973
|
end
|
977
974
|
end
|
978
975
|
|
@@ -981,7 +978,7 @@ class Gem::Specification < Gem::BasicSpecification
|
|
981
978
|
# this resets the list of known specs.
|
982
979
|
|
983
980
|
def self.dirs=(dirs)
|
984
|
-
|
981
|
+
reset
|
985
982
|
|
986
983
|
@@dirs = Array(dirs).map {|dir| File.join dir, "specifications" }
|
987
984
|
end
|
@@ -995,7 +992,7 @@ class Gem::Specification < Gem::BasicSpecification
|
|
995
992
|
def self.each
|
996
993
|
return enum_for(:each) unless block_given?
|
997
994
|
|
998
|
-
|
995
|
+
_all.each do |x|
|
999
996
|
yield x
|
1000
997
|
end
|
1001
998
|
end
|
@@ -1041,9 +1038,10 @@ class Gem::Specification < Gem::BasicSpecification
|
|
1041
1038
|
|
1042
1039
|
def self.find_by_path(path)
|
1043
1040
|
path = path.dup.freeze
|
1044
|
-
spec = @@spec_with_requirable_file[path] ||=
|
1041
|
+
spec = @@spec_with_requirable_file[path] ||= stubs.find do |s|
|
1045
1042
|
s.contains_requirable_file? path
|
1046
|
-
end || NOT_FOUND
|
1043
|
+
end || NOT_FOUND
|
1044
|
+
|
1047
1045
|
spec.to_spec
|
1048
1046
|
end
|
1049
1047
|
|
@@ -1060,9 +1058,10 @@ class Gem::Specification < Gem::BasicSpecification
|
|
1060
1058
|
end
|
1061
1059
|
|
1062
1060
|
def self.find_active_stub_by_path(path)
|
1063
|
-
stub = @@active_stub_with_requirable_file[path] ||=
|
1061
|
+
stub = @@active_stub_with_requirable_file[path] ||= stubs.find do |s|
|
1064
1062
|
s.activated? && s.contains_requirable_file?(path)
|
1065
|
-
end || NOT_FOUND
|
1063
|
+
end || NOT_FOUND
|
1064
|
+
|
1066
1065
|
stub.this
|
1067
1066
|
end
|
1068
1067
|
|
@@ -1079,7 +1078,7 @@ class Gem::Specification < Gem::BasicSpecification
|
|
1079
1078
|
|
1080
1079
|
def self.find_in_unresolved_tree(path)
|
1081
1080
|
unresolved_specs.each do |spec|
|
1082
|
-
spec.traverse do |
|
1081
|
+
spec.traverse do |_from_spec, _dep, to_spec, trail|
|
1083
1082
|
if to_spec.has_conflicts? || to_spec.conficts_when_loaded_with?(trail)
|
1084
1083
|
:next
|
1085
1084
|
else
|
@@ -1092,7 +1091,7 @@ class Gem::Specification < Gem::BasicSpecification
|
|
1092
1091
|
end
|
1093
1092
|
|
1094
1093
|
def self.unresolved_specs
|
1095
|
-
unresolved_deps.values.map
|
1094
|
+
unresolved_deps.values.map(&:to_specs).flatten
|
1096
1095
|
end
|
1097
1096
|
private_class_method :unresolved_specs
|
1098
1097
|
|
@@ -1144,12 +1143,14 @@ class Gem::Specification < Gem::BasicSpecification
|
|
1144
1143
|
result = {}
|
1145
1144
|
|
1146
1145
|
specs.reverse_each do |spec|
|
1147
|
-
|
1146
|
+
unless prerelease
|
1147
|
+
next if spec.version.prerelease?
|
1148
|
+
end
|
1148
1149
|
|
1149
1150
|
result[spec.name] = spec
|
1150
1151
|
end
|
1151
1152
|
|
1152
|
-
result.map(&:last).flatten.sort_by
|
1153
|
+
result.map(&:last).flatten.sort_by(&:name)
|
1153
1154
|
end
|
1154
1155
|
|
1155
1156
|
##
|
@@ -1158,36 +1159,33 @@ class Gem::Specification < Gem::BasicSpecification
|
|
1158
1159
|
def self.load(file)
|
1159
1160
|
return unless file
|
1160
1161
|
|
1161
|
-
|
1162
|
-
return
|
1162
|
+
spec = @load_cache_mutex.synchronize { @load_cache[file] }
|
1163
|
+
return spec if spec
|
1163
1164
|
|
1164
|
-
file = file.dup.tap(&Gem::UNTAINT)
|
1165
1165
|
return unless File.file?(file)
|
1166
1166
|
|
1167
1167
|
code = Gem.open_file(file, "r:UTF-8:-", &:read)
|
1168
1168
|
|
1169
|
-
code.tap(&Gem::UNTAINT)
|
1170
|
-
|
1171
1169
|
begin
|
1172
|
-
|
1170
|
+
spec = eval code, binding, file
|
1173
1171
|
|
1174
|
-
if Gem::Specification ===
|
1175
|
-
|
1172
|
+
if Gem::Specification === spec
|
1173
|
+
spec.loaded_from = File.expand_path file.to_s
|
1176
1174
|
@load_cache_mutex.synchronize do
|
1177
1175
|
prev = @load_cache[file]
|
1178
1176
|
if prev
|
1179
|
-
|
1177
|
+
spec = prev
|
1180
1178
|
else
|
1181
|
-
@load_cache[file] =
|
1179
|
+
@load_cache[file] = spec
|
1182
1180
|
end
|
1183
1181
|
end
|
1184
|
-
return
|
1182
|
+
return spec
|
1185
1183
|
end
|
1186
1184
|
|
1187
|
-
warn "[#{file}] isn't a Gem::Specification (#{
|
1185
|
+
warn "[#{file}] isn't a Gem::Specification (#{spec.class} instead)."
|
1188
1186
|
rescue SignalException, SystemExit
|
1189
1187
|
raise
|
1190
|
-
rescue SyntaxError,
|
1188
|
+
rescue SyntaxError, StandardError => e
|
1191
1189
|
warn "Invalid gemspec in [#{file}]: #{e}"
|
1192
1190
|
end
|
1193
1191
|
|
@@ -1275,7 +1273,7 @@ class Gem::Specification < Gem::BasicSpecification
|
|
1275
1273
|
|
1276
1274
|
def self.reset
|
1277
1275
|
@@dirs = nil
|
1278
|
-
Gem.pre_reset_hooks.each
|
1276
|
+
Gem.pre_reset_hooks.each(&:call)
|
1279
1277
|
clear_specs
|
1280
1278
|
clear_load_cache
|
1281
1279
|
unresolved = unresolved_deps
|
@@ -1294,7 +1292,7 @@ class Gem::Specification < Gem::BasicSpecification
|
|
1294
1292
|
warn "Please report a bug if this causes problems."
|
1295
1293
|
unresolved.clear
|
1296
1294
|
end
|
1297
|
-
Gem.post_reset_hooks.each
|
1295
|
+
Gem.post_reset_hooks.each(&:call)
|
1298
1296
|
end
|
1299
1297
|
|
1300
1298
|
# DOC: This method needs documented or nodoc'd
|
@@ -1307,12 +1305,13 @@ class Gem::Specification < Gem::BasicSpecification
|
|
1307
1305
|
|
1308
1306
|
def self._load(str)
|
1309
1307
|
Gem.load_yaml
|
1308
|
+
Gem.load_safe_marshal
|
1310
1309
|
|
1311
1310
|
yaml_set = false
|
1312
1311
|
retry_count = 0
|
1313
1312
|
|
1314
1313
|
array = begin
|
1315
|
-
|
1314
|
+
Gem::SafeMarshal.safe_load str
|
1316
1315
|
rescue ArgumentError => e
|
1317
1316
|
# Avoid an infinite retry loop when the argument error has nothing to do
|
1318
1317
|
# with the classes not being defined.
|
@@ -1442,7 +1441,7 @@ class Gem::Specification < Gem::BasicSpecification
|
|
1442
1441
|
# there are conflicts upon activation.
|
1443
1442
|
|
1444
1443
|
def activate
|
1445
|
-
other = Gem.loaded_specs[
|
1444
|
+
other = Gem.loaded_specs[name]
|
1446
1445
|
if other
|
1447
1446
|
check_version_conflict other
|
1448
1447
|
return false
|
@@ -1453,7 +1452,7 @@ class Gem::Specification < Gem::BasicSpecification
|
|
1453
1452
|
activate_dependencies
|
1454
1453
|
add_self_to_load_path
|
1455
1454
|
|
1456
|
-
Gem.loaded_specs[
|
1455
|
+
Gem.loaded_specs[name] = self
|
1457
1456
|
@activated = true
|
1458
1457
|
@loaded = true
|
1459
1458
|
|
@@ -1468,7 +1467,7 @@ class Gem::Specification < Gem::BasicSpecification
|
|
1468
1467
|
def activate_dependencies
|
1469
1468
|
unresolved = Gem::Specification.unresolved_deps
|
1470
1469
|
|
1471
|
-
|
1470
|
+
runtime_dependencies.each do |spec_dep|
|
1472
1471
|
if loaded = Gem.loaded_specs[spec_dep.name]
|
1473
1472
|
next if spec_dep.matches_spec? loaded
|
1474
1473
|
|
@@ -1482,7 +1481,7 @@ class Gem::Specification < Gem::BasicSpecification
|
|
1482
1481
|
begin
|
1483
1482
|
specs = spec_dep.to_specs
|
1484
1483
|
rescue Gem::MissingSpecError => e
|
1485
|
-
raise Gem::MissingSpecError.new(e.name, e.requirement, "at: #{
|
1484
|
+
raise Gem::MissingSpecError.new(e.name, e.requirement, "at: #{spec_file}")
|
1486
1485
|
end
|
1487
1486
|
|
1488
1487
|
if specs.size == 1
|
@@ -1572,7 +1571,7 @@ class Gem::Specification < Gem::BasicSpecification
|
|
1572
1571
|
|
1573
1572
|
private :add_dependency_with_type
|
1574
1573
|
|
1575
|
-
|
1574
|
+
alias_method :add_dependency, :add_runtime_dependency
|
1576
1575
|
|
1577
1576
|
##
|
1578
1577
|
# Adds this spec's require paths to LOAD_PATH, in the proper location.
|
@@ -1624,7 +1623,7 @@ class Gem::Specification < Gem::BasicSpecification
|
|
1624
1623
|
def build_args
|
1625
1624
|
if File.exist? build_info_file
|
1626
1625
|
build_info = File.readlines build_info_file
|
1627
|
-
build_info = build_info.map
|
1626
|
+
build_info = build_info.map(&:strip)
|
1628
1627
|
build_info.delete ""
|
1629
1628
|
build_info
|
1630
1629
|
else
|
@@ -1701,7 +1700,7 @@ class Gem::Specification < Gem::BasicSpecification
|
|
1701
1700
|
|
1702
1701
|
def conflicts
|
1703
1702
|
conflicts = {}
|
1704
|
-
|
1703
|
+
runtime_dependencies.each do |dep|
|
1705
1704
|
spec = Gem.loaded_specs[dep.name]
|
1706
1705
|
if spec && !spec.satisfies_requirement?(dep)
|
1707
1706
|
(conflicts[spec] ||= []) << dep
|
@@ -1717,7 +1716,7 @@ class Gem::Specification < Gem::BasicSpecification
|
|
1717
1716
|
|
1718
1717
|
def conficts_when_loaded_with?(list_of_specs) # :nodoc:
|
1719
1718
|
result = list_of_specs.any? do |spec|
|
1720
|
-
spec.
|
1719
|
+
spec.runtime_dependencies.any? {|dep| (dep.name == name) && !satisfies_requirement?(dep) }
|
1721
1720
|
end
|
1722
1721
|
result
|
1723
1722
|
end
|
@@ -1727,14 +1726,12 @@ class Gem::Specification < Gem::BasicSpecification
|
|
1727
1726
|
|
1728
1727
|
def has_conflicts?
|
1729
1728
|
return true unless Gem.env_requirement(name).satisfied_by?(version)
|
1730
|
-
|
1731
|
-
|
1732
|
-
|
1733
|
-
spec && !spec.satisfies_requirement?(dep)
|
1734
|
-
else
|
1735
|
-
false
|
1736
|
-
end
|
1729
|
+
runtime_dependencies.any? do |dep|
|
1730
|
+
spec = Gem.loaded_specs[dep.name]
|
1731
|
+
spec && !spec.satisfies_requirement?(dep)
|
1737
1732
|
end
|
1733
|
+
rescue ArgumentError => e
|
1734
|
+
raise e, "#{name} #{version}: #{e.message}"
|
1738
1735
|
end
|
1739
1736
|
|
1740
1737
|
# The date this gem was created.
|
@@ -1758,7 +1755,7 @@ class Gem::Specification < Gem::BasicSpecification
|
|
1758
1755
|
/\A
|
1759
1756
|
(\d{4})-(\d{2})-(\d{2})
|
1760
1757
|
(\s+ \d{2}:\d{2}:\d{2}\.\d+ \s* (Z | [-+]\d\d:\d\d) )?
|
1761
|
-
\Z/x
|
1758
|
+
\Z/x
|
1762
1759
|
|
1763
1760
|
##
|
1764
1761
|
# The date this gem was created
|
@@ -1770,17 +1767,17 @@ class Gem::Specification < Gem::BasicSpecification
|
|
1770
1767
|
# This is the cleanest, most-readable, faster-than-using-Date
|
1771
1768
|
# way to do it.
|
1772
1769
|
@date = case date
|
1773
|
-
|
1774
|
-
|
1775
|
-
|
1776
|
-
|
1777
|
-
|
1778
|
-
|
1779
|
-
|
1780
|
-
|
1781
|
-
|
1782
|
-
|
1783
|
-
|
1770
|
+
when String then
|
1771
|
+
if DateTimeFormat =~ date
|
1772
|
+
Time.utc($1.to_i, $2.to_i, $3.to_i)
|
1773
|
+
else
|
1774
|
+
raise(Gem::InvalidSpecificationException,
|
1775
|
+
"invalid date format in specification: #{date.inspect}")
|
1776
|
+
end
|
1777
|
+
when Time, DateLike then
|
1778
|
+
Time.utc(date.year, date.month, date.day)
|
1779
|
+
else
|
1780
|
+
TODAY
|
1784
1781
|
end
|
1785
1782
|
end
|
1786
1783
|
|
@@ -1830,7 +1827,7 @@ class Gem::Specification < Gem::BasicSpecification
|
|
1830
1827
|
Gem::Specification.each do |spec|
|
1831
1828
|
deps = check_dev ? spec.dependencies : spec.runtime_dependencies
|
1832
1829
|
deps.each do |dep|
|
1833
|
-
next unless
|
1830
|
+
next unless satisfies_requirement?(dep)
|
1834
1831
|
sats = []
|
1835
1832
|
find_all_satisfiers(dep) do |sat|
|
1836
1833
|
sats << sat
|
@@ -1845,7 +1842,7 @@ class Gem::Specification < Gem::BasicSpecification
|
|
1845
1842
|
# Returns all specs that matches this spec's runtime dependencies.
|
1846
1843
|
|
1847
1844
|
def dependent_specs
|
1848
|
-
runtime_dependencies.map
|
1845
|
+
runtime_dependencies.map(&:to_specs).flatten
|
1849
1846
|
end
|
1850
1847
|
|
1851
1848
|
##
|
@@ -1886,12 +1883,12 @@ class Gem::Specification < Gem::BasicSpecification
|
|
1886
1883
|
coder.add "name", @name
|
1887
1884
|
coder.add "version", @version
|
1888
1885
|
platform = case @original_platform
|
1889
|
-
|
1890
|
-
|
1891
|
-
|
1892
|
-
|
1893
|
-
|
1894
|
-
|
1886
|
+
when nil, "" then
|
1887
|
+
"ruby"
|
1888
|
+
when String then
|
1889
|
+
@original_platform
|
1890
|
+
else
|
1891
|
+
@original_platform.to_s
|
1895
1892
|
end
|
1896
1893
|
coder.add "platform", platform
|
1897
1894
|
|
@@ -2014,7 +2011,7 @@ class Gem::Specification < Gem::BasicSpecification
|
|
2014
2011
|
end
|
2015
2012
|
rubygems_deprecate :has_rdoc=
|
2016
2013
|
|
2017
|
-
|
2014
|
+
alias_method :has_rdoc?, :has_rdoc # :nodoc:
|
2018
2015
|
rubygems_deprecate :has_rdoc?
|
2019
2016
|
|
2020
2017
|
##
|
@@ -2025,7 +2022,7 @@ class Gem::Specification < Gem::BasicSpecification
|
|
2025
2022
|
end
|
2026
2023
|
|
2027
2024
|
# :stopdoc:
|
2028
|
-
|
2025
|
+
alias_method :has_test_suite?, :has_unit_tests?
|
2029
2026
|
# :startdoc:
|
2030
2027
|
|
2031
2028
|
def hash # :nodoc:
|
@@ -2272,8 +2269,8 @@ class Gem::Specification < Gem::BasicSpecification
|
|
2272
2269
|
attributes.unshift :name
|
2273
2270
|
|
2274
2271
|
attributes.each do |attr_name|
|
2275
|
-
current_value =
|
2276
|
-
current_value = current_value.sort if
|
2272
|
+
current_value = send attr_name
|
2273
|
+
current_value = current_value.sort if [:files, :test_files].include? attr_name
|
2277
2274
|
next unless current_value != default_value(attr_name) ||
|
2278
2275
|
self.class.required_attribute?(attr_name)
|
2279
2276
|
|
@@ -2297,7 +2294,7 @@ class Gem::Specification < Gem::BasicSpecification
|
|
2297
2294
|
# that is already loaded (+other+)
|
2298
2295
|
|
2299
2296
|
def check_version_conflict(other) # :nodoc:
|
2300
|
-
return if
|
2297
|
+
return if version == other.version
|
2301
2298
|
|
2302
2299
|
# This gem is already loaded. If the currently loaded gem is not in the
|
2303
2300
|
# list of candidate gems, then we have a version conflict.
|
@@ -2305,7 +2302,7 @@ class Gem::Specification < Gem::BasicSpecification
|
|
2305
2302
|
msg = "can't activate #{full_name}, already activated #{other.full_name}"
|
2306
2303
|
|
2307
2304
|
e = Gem::LoadError.new msg
|
2308
|
-
e.name =
|
2305
|
+
e.name = name
|
2309
2306
|
|
2310
2307
|
raise e
|
2311
2308
|
end
|
@@ -2397,7 +2394,7 @@ class Gem::Specification < Gem::BasicSpecification
|
|
2397
2394
|
# True if this gem has the same attributes as +other+.
|
2398
2395
|
|
2399
2396
|
def same_attributes?(spec)
|
2400
|
-
@@attributes.all? {|name,
|
2397
|
+
@@attributes.all? {|name, _default| send(name) == spec.send(name) }
|
2401
2398
|
end
|
2402
2399
|
|
2403
2400
|
private :same_attributes?
|
@@ -2534,7 +2531,7 @@ class Gem::Specification < Gem::BasicSpecification
|
|
2534
2531
|
|
2535
2532
|
@@attributes.each do |attr_name|
|
2536
2533
|
next if handled.include? attr_name
|
2537
|
-
current_value =
|
2534
|
+
current_value = send(attr_name)
|
2538
2535
|
if current_value != default_value(attr_name) || self.class.required_attribute?(attr_name)
|
2539
2536
|
result << " s.#{attr_name} = #{ruby_code current_value}"
|
2540
2537
|
end
|
@@ -2617,10 +2614,9 @@ class Gem::Specification < Gem::BasicSpecification
|
|
2617
2614
|
def traverse(trail = [], visited = {}, &block)
|
2618
2615
|
trail.push(self)
|
2619
2616
|
begin
|
2620
|
-
|
2621
|
-
next unless dep.runtime?
|
2617
|
+
runtime_dependencies.each do |dep|
|
2622
2618
|
dep.matching_specs(true).each do |dep_spec|
|
2623
|
-
next if visited.
|
2619
|
+
next if visited.key?(dep_spec)
|
2624
2620
|
visited[dep_spec] = true
|
2625
2621
|
trail.push(dep_spec)
|
2626
2622
|
begin
|
@@ -2678,22 +2674,13 @@ class Gem::Specification < Gem::BasicSpecification
|
|
2678
2674
|
rubygems_deprecate :validate_permissions
|
2679
2675
|
|
2680
2676
|
##
|
2681
|
-
# Set the version to +version
|
2682
|
-
# required_rubygems_version if +version+ indicates it is a
|
2683
|
-
# prerelease.
|
2677
|
+
# Set the version to +version+.
|
2684
2678
|
|
2685
2679
|
def version=(version)
|
2686
2680
|
@version = Gem::Version.create(version)
|
2687
2681
|
return if @version.nil?
|
2688
2682
|
|
2689
|
-
# skip to set required_ruby_version when pre-released rubygems.
|
2690
|
-
# It caused to raise CircularDependencyError
|
2691
|
-
if @version.prerelease? && (@name.nil? || @name.strip != "rubygems")
|
2692
|
-
self.required_rubygems_version = "> 1.3.1"
|
2693
|
-
end
|
2694
2683
|
invalidate_memoized_attributes
|
2695
|
-
|
2696
|
-
@version
|
2697
2684
|
end
|
2698
2685
|
|
2699
2686
|
def stubbed?
|
@@ -2705,9 +2692,9 @@ class Gem::Specification < Gem::BasicSpecification
|
|
2705
2692
|
case ivar
|
2706
2693
|
when "date"
|
2707
2694
|
# Force Date to go through the extra coerce logic in date=
|
2708
|
-
self.date = val
|
2695
|
+
self.date = val
|
2709
2696
|
else
|
2710
|
-
instance_variable_set "@#{ivar}", val
|
2697
|
+
instance_variable_set "@#{ivar}", val
|
2711
2698
|
end
|
2712
2699
|
end
|
2713
2700
|
|
@@ -2724,11 +2711,11 @@ class Gem::Specification < Gem::BasicSpecification
|
|
2724
2711
|
end
|
2725
2712
|
|
2726
2713
|
nil_attributes.each do |attribute|
|
2727
|
-
default =
|
2714
|
+
default = default_value attribute
|
2728
2715
|
|
2729
2716
|
value = case default
|
2730
|
-
|
2731
|
-
|
2717
|
+
when Time, Numeric, Symbol, true, false, nil then default
|
2718
|
+
else default.dup
|
2732
2719
|
end
|
2733
2720
|
|
2734
2721
|
instance_variable_set "@#{attribute}", value
|