rubygems-update 2.7.11 → 3.0.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/.rubocop.yml +67 -0
- data/.travis.yml +24 -18
- data/CODE_OF_CONDUCT.md +10 -8
- data/CONTRIBUTING.md +148 -0
- data/History.txt +458 -8
- data/MAINTAINERS.txt +1 -0
- data/Manifest.txt +16 -9
- data/POLICIES.md +92 -0
- data/README.md +53 -26
- data/Rakefile +77 -211
- data/{UPGRADING.rdoc → UPGRADING.md} +31 -32
- data/appveyor.yml +20 -45
- data/bin/gem +1 -2
- data/bin/update_rubygems +2 -3
- data/bundler/CHANGELOG.md +65 -0
- data/bundler/bundler.gemspec +7 -1
- data/bundler/lib/bundler/build_metadata.rb +1 -1
- data/bundler/lib/bundler/cli/add.rb +15 -5
- data/bundler/lib/bundler/cli/binstubs.rb +8 -2
- data/bundler/lib/bundler/cli/doctor.rb +47 -1
- data/bundler/lib/bundler/cli/install.rb +8 -5
- data/bundler/lib/bundler/cli/list.rb +41 -5
- data/bundler/lib/bundler/cli/outdated.rb +7 -1
- data/bundler/lib/bundler/cli/pristine.rb +4 -0
- data/bundler/lib/bundler/cli/remove.rb +18 -0
- data/bundler/lib/bundler/cli.rb +63 -21
- data/bundler/lib/bundler/definition.rb +15 -16
- data/bundler/lib/bundler/dependency.rb +2 -2
- data/bundler/lib/bundler/dsl.rb +19 -3
- data/bundler/lib/bundler/feature_flag.rb +7 -0
- data/bundler/lib/bundler/gem_version_promoter.rb +4 -2
- data/bundler/lib/bundler/injector.rb +168 -9
- data/bundler/lib/bundler/installer/parallel_installer.rb +5 -0
- data/bundler/lib/bundler/installer.rb +29 -6
- data/bundler/lib/bundler/plugin/events.rb +61 -0
- data/bundler/lib/bundler/plugin.rb +10 -3
- data/bundler/lib/bundler/resolver.rb +2 -2
- data/bundler/lib/bundler/rubygems_gem_installer.rb +7 -0
- data/bundler/lib/bundler/runtime.rb +8 -2
- data/bundler/lib/bundler/settings/validator.rb +23 -0
- data/bundler/lib/bundler/settings.rb +24 -3
- data/bundler/lib/bundler/shared_helpers.rb +19 -3
- data/bundler/lib/bundler/source/metadata.rb +2 -3
- data/bundler/lib/bundler/source.rb +9 -9
- data/bundler/lib/bundler/templates/newgem/lib/newgem.rb.tt +1 -0
- data/bundler/lib/bundler/version.rb +1 -1
- data/bundler/lib/bundler.rb +26 -8
- data/bundler/man/bundle-add.ronn +13 -2
- data/bundler/man/bundle-config.ronn +21 -0
- data/bundler/man/bundle-install.ronn +1 -1
- data/bundler/man/bundle-list.ronn +19 -1
- data/bundler/man/bundle-outdated.ronn +4 -0
- data/bundler/man/bundle-remove.ronn +23 -0
- data/bundler/man/bundle-update.ronn +1 -1
- data/bundler/man/bundle.ronn +3 -0
- data/lib/rubygems/available_set.rb +1 -1
- data/lib/rubygems/basic_specification.rb +12 -12
- data/lib/rubygems/bundler_version_finder.rb +3 -3
- data/lib/rubygems/command.rb +22 -15
- data/lib/rubygems/command_manager.rb +22 -5
- data/lib/rubygems/commands/build_command.rb +41 -7
- data/lib/rubygems/commands/cert_command.rb +45 -24
- data/lib/rubygems/commands/check_command.rb +1 -1
- data/lib/rubygems/commands/cleanup_command.rb +14 -7
- data/lib/rubygems/commands/contents_command.rb +14 -15
- data/lib/rubygems/commands/dependency_command.rb +17 -17
- data/lib/rubygems/commands/environment_command.rb +20 -1
- data/lib/rubygems/commands/fetch_command.rb +2 -3
- data/lib/rubygems/commands/generate_index_command.rb +2 -3
- data/lib/rubygems/commands/help_command.rb +12 -13
- data/lib/rubygems/commands/info_command.rb +33 -0
- data/lib/rubygems/commands/install_command.rb +21 -17
- data/lib/rubygems/commands/list_command.rb +0 -1
- data/lib/rubygems/commands/lock_command.rb +3 -4
- data/lib/rubygems/commands/open_command.rb +16 -10
- data/lib/rubygems/commands/owner_command.rb +21 -7
- data/lib/rubygems/commands/pristine_command.rb +23 -16
- data/lib/rubygems/commands/push_command.rb +19 -8
- data/lib/rubygems/commands/query_command.rb +24 -24
- data/lib/rubygems/commands/rdoc_command.rb +3 -4
- data/lib/rubygems/commands/search_command.rb +0 -1
- data/lib/rubygems/commands/server_command.rb +1 -2
- data/lib/rubygems/commands/setup_command.rb +86 -48
- data/lib/rubygems/commands/signin_command.rb +2 -1
- data/lib/rubygems/commands/signout_command.rb +2 -2
- data/lib/rubygems/commands/sources_command.rb +11 -12
- data/lib/rubygems/commands/specification_command.rb +7 -7
- data/lib/rubygems/commands/uninstall_command.rb +50 -18
- data/lib/rubygems/commands/unpack_command.rb +16 -7
- data/lib/rubygems/commands/update_command.rb +28 -23
- data/lib/rubygems/commands/which_command.rb +5 -8
- data/lib/rubygems/commands/yank_command.rb +1 -2
- data/lib/rubygems/compatibility.rb +1 -21
- data/lib/rubygems/config_file.rb +36 -36
- data/lib/rubygems/core_ext/kernel_require.rb +6 -6
- data/lib/rubygems/core_ext/kernel_warn.rb +45 -0
- data/lib/rubygems/defaults.rb +31 -19
- data/lib/rubygems/dependency.rb +15 -15
- data/lib/rubygems/dependency_installer.rb +30 -33
- data/lib/rubygems/dependency_list.rb +9 -10
- data/lib/rubygems/deprecate.rb +2 -3
- data/lib/rubygems/doctor.rb +5 -6
- data/lib/rubygems/errors.rb +3 -3
- data/lib/rubygems/exceptions.rb +11 -8
- data/lib/rubygems/ext/build_error.rb +0 -1
- data/lib/rubygems/ext/builder.rb +50 -23
- data/lib/rubygems/ext/cmake_builder.rb +2 -2
- data/lib/rubygems/ext/configure_builder.rb +2 -3
- data/lib/rubygems/ext/ext_conf_builder.rb +8 -7
- data/lib/rubygems/ext/rake_builder.rb +16 -18
- data/lib/rubygems/ext.rb +0 -1
- data/lib/rubygems/gem_runner.rb +2 -2
- data/lib/rubygems/gemcutter_utilities.rb +46 -12
- data/lib/rubygems/indexer.rb +19 -12
- data/lib/rubygems/install_default_message.rb +0 -1
- data/lib/rubygems/install_message.rb +0 -1
- data/lib/rubygems/install_update_options.rb +3 -29
- data/lib/rubygems/installer.rb +97 -55
- data/lib/rubygems/installer_test_case.rb +2 -16
- data/lib/rubygems/local_remote_options.rb +5 -4
- data/lib/rubygems/mock_gem_ui.rb +3 -4
- data/lib/rubygems/name_tuple.rb +4 -4
- data/lib/rubygems/package/digest_io.rb +3 -4
- data/lib/rubygems/package/file_source.rb +3 -4
- data/lib/rubygems/package/io_source.rb +1 -2
- data/lib/rubygems/package/old.rb +8 -16
- data/lib/rubygems/package/source.rb +0 -1
- data/lib/rubygems/package/tar_header.rb +13 -4
- data/lib/rubygems/package/tar_reader/entry.rb +20 -4
- data/lib/rubygems/package/tar_reader.rb +2 -4
- data/lib/rubygems/package/tar_test_case.rb +2 -8
- data/lib/rubygems/package/tar_writer.rb +13 -15
- data/lib/rubygems/package.rb +90 -63
- data/lib/rubygems/package_task.rb +0 -1
- data/lib/rubygems/path_support.rb +16 -6
- data/lib/rubygems/platform.rb +4 -5
- data/lib/rubygems/psych_tree.rb +1 -1
- data/lib/rubygems/rdoc.rb +2 -313
- data/lib/rubygems/remote_fetcher.rb +29 -82
- data/lib/rubygems/request/connection_pools.rb +24 -13
- data/lib/rubygems/request/http_pool.rb +3 -4
- data/lib/rubygems/request/https_pool.rb +1 -3
- data/lib/rubygems/request.rb +17 -16
- data/lib/rubygems/request_set/gem_dependency_api.rb +46 -49
- data/lib/rubygems/request_set/lockfile/parser.rb +18 -29
- data/lib/rubygems/request_set/lockfile/tokenizer.rb +9 -9
- data/lib/rubygems/request_set/lockfile.rb +12 -12
- data/lib/rubygems/request_set.rb +52 -25
- data/lib/rubygems/requirement.rb +32 -21
- data/lib/rubygems/resolver/activation_request.rb +6 -6
- data/lib/rubygems/resolver/api_set.rb +5 -6
- data/lib/rubygems/resolver/api_specification.rb +2 -3
- data/lib/rubygems/resolver/best_set.rb +5 -6
- data/lib/rubygems/resolver/composed_set.rb +5 -6
- data/lib/rubygems/resolver/conflict.rb +5 -5
- data/lib/rubygems/resolver/current_set.rb +1 -2
- data/lib/rubygems/resolver/dependency_request.rb +4 -4
- data/lib/rubygems/resolver/git_set.rb +5 -6
- data/lib/rubygems/resolver/git_specification.rb +4 -5
- data/lib/rubygems/resolver/index_set.rb +5 -6
- data/lib/rubygems/resolver/index_specification.rb +3 -4
- data/lib/rubygems/resolver/installed_specification.rb +3 -4
- data/lib/rubygems/resolver/installer_set.rb +12 -12
- data/lib/rubygems/resolver/local_specification.rb +1 -2
- data/lib/rubygems/resolver/lock_set.rb +5 -6
- data/lib/rubygems/resolver/lock_specification.rb +7 -8
- data/lib/rubygems/resolver/requirement_list.rb +1 -1
- data/lib/rubygems/resolver/set.rb +2 -2
- data/lib/rubygems/resolver/source_set.rb +4 -5
- data/lib/rubygems/resolver/spec_specification.rb +1 -2
- data/lib/rubygems/resolver/specification.rb +10 -7
- data/lib/rubygems/resolver/stats.rb +1 -1
- data/lib/rubygems/resolver/vendor_set.rb +4 -5
- data/lib/rubygems/resolver/vendor_specification.rb +2 -3
- data/lib/rubygems/resolver.rb +14 -16
- data/lib/rubygems/s3_uri_signer.rb +183 -0
- data/lib/rubygems/safe_yaml.rb +18 -10
- data/lib/rubygems/security/policies.rb +1 -2
- data/lib/rubygems/security/policy.rb +25 -25
- data/lib/rubygems/security/signer.rb +72 -24
- data/lib/rubygems/security/trust_dir.rb +10 -10
- data/lib/rubygems/security.rb +21 -22
- data/lib/rubygems/security_option.rb +0 -1
- data/lib/rubygems/server.rb +21 -21
- data/lib/rubygems/source/git.rb +9 -10
- data/lib/rubygems/source/installed.rb +3 -4
- data/lib/rubygems/source/local.rb +7 -7
- data/lib/rubygems/source/lock.rb +4 -4
- data/lib/rubygems/source/specific_file.rb +5 -5
- data/lib/rubygems/source/vendor.rb +2 -3
- data/lib/rubygems/source.rb +16 -25
- data/lib/rubygems/source_list.rb +2 -2
- data/lib/rubygems/source_local.rb +0 -1
- data/lib/rubygems/spec_fetcher.rb +5 -6
- data/lib/rubygems/specification.rb +219 -558
- data/lib/rubygems/specification_policy.rb +407 -0
- data/lib/rubygems/stub_specification.rb +12 -17
- data/lib/rubygems/test_case.rb +161 -75
- data/lib/rubygems/test_utilities.rb +20 -35
- data/lib/rubygems/text.rb +6 -6
- data/lib/rubygems/uninstaller.rb +38 -27
- data/lib/rubygems/uri_formatter.rb +1 -2
- data/lib/rubygems/user_interaction.rb +37 -89
- data/lib/rubygems/util/licenses.rb +27 -1
- data/lib/rubygems/util/list.rb +1 -1
- data/lib/rubygems/util.rb +32 -14
- data/lib/rubygems/validator.rb +4 -5
- data/lib/rubygems/version.rb +15 -15
- data/lib/rubygems/version_option.rb +2 -3
- data/lib/rubygems.rb +71 -102
- data/rubygems-update.gemspec +43 -0
- data/setup.rb +2 -8
- data/test/rubygems/ca_cert.pem +74 -65
- data/test/rubygems/client.pem +103 -45
- data/test/rubygems/rubygems_plugin.rb +0 -1
- data/test/rubygems/simple_gem.rb +1 -1
- data/test/rubygems/ssl_cert.pem +78 -17
- data/test/rubygems/ssl_key.pem +25 -13
- data/test/rubygems/test_bundled_ca.rb +1 -1
- data/test/rubygems/test_config.rb +7 -2
- data/test/rubygems/test_gem.rb +205 -132
- data/test/rubygems/test_gem_bundler_version_finder.rb +4 -0
- data/test/rubygems/test_gem_command.rb +0 -1
- data/test/rubygems/test_gem_command_manager.rb +18 -3
- data/test/rubygems/test_gem_commands_build_command.rb +220 -15
- data/test/rubygems/test_gem_commands_cert_command.rb +69 -8
- data/test/rubygems/test_gem_commands_check_command.rb +1 -1
- data/test/rubygems/test_gem_commands_cleanup_command.rb +27 -1
- data/test/rubygems/test_gem_commands_contents_command.rb +1 -2
- data/test/rubygems/test_gem_commands_dependency_command.rb +33 -34
- data/test/rubygems/test_gem_commands_environment_command.rb +1 -0
- data/test/rubygems/test_gem_commands_fetch_command.rb +0 -1
- data/test/rubygems/test_gem_commands_generate_index_command.rb +0 -1
- data/test/rubygems/test_gem_commands_help_command.rb +7 -4
- data/test/rubygems/test_gem_commands_info_command.rb +44 -0
- data/test/rubygems/test_gem_commands_install_command.rb +79 -12
- data/test/rubygems/test_gem_commands_lock_command.rb +0 -1
- data/test/rubygems/test_gem_commands_open_command.rb +29 -0
- data/test/rubygems/test_gem_commands_outdated_command.rb +0 -1
- data/test/rubygems/test_gem_commands_owner_command.rb +93 -57
- data/test/rubygems/test_gem_commands_pristine_command.rb +65 -30
- data/test/rubygems/test_gem_commands_push_command.rb +54 -0
- data/test/rubygems/test_gem_commands_query_command.rb +102 -100
- data/test/rubygems/test_gem_commands_search_command.rb +0 -1
- data/test/rubygems/test_gem_commands_server_command.rb +0 -1
- data/test/rubygems/test_gem_commands_setup_command.rb +50 -15
- data/test/rubygems/test_gem_commands_signin_command.rb +1 -1
- data/test/rubygems/test_gem_commands_sources_command.rb +0 -1
- data/test/rubygems/test_gem_commands_specification_command.rb +2 -3
- data/test/rubygems/test_gem_commands_stale_command.rb +3 -2
- data/test/rubygems/test_gem_commands_uninstall_command.rb +161 -8
- data/test/rubygems/test_gem_commands_unpack_command.rb +17 -1
- data/test/rubygems/test_gem_commands_update_command.rb +19 -2
- data/test/rubygems/test_gem_commands_which_command.rb +0 -1
- data/test/rubygems/test_gem_commands_yank_command.rb +0 -1
- data/test/rubygems/test_gem_config_file.rb +4 -2
- data/test/rubygems/test_gem_dependency.rb +0 -1
- data/test/rubygems/test_gem_dependency_installer.rb +8 -5
- data/test/rubygems/test_gem_dependency_list.rb +6 -7
- data/test/rubygems/test_gem_dependency_resolution_error.rb +0 -1
- data/test/rubygems/test_gem_doctor.rb +1 -2
- data/test/rubygems/test_gem_ext_builder.rb +10 -23
- data/test/rubygems/test_gem_ext_cmake_builder.rb +5 -4
- data/test/rubygems/test_gem_ext_configure_builder.rb +3 -3
- data/test/rubygems/test_gem_ext_ext_conf_builder.rb +8 -9
- data/test/rubygems/test_gem_ext_rake_builder.rb +20 -5
- data/test/rubygems/test_gem_gem_runner.rb +0 -1
- data/test/rubygems/test_gem_gemcutter_utilities.rb +32 -6
- data/test/rubygems/test_gem_impossible_dependencies_error.rb +0 -1
- data/test/rubygems/test_gem_indexer.rb +16 -10
- data/test/rubygems/test_gem_install_update_options.rb +1 -20
- data/test/rubygems/test_gem_installer.rb +154 -119
- data/test/rubygems/test_gem_local_remote_options.rb +3 -3
- data/test/rubygems/test_gem_name_tuple.rb +0 -1
- data/test/rubygems/test_gem_package.rb +77 -31
- data/test/rubygems/test_gem_package_old.rb +0 -1
- data/test/rubygems/test_gem_package_tar_header.rb +42 -2
- data/test/rubygems/test_gem_package_tar_reader.rb +0 -1
- data/test/rubygems/test_gem_package_tar_reader_entry.rb +11 -0
- data/test/rubygems/test_gem_package_tar_writer.rb +43 -7
- data/test/rubygems/test_gem_package_task.rb +2 -2
- data/test/rubygems/test_gem_path_support.rb +28 -11
- data/test/rubygems/test_gem_platform.rb +4 -5
- data/test/rubygems/test_gem_rdoc.rb +1 -136
- data/test/rubygems/test_gem_remote_fetcher.rb +241 -141
- data/test/rubygems/test_gem_request.rb +9 -9
- data/test/rubygems/test_gem_request_connection_pools.rb +24 -3
- data/test/rubygems/test_gem_request_set.rb +5 -5
- data/test/rubygems/test_gem_request_set_gem_dependency_api.rb +82 -64
- data/test/rubygems/test_gem_request_set_lockfile.rb +1 -2
- data/test/rubygems/test_gem_request_set_lockfile_parser.rb +4 -9
- data/test/rubygems/test_gem_request_set_lockfile_tokenizer.rb +1 -1
- data/test/rubygems/test_gem_requirement.rb +24 -4
- data/test/rubygems/test_gem_resolver.rb +13 -17
- data/test/rubygems/test_gem_resolver_activation_request.rb +0 -1
- data/test/rubygems/test_gem_resolver_api_set.rb +0 -1
- data/test/rubygems/test_gem_resolver_api_specification.rb +0 -1
- data/test/rubygems/test_gem_resolver_best_set.rb +0 -1
- data/test/rubygems/test_gem_resolver_composed_set.rb +0 -1
- data/test/rubygems/test_gem_resolver_conflict.rb +0 -1
- data/test/rubygems/test_gem_resolver_dependency_request.rb +0 -1
- data/test/rubygems/test_gem_resolver_git_set.rb +0 -1
- data/test/rubygems/test_gem_resolver_git_specification.rb +0 -1
- data/test/rubygems/test_gem_resolver_index_set.rb +0 -1
- data/test/rubygems/test_gem_resolver_index_specification.rb +0 -1
- data/test/rubygems/test_gem_resolver_installed_specification.rb +0 -1
- data/test/rubygems/test_gem_resolver_installer_set.rb +2 -3
- data/test/rubygems/test_gem_resolver_local_specification.rb +0 -1
- data/test/rubygems/test_gem_resolver_lock_set.rb +0 -1
- data/test/rubygems/test_gem_resolver_lock_specification.rb +0 -1
- data/test/rubygems/test_gem_resolver_requirement_list.rb +0 -1
- data/test/rubygems/test_gem_resolver_specification.rb +1 -2
- data/test/rubygems/test_gem_resolver_vendor_set.rb +0 -1
- data/test/rubygems/test_gem_resolver_vendor_specification.rb +0 -1
- data/test/rubygems/test_gem_security.rb +1 -3
- data/test/rubygems/test_gem_security_policy.rb +5 -6
- data/test/rubygems/test_gem_security_signer.rb +4 -3
- data/test/rubygems/test_gem_security_trust_dir.rb +1 -2
- data/test/rubygems/test_gem_server.rb +4 -4
- data/test/rubygems/test_gem_source.rb +0 -13
- data/test/rubygems/test_gem_source_fetch_problem.rb +0 -1
- data/test/rubygems/test_gem_source_git.rb +0 -1
- data/test/rubygems/test_gem_source_installed.rb +0 -1
- data/test/rubygems/test_gem_source_lock.rb +0 -1
- data/test/rubygems/test_gem_source_vendor.rb +0 -1
- data/test/rubygems/test_gem_spec_fetcher.rb +0 -1
- data/test/rubygems/test_gem_specification.rb +366 -198
- data/test/rubygems/test_gem_stream_ui.rb +15 -32
- data/test/rubygems/test_gem_stub_specification.rb +0 -2
- data/test/rubygems/test_gem_text.rb +4 -0
- data/test/rubygems/test_gem_uninstaller.rb +42 -3
- data/test/rubygems/test_gem_unsatisfiable_dependency_error.rb +0 -1
- data/test/rubygems/test_gem_uri_formatter.rb +0 -1
- data/test/rubygems/test_gem_util.rb +31 -11
- data/test/rubygems/test_gem_validator.rb +0 -1
- data/test/rubygems/test_gem_version.rb +11 -11
- data/test/rubygems/test_gem_version_option.rb +0 -1
- data/test/rubygems/test_remote_fetch_error.rb +0 -1
- data/test/rubygems/test_require.rb +67 -52
- data/util/CL2notes +1 -2
- data/util/ci +20 -12
- data/util/cops/deprecations.rb +52 -0
- data/util/create_certs.rb +6 -7
- data/util/create_certs.sh +27 -0
- data/util/create_encrypted_key.rb +4 -5
- data/util/patch_with_prs.rb +1 -1
- data/util/rubocop +8 -0
- data/util/update_bundled_ca_certificates.rb +12 -13
- data/util/update_changelog.rb +1 -1
- metadata +61 -51
- data/.autotest +0 -71
- data/.document +0 -5
- data/CONTRIBUTING.rdoc +0 -130
- data/CVE-2013-4287.txt +0 -35
- data/CVE-2013-4363.txt +0 -45
- data/CVE-2015-3900.txt +0 -40
- data/POLICIES.rdoc +0 -74
- data/test/rubygems/fix_openssl_warnings.rb +0 -13
data/lib/rubygems/dependency.rb
CHANGED
@@ -19,7 +19,7 @@ class Gem::Dependency
|
|
19
19
|
TYPES = [
|
20
20
|
:development,
|
21
21
|
:runtime,
|
22
|
-
]
|
22
|
+
].freeze
|
23
23
|
|
24
24
|
##
|
25
25
|
# Dependency name or regular expression.
|
@@ -36,7 +36,7 @@ class Gem::Dependency
|
|
36
36
|
# argument can optionally be the dependency type, which defaults to
|
37
37
|
# <tt>:runtime</tt>.
|
38
38
|
|
39
|
-
def initialize
|
39
|
+
def initialize(name, *requirements)
|
40
40
|
case name
|
41
41
|
when String then # ok
|
42
42
|
when Regexp then
|
@@ -76,7 +76,7 @@ class Gem::Dependency
|
|
76
76
|
end
|
77
77
|
|
78
78
|
def inspect # :nodoc:
|
79
|
-
if prerelease?
|
79
|
+
if prerelease?
|
80
80
|
"<%s type=%p name=%p requirements=%p prerelease=ok>" %
|
81
81
|
[self.class, self.type, self.name, requirement.to_s]
|
82
82
|
else
|
@@ -100,7 +100,7 @@ class Gem::Dependency
|
|
100
100
|
@requirement.none?
|
101
101
|
end
|
102
102
|
|
103
|
-
def pretty_print
|
103
|
+
def pretty_print(q) # :nodoc:
|
104
104
|
q.group 1, 'Gem::Dependency.new(', ')' do
|
105
105
|
q.pp name
|
106
106
|
q.text ','
|
@@ -152,7 +152,7 @@ class Gem::Dependency
|
|
152
152
|
end
|
153
153
|
|
154
154
|
def to_s # :nodoc:
|
155
|
-
if type != :runtime
|
155
|
+
if type != :runtime
|
156
156
|
"#{name} (#{requirement}, #{type})"
|
157
157
|
else
|
158
158
|
"#{name} (#{requirement})"
|
@@ -170,7 +170,7 @@ class Gem::Dependency
|
|
170
170
|
@type == :runtime || !@type
|
171
171
|
end
|
172
172
|
|
173
|
-
def ==
|
173
|
+
def ==(other) # :nodoc:
|
174
174
|
Gem::Dependency === other &&
|
175
175
|
self.name == other.name &&
|
176
176
|
self.type == other.type &&
|
@@ -180,7 +180,7 @@ class Gem::Dependency
|
|
180
180
|
##
|
181
181
|
# Dependencies are ordered by name.
|
182
182
|
|
183
|
-
def <=>
|
183
|
+
def <=>(other)
|
184
184
|
self.name <=> other.name
|
185
185
|
end
|
186
186
|
|
@@ -190,7 +190,7 @@ class Gem::Dependency
|
|
190
190
|
# other has only an equal version requirement that satisfies this
|
191
191
|
# dependency.
|
192
192
|
|
193
|
-
def =~
|
193
|
+
def =~(other)
|
194
194
|
unless Gem::Dependency === other
|
195
195
|
return unless other.respond_to?(:name) && other.respond_to?(:version)
|
196
196
|
other = Gem::Dependency.new other.name, other.version
|
@@ -222,7 +222,7 @@ class Gem::Dependency
|
|
222
222
|
# NOTE: Unlike #matches_spec? this method does not return true when the
|
223
223
|
# version is a prerelease version unless this is a prerelease dependency.
|
224
224
|
|
225
|
-
def match?
|
225
|
+
def match?(obj, version=nil, allow_prerelease=false)
|
226
226
|
if !version
|
227
227
|
name = obj.name
|
228
228
|
version = obj.version
|
@@ -249,7 +249,7 @@ class Gem::Dependency
|
|
249
249
|
# returns true when +spec+ is a prerelease version even if this dependency
|
250
250
|
# is not a prerelease dependency.
|
251
251
|
|
252
|
-
def matches_spec?
|
252
|
+
def matches_spec?(spec)
|
253
253
|
return false unless name === spec.name
|
254
254
|
return true if requirement.none?
|
255
255
|
|
@@ -259,8 +259,8 @@ class Gem::Dependency
|
|
259
259
|
##
|
260
260
|
# Merges the requirements of +other+ into this dependency
|
261
261
|
|
262
|
-
def merge
|
263
|
-
unless name == other.name
|
262
|
+
def merge(other)
|
263
|
+
unless name == other.name
|
264
264
|
raise ArgumentError,
|
265
265
|
"#{self} and #{other} have different names"
|
266
266
|
end
|
@@ -275,13 +275,13 @@ class Gem::Dependency
|
|
275
275
|
self.class.new name, self_req.as_list.concat(other_req.as_list)
|
276
276
|
end
|
277
277
|
|
278
|
-
def matching_specs
|
278
|
+
def matching_specs(platform_only = false)
|
279
279
|
env_req = Gem.env_requirement(name)
|
280
280
|
matches = Gem::Specification.stubs_for(name).find_all { |spec|
|
281
281
|
requirement.satisfied_by?(spec.version) && env_req.satisfied_by?(spec.version)
|
282
282
|
}.map(&:to_spec)
|
283
283
|
|
284
|
-
Gem::BundlerVersionFinder.filter!(matches) if name == "bundler".freeze
|
284
|
+
Gem::BundlerVersionFinder.filter!(matches) if name == "bundler".freeze && !requirement.specific?
|
285
285
|
|
286
286
|
if platform_only
|
287
287
|
matches.reject! { |spec|
|
@@ -304,7 +304,7 @@ class Gem::Dependency
|
|
304
304
|
|
305
305
|
# TODO: check Gem.activated_spec[self.name] in case matches falls outside
|
306
306
|
|
307
|
-
if matches.empty?
|
307
|
+
if matches.empty?
|
308
308
|
specs = Gem::Specification.stubs_for name
|
309
309
|
|
310
310
|
if specs.empty?
|
@@ -15,6 +15,7 @@ require 'rubygems/deprecate'
|
|
15
15
|
class Gem::DependencyInstaller
|
16
16
|
|
17
17
|
include Gem::UserInteraction
|
18
|
+
extend Gem::Deprecate
|
18
19
|
|
19
20
|
DEFAULT_OPTIONS = { # :nodoc:
|
20
21
|
:env_shebang => false,
|
@@ -41,15 +42,6 @@ class Gem::DependencyInstaller
|
|
41
42
|
|
42
43
|
attr_reader :errors
|
43
44
|
|
44
|
-
##
|
45
|
-
#--
|
46
|
-
# TODO remove, no longer used
|
47
|
-
|
48
|
-
attr_reader :gems_to_install # :nodoc:
|
49
|
-
|
50
|
-
extend Gem::Deprecate
|
51
|
-
deprecate :gems_to_install, :none, 2016, 10
|
52
|
-
|
53
45
|
##
|
54
46
|
# List of gems installed by #install in alphabetic order
|
55
47
|
|
@@ -74,7 +66,7 @@ class Gem::DependencyInstaller
|
|
74
66
|
# :wrappers:: See Gem::Installer::new
|
75
67
|
# :build_args:: See Gem::Installer::new
|
76
68
|
|
77
|
-
def initialize
|
69
|
+
def initialize(options = {})
|
78
70
|
@only_install_dir = !!options[:install_dir]
|
79
71
|
@install_dir = options[:install_dir] || Gem.dir
|
80
72
|
@build_root = options[:build_root]
|
@@ -97,6 +89,9 @@ class Gem::DependencyInstaller
|
|
97
89
|
@build_args = options[:build_args]
|
98
90
|
@build_docs_in_background = options[:build_docs_in_background]
|
99
91
|
@install_as_default = options[:install_as_default]
|
92
|
+
@dir_mode = options[:dir_mode]
|
93
|
+
@data_mode = options[:data_mode]
|
94
|
+
@prog_mode = options[:prog_mode]
|
100
95
|
|
101
96
|
# Indicates that we should not try to update any deps unless
|
102
97
|
# we absolutely must.
|
@@ -115,7 +110,7 @@ class Gem::DependencyInstaller
|
|
115
110
|
#--
|
116
111
|
# TODO remove at RubyGems 4, no longer used
|
117
112
|
|
118
|
-
def add_found_dependencies
|
113
|
+
def add_found_dependencies(to_do, dependency_list) # :nodoc:
|
119
114
|
seen = {}
|
120
115
|
dependencies = Hash.new { |h, name| h[name] = Gem::Dependency.new name }
|
121
116
|
|
@@ -169,8 +164,8 @@ class Gem::DependencyInstaller
|
|
169
164
|
# Creates an AvailableSet to install from based on +dep_or_name+ and
|
170
165
|
# +version+
|
171
166
|
|
172
|
-
def available_set_for
|
173
|
-
if String === dep_or_name
|
167
|
+
def available_set_for(dep_or_name, version) # :nodoc:
|
168
|
+
if String === dep_or_name
|
174
169
|
find_spec_by_name_and_version dep_or_name, version, @prerelease
|
175
170
|
else
|
176
171
|
dep = dep_or_name.dup
|
@@ -203,7 +198,7 @@ class Gem::DependencyInstaller
|
|
203
198
|
# sources. Gems are sorted with newer gems preferred over older gems, and
|
204
199
|
# local gems preferred over remote gems.
|
205
200
|
|
206
|
-
def find_gems_with_sources
|
201
|
+
def find_gems_with_sources(dep, best_only=false) # :nodoc:
|
207
202
|
set = Gem::AvailableSet.new
|
208
203
|
|
209
204
|
if consider_local?
|
@@ -218,9 +213,8 @@ class Gem::DependencyInstaller
|
|
218
213
|
|
219
214
|
if consider_remote?
|
220
215
|
begin
|
221
|
-
#
|
216
|
+
# This is pulled from #spec_for_dependency to allow
|
222
217
|
# us to filter tuples before fetching specs.
|
223
|
-
#
|
224
218
|
tuples, errors = Gem::SpecFetcher.fetcher.search_for_dependency dep
|
225
219
|
|
226
220
|
if best_only && !tuples.empty?
|
@@ -277,16 +271,16 @@ class Gem::DependencyInstaller
|
|
277
271
|
# +version+. Returns an Array of specs and sources required for
|
278
272
|
# installation of the gem.
|
279
273
|
|
280
|
-
def find_spec_by_name_and_version
|
274
|
+
def find_spec_by_name_and_version(gem_name,
|
281
275
|
version = Gem::Requirement.default,
|
282
|
-
prerelease = false
|
276
|
+
prerelease = false)
|
283
277
|
set = Gem::AvailableSet.new
|
284
278
|
|
285
279
|
if consider_local?
|
286
|
-
if gem_name =~ /\.gem$/ and File.file? gem_name
|
280
|
+
if gem_name =~ /\.gem$/ and File.file? gem_name
|
287
281
|
src = Gem::Source::SpecificFile.new(gem_name)
|
288
282
|
set.add src.spec, src
|
289
|
-
elsif gem_name =~ /\.gem$/
|
283
|
+
elsif gem_name =~ /\.gem$/
|
290
284
|
Dir[gem_name].each do |name|
|
291
285
|
begin
|
292
286
|
src = Gem::Source::SpecificFile.new name
|
@@ -346,7 +340,7 @@ class Gem::DependencyInstaller
|
|
346
340
|
Gem::Specification.include?(spec)
|
347
341
|
}
|
348
342
|
|
349
|
-
unless dependency_list.ok? or @ignore_dependencies or @force
|
343
|
+
unless dependency_list.ok? or @ignore_dependencies or @force
|
350
344
|
reason = dependency_list.why_not_ok?.map { |k,v|
|
351
345
|
"#{k} requires #{v.join(", ")}"
|
352
346
|
}.join("; ")
|
@@ -357,7 +351,7 @@ class Gem::DependencyInstaller
|
|
357
351
|
end
|
358
352
|
deprecate :gather_dependencies, :none, 2018, 12
|
359
353
|
|
360
|
-
def in_background
|
354
|
+
def in_background(what) # :nodoc:
|
361
355
|
fork_happened = false
|
362
356
|
if @build_docs_in_background and Process.respond_to?(:fork)
|
363
357
|
begin
|
@@ -386,7 +380,7 @@ class Gem::DependencyInstaller
|
|
386
380
|
# c-1.a, b-1 and a-1.a will be installed. b-1.a will need to be installed
|
387
381
|
# separately.
|
388
382
|
|
389
|
-
def install
|
383
|
+
def install(dep_or_name, version = Gem::Requirement.default)
|
390
384
|
request_set = resolve_dependencies dep_or_name, version
|
391
385
|
|
392
386
|
@installed_gems = []
|
@@ -404,7 +398,10 @@ class Gem::DependencyInstaller
|
|
404
398
|
:user_install => @user_install,
|
405
399
|
:wrappers => @wrappers,
|
406
400
|
:build_root => @build_root,
|
407
|
-
:install_as_default => @install_as_default
|
401
|
+
:install_as_default => @install_as_default,
|
402
|
+
:dir_mode => @dir_mode,
|
403
|
+
:data_mode => @data_mode,
|
404
|
+
:prog_mode => @prog_mode,
|
408
405
|
}
|
409
406
|
options[:install_dir] = @install_dir if @only_install_dir
|
410
407
|
|
@@ -427,16 +424,16 @@ class Gem::DependencyInstaller
|
|
427
424
|
end
|
428
425
|
|
429
426
|
def install_development_deps # :nodoc:
|
430
|
-
if @development and @dev_shallow
|
427
|
+
if @development and @dev_shallow
|
431
428
|
:shallow
|
432
|
-
elsif @development
|
429
|
+
elsif @development
|
433
430
|
:all
|
434
431
|
else
|
435
432
|
:none
|
436
433
|
end
|
437
434
|
end
|
438
435
|
|
439
|
-
def resolve_dependencies
|
436
|
+
def resolve_dependencies(dep_or_name, version) # :nodoc:
|
440
437
|
request_set = Gem::RequestSet.new
|
441
438
|
request_set.development = @development
|
442
439
|
request_set.development_shallow = @dev_shallow
|
@@ -448,11 +445,11 @@ class Gem::DependencyInstaller
|
|
448
445
|
installer_set.ignore_installed = @only_install_dir
|
449
446
|
|
450
447
|
if consider_local?
|
451
|
-
if dep_or_name =~ /\.gem$/ and File.file? dep_or_name
|
448
|
+
if dep_or_name =~ /\.gem$/ and File.file? dep_or_name
|
452
449
|
src = Gem::Source::SpecificFile.new dep_or_name
|
453
450
|
installer_set.add_local dep_or_name, src.spec, src
|
454
451
|
version = src.spec.version if version == Gem::Requirement.default
|
455
|
-
elsif dep_or_name =~ /\.gem$/
|
452
|
+
elsif dep_or_name =~ /\.gem$/
|
456
453
|
Dir[dep_or_name].each do |name|
|
457
454
|
begin
|
458
455
|
src = Gem::Source::SpecificFile.new name
|
@@ -460,14 +457,14 @@ class Gem::DependencyInstaller
|
|
460
457
|
rescue Gem::Package::FormatError
|
461
458
|
end
|
462
459
|
end
|
463
|
-
|
460
|
+
# else This is a dependency. InstallerSet handles this case
|
464
461
|
end
|
465
462
|
end
|
466
463
|
|
467
464
|
dependency =
|
468
|
-
if spec = installer_set.local?(dep_or_name)
|
465
|
+
if spec = installer_set.local?(dep_or_name)
|
469
466
|
Gem::Dependency.new spec.name, version
|
470
|
-
elsif String === dep_or_name
|
467
|
+
elsif String === dep_or_name
|
471
468
|
Gem::Dependency.new dep_or_name, version
|
472
469
|
else
|
473
470
|
dep_or_name
|
@@ -481,7 +478,7 @@ class Gem::DependencyInstaller
|
|
481
478
|
|
482
479
|
request_set.always_install = installer_set.always_install
|
483
480
|
|
484
|
-
if @ignore_dependencies
|
481
|
+
if @ignore_dependencies
|
485
482
|
installer_set.ignore_dependencies = true
|
486
483
|
request_set.ignore_dependencies = true
|
487
484
|
request_set.soft_missing = true
|
@@ -40,7 +40,7 @@ class Gem::DependencyList
|
|
40
40
|
# Creates a new DependencyList. If +development+ is true, development
|
41
41
|
# dependencies will be included.
|
42
42
|
|
43
|
-
def initialize
|
43
|
+
def initialize(development = false)
|
44
44
|
@specs = []
|
45
45
|
|
46
46
|
@development = development
|
@@ -79,8 +79,8 @@ class Gem::DependencyList
|
|
79
79
|
seen = {}
|
80
80
|
|
81
81
|
sorted.each do |spec|
|
82
|
-
if index = seen[spec.name]
|
83
|
-
if result[index].version < spec.version
|
82
|
+
if index = seen[spec.name]
|
83
|
+
if result[index].version < spec.version
|
84
84
|
result[index] = spec
|
85
85
|
end
|
86
86
|
else
|
@@ -114,7 +114,7 @@ class Gem::DependencyList
|
|
114
114
|
why_not_ok?(:quick).empty?
|
115
115
|
end
|
116
116
|
|
117
|
-
def why_not_ok?
|
117
|
+
def why_not_ok?(quick = false)
|
118
118
|
unsatisfied = Hash.new { |h,k| h[k] = [] }
|
119
119
|
each do |spec|
|
120
120
|
spec.runtime_dependencies.each do |dep|
|
@@ -123,7 +123,7 @@ class Gem::DependencyList
|
|
123
123
|
dep.requirement.satisfied_by? installed_spec.version
|
124
124
|
}
|
125
125
|
|
126
|
-
unless inst or @specs.find { |s| s.satisfies_requirement? dep }
|
126
|
+
unless inst or @specs.find { |s| s.satisfies_requirement? dep }
|
127
127
|
unsatisfied[spec.name] << dep
|
128
128
|
return unsatisfied if quick
|
129
129
|
end
|
@@ -134,7 +134,7 @@ class Gem::DependencyList
|
|
134
134
|
end
|
135
135
|
|
136
136
|
##
|
137
|
-
#
|
137
|
+
# It is ok to remove a gemspec from the dependency list?
|
138
138
|
#
|
139
139
|
# If removing the gemspec creates breaks a currently ok dependency, then it
|
140
140
|
# is NOT ok to remove the gemspec.
|
@@ -172,7 +172,7 @@ class Gem::DependencyList
|
|
172
172
|
# satisfy items in +dependencies+ (a hash of gem names to arrays of
|
173
173
|
# dependencies).
|
174
174
|
|
175
|
-
def remove_specs_unsatisfied_by
|
175
|
+
def remove_specs_unsatisfied_by(dependencies)
|
176
176
|
specs.reject! { |spec|
|
177
177
|
dep = dependencies[spec.name]
|
178
178
|
dep and not dep.requirement.satisfied_by? spec.version
|
@@ -200,7 +200,7 @@ class Gem::DependencyList
|
|
200
200
|
next if spec == other
|
201
201
|
|
202
202
|
other.dependencies.each do |dep|
|
203
|
-
if spec.satisfies_requirement? dep
|
203
|
+
if spec.satisfies_requirement? dep
|
204
204
|
result[spec] << other
|
205
205
|
end
|
206
206
|
end
|
@@ -222,7 +222,7 @@ class Gem::DependencyList
|
|
222
222
|
|
223
223
|
dependencies.each do |dep|
|
224
224
|
specs.each do |spec|
|
225
|
-
if spec.satisfies_requirement? dep
|
225
|
+
if spec.satisfies_requirement? dep
|
226
226
|
yield spec
|
227
227
|
break
|
228
228
|
end
|
@@ -241,4 +241,3 @@ class Gem::DependencyList
|
|
241
241
|
end
|
242
242
|
|
243
243
|
end
|
244
|
-
|
data/lib/rubygems/deprecate.rb
CHANGED
@@ -27,7 +27,7 @@ module Gem::Deprecate
|
|
27
27
|
@skip ||= false
|
28
28
|
end
|
29
29
|
|
30
|
-
def self.skip=
|
30
|
+
def self.skip=(v) # :nodoc:
|
31
31
|
@skip = v
|
32
32
|
end
|
33
33
|
|
@@ -47,7 +47,7 @@ module Gem::Deprecate
|
|
47
47
|
# telling the user of +repl+ (unless +repl+ is :none) and the
|
48
48
|
# year/month that it is planned to go away.
|
49
49
|
|
50
|
-
def deprecate
|
50
|
+
def deprecate(name, repl, year, month)
|
51
51
|
class_eval {
|
52
52
|
old = "_deprecated_#{name}"
|
53
53
|
alias_method old, name
|
@@ -68,4 +68,3 @@ module Gem::Deprecate
|
|
68
68
|
module_function :deprecate, :skip_during
|
69
69
|
|
70
70
|
end
|
71
|
-
|
data/lib/rubygems/doctor.rb
CHANGED
@@ -26,7 +26,7 @@ class Gem::Doctor
|
|
26
26
|
['doc', ''],
|
27
27
|
['extensions', ''],
|
28
28
|
['gems', ''],
|
29
|
-
]
|
29
|
+
].freeze
|
30
30
|
|
31
31
|
missing =
|
32
32
|
Gem::REPOSITORY_SUBDIRECTORIES.sort -
|
@@ -41,7 +41,7 @@ class Gem::Doctor
|
|
41
41
|
#
|
42
42
|
# If +dry_run+ is true no files or directories will be removed.
|
43
43
|
|
44
|
-
def initialize
|
44
|
+
def initialize(gem_repository, dry_run = false)
|
45
45
|
@gem_repository = gem_repository
|
46
46
|
@dry_run = dry_run
|
47
47
|
|
@@ -73,7 +73,7 @@ class Gem::Doctor
|
|
73
73
|
|
74
74
|
Gem.use_paths @gem_repository.to_s
|
75
75
|
|
76
|
-
unless gem_repository?
|
76
|
+
unless gem_repository?
|
77
77
|
say 'This directory does not appear to be a RubyGems repository, ' +
|
78
78
|
'skipping'
|
79
79
|
say
|
@@ -99,7 +99,7 @@ class Gem::Doctor
|
|
99
99
|
##
|
100
100
|
# Removes files in +sub_directory+ with +extension+
|
101
101
|
|
102
|
-
def doctor_child
|
102
|
+
def doctor_child(sub_directory, extension) # :nodoc:
|
103
103
|
directory = File.join(@gem_repository, sub_directory)
|
104
104
|
|
105
105
|
Dir.entries(directory).sort.each do |ent|
|
@@ -115,7 +115,7 @@ class Gem::Doctor
|
|
115
115
|
|
116
116
|
type = File.directory?(child) ? 'directory' : 'file'
|
117
117
|
|
118
|
-
action = if @dry_run
|
118
|
+
action = if @dry_run
|
119
119
|
'Extra'
|
120
120
|
else
|
121
121
|
FileUtils.rm_r(child)
|
@@ -129,4 +129,3 @@ class Gem::Doctor
|
|
129
129
|
end
|
130
130
|
|
131
131
|
end
|
132
|
-
|
data/lib/rubygems/errors.rb
CHANGED
@@ -25,7 +25,7 @@ module Gem
|
|
25
25
|
# system. Instead of rescuing from this class, make sure to rescue from the
|
26
26
|
# superclass Gem::LoadError to catch all types of load errors.
|
27
27
|
class MissingSpecError < Gem::LoadError
|
28
|
-
def initialize
|
28
|
+
def initialize(name, requirement)
|
29
29
|
@name = name
|
30
30
|
@requirement = requirement
|
31
31
|
end
|
@@ -50,7 +50,7 @@ module Gem
|
|
50
50
|
class MissingSpecVersionError < MissingSpecError
|
51
51
|
attr_reader :specs
|
52
52
|
|
53
|
-
def initialize
|
53
|
+
def initialize(name, requirement, specs)
|
54
54
|
super(name, requirement)
|
55
55
|
@specs = specs
|
56
56
|
end
|
@@ -81,7 +81,7 @@ module Gem
|
|
81
81
|
|
82
82
|
attr_reader :target
|
83
83
|
|
84
|
-
def initialize
|
84
|
+
def initialize(target, conflicts)
|
85
85
|
@target = target
|
86
86
|
@conflicts = conflicts
|
87
87
|
@name = target.name
|
data/lib/rubygems/exceptions.rb
CHANGED
@@ -1,8 +1,4 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
-
# TODO: the documentation in here is terrible.
|
3
|
-
#
|
4
|
-
# Each exception needs a brief description and the scenarios where it is
|
5
|
-
# likely to be raised
|
6
2
|
|
7
3
|
require 'rubygems/deprecate'
|
8
4
|
|
@@ -36,7 +32,7 @@ class Gem::DependencyResolutionError < Gem::DependencyError
|
|
36
32
|
|
37
33
|
attr_reader :conflict
|
38
34
|
|
39
|
-
def initialize
|
35
|
+
def initialize(conflict)
|
40
36
|
@conflict = conflict
|
41
37
|
a, b = conflicting_dependencies
|
42
38
|
|
@@ -56,6 +52,13 @@ class Gem::GemNotInHomeException < Gem::Exception
|
|
56
52
|
attr_accessor :spec
|
57
53
|
end
|
58
54
|
|
55
|
+
###
|
56
|
+
# Raised when removing a gem with the uninstall command fails
|
57
|
+
|
58
|
+
class Gem::UninstallError < Gem::Exception
|
59
|
+
attr_accessor :spec
|
60
|
+
end
|
61
|
+
|
59
62
|
class Gem::DocumentError < Gem::Exception; end
|
60
63
|
|
61
64
|
##
|
@@ -70,7 +73,7 @@ class Gem::FilePermissionError < Gem::Exception
|
|
70
73
|
|
71
74
|
attr_reader :directory
|
72
75
|
|
73
|
-
def initialize
|
76
|
+
def initialize(directory)
|
74
77
|
@directory = directory
|
75
78
|
|
76
79
|
super "You don't have write permissions for the #{directory} directory."
|
@@ -130,7 +133,7 @@ class Gem::ImpossibleDependenciesError < Gem::Exception
|
|
130
133
|
attr_reader :conflicts
|
131
134
|
attr_reader :request
|
132
135
|
|
133
|
-
def initialize
|
136
|
+
def initialize(request, conflicts)
|
134
137
|
@request = request
|
135
138
|
@conflicts = conflicts
|
136
139
|
|
@@ -242,7 +245,7 @@ class Gem::UnsatisfiableDependencyError < Gem::DependencyError
|
|
242
245
|
# Creates a new UnsatisfiableDependencyError for the unsatisfiable
|
243
246
|
# Gem::Resolver::DependencyRequest +dep+
|
244
247
|
|
245
|
-
def initialize
|
248
|
+
def initialize(dep, platform_mismatch=nil)
|
246
249
|
if platform_mismatch and !platform_mismatch.empty?
|
247
250
|
plats = platform_mismatch.map { |x| x.platform.to_s }.sort.uniq
|
248
251
|
super "Unable to resolve dependency: No match for '#{dep}' on this platform. Found: #{plats.join(', ')}"
|