rubygems-update 3.1.1 → 3.2.0.rc.2
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/CODE_OF_CONDUCT.md +55 -19
- data/CONTRIBUTING.md +25 -11
- data/History.txt +389 -144
- data/Manifest.txt +37 -73
- data/POLICIES.md +2 -9
- data/README.md +5 -5
- data/Rakefile +47 -82
- data/bin/update_rubygems +2 -2
- data/bundler/CHANGELOG.md +1546 -1414
- data/bundler/README.md +6 -8
- data/bundler/UPGRADING.md +18 -32
- data/bundler/bundler.gemspec +3 -3
- data/bundler/exe/bundle +3 -0
- data/bundler/lib/bundler.rb +21 -7
- data/bundler/lib/bundler/build_metadata.rb +4 -12
- data/bundler/lib/bundler/cli.rb +54 -20
- data/bundler/lib/bundler/cli/add.rb +1 -1
- data/bundler/lib/bundler/cli/cache.rb +1 -7
- data/bundler/lib/bundler/cli/clean.rb +1 -1
- data/bundler/lib/bundler/cli/common.rb +14 -0
- data/bundler/lib/bundler/cli/console.rb +1 -1
- data/bundler/lib/bundler/cli/doctor.rb +1 -1
- data/bundler/lib/bundler/cli/exec.rb +4 -13
- data/bundler/lib/bundler/cli/fund.rb +36 -0
- data/bundler/lib/bundler/cli/gem.rb +84 -11
- data/bundler/lib/bundler/cli/info.rb +15 -4
- data/bundler/lib/bundler/cli/init.rb +2 -2
- data/bundler/lib/bundler/cli/inject.rb +1 -1
- data/bundler/lib/bundler/cli/install.rb +12 -18
- data/bundler/lib/bundler/cli/issue.rb +2 -2
- data/bundler/lib/bundler/cli/list.rb +12 -10
- data/bundler/lib/bundler/cli/outdated.rb +89 -66
- data/bundler/lib/bundler/cli/plugin.rb +10 -0
- data/bundler/lib/bundler/cli/pristine.rb +5 -0
- data/bundler/lib/bundler/cli/show.rb +1 -1
- data/bundler/lib/bundler/cli/update.rb +2 -0
- data/bundler/lib/bundler/compact_index_client.rb +1 -1
- data/bundler/lib/bundler/compact_index_client/cache.rb +1 -1
- data/bundler/lib/bundler/definition.rb +51 -60
- data/bundler/lib/bundler/dep_proxy.rb +1 -1
- data/bundler/lib/bundler/dependency.rb +0 -9
- data/bundler/lib/bundler/dsl.rb +5 -9
- data/bundler/lib/bundler/endpoint_specification.rb +1 -1
- data/bundler/lib/bundler/environment_preserver.rb +26 -2
- data/bundler/lib/bundler/errors.rb +1 -0
- data/bundler/lib/bundler/feature_flag.rb +0 -2
- data/bundler/lib/bundler/fetcher.rb +4 -3
- data/bundler/lib/bundler/fetcher/base.rb +1 -1
- data/bundler/lib/bundler/fetcher/compact_index.rb +1 -1
- data/bundler/lib/bundler/fetcher/downloader.rb +1 -1
- data/bundler/lib/bundler/fetcher/index.rb +1 -1
- data/bundler/lib/bundler/friendly_errors.rb +7 -13
- data/bundler/lib/bundler/gem_helper.rb +33 -19
- data/bundler/lib/bundler/gem_helpers.rb +6 -1
- data/bundler/lib/bundler/gem_version_promoter.rb +2 -2
- data/bundler/lib/bundler/graph.rb +1 -1
- data/bundler/lib/bundler/index.rb +1 -1
- data/bundler/lib/bundler/injector.rb +15 -4
- data/bundler/lib/bundler/inline.rb +2 -2
- data/bundler/lib/bundler/installer.rb +30 -29
- data/bundler/lib/bundler/installer/gem_installer.rb +3 -3
- data/bundler/lib/bundler/installer/parallel_installer.rb +10 -10
- data/bundler/lib/bundler/installer/standalone.rb +2 -2
- data/bundler/lib/bundler/lazy_specification.rb +19 -6
- data/bundler/lib/bundler/lockfile_generator.rb +1 -1
- data/bundler/lib/bundler/lockfile_parser.rb +1 -1
- data/bundler/lib/bundler/mirror.rb +2 -2
- data/bundler/lib/bundler/plugin.rb +30 -5
- data/bundler/lib/bundler/plugin/index.rb +10 -1
- data/bundler/lib/bundler/plugin/installer.rb +1 -1
- data/bundler/lib/bundler/plugin/installer/rubygems.rb +1 -1
- data/bundler/lib/bundler/plugin/source_list.rb +1 -1
- data/bundler/lib/bundler/psyched_yaml.rb +0 -15
- data/bundler/lib/bundler/remote_specification.rb +5 -2
- data/bundler/lib/bundler/resolver.rb +32 -9
- data/bundler/lib/bundler/resolver/spec_group.rb +27 -6
- data/bundler/lib/bundler/retry.rb +1 -1
- data/bundler/lib/bundler/ruby_version.rb +1 -1
- data/bundler/lib/bundler/rubygems_ext.rb +53 -9
- data/bundler/lib/bundler/rubygems_gem_installer.rb +3 -9
- data/bundler/lib/bundler/rubygems_integration.rb +31 -54
- data/bundler/lib/bundler/runtime.rb +4 -14
- data/bundler/lib/bundler/settings.rb +49 -45
- data/bundler/lib/bundler/setup.rb +5 -0
- data/bundler/lib/bundler/shared_helpers.rb +2 -2
- data/bundler/lib/bundler/similarity_detector.rb +1 -1
- data/bundler/lib/bundler/source.rb +1 -1
- data/bundler/lib/bundler/source/git.rb +5 -5
- data/bundler/lib/bundler/source/git/git_proxy.rb +56 -59
- data/bundler/lib/bundler/source/path.rb +7 -3
- data/bundler/lib/bundler/source/path/installer.rb +8 -10
- data/bundler/lib/bundler/source/rubygems.rb +13 -16
- data/bundler/lib/bundler/source/rubygems/remote.rb +1 -1
- data/bundler/lib/bundler/source_list.rb +2 -2
- data/bundler/lib/bundler/spec_set.rb +1 -1
- data/bundler/lib/bundler/stub_specification.rb +17 -5
- data/bundler/lib/bundler/templates/newgem/CODE_OF_CONDUCT.md.tt +57 -47
- data/bundler/lib/bundler/templates/newgem/Gemfile.tt +9 -1
- data/bundler/lib/bundler/templates/newgem/README.md.tt +1 -1
- data/bundler/lib/bundler/templates/newgem/Rakefile.tt +19 -5
- data/bundler/lib/bundler/templates/newgem/bin/console.tt +1 -0
- data/bundler/lib/bundler/templates/newgem/circleci/config.yml.tt +13 -0
- data/bundler/lib/bundler/templates/newgem/ext/newgem/extconf.rb.tt +2 -0
- data/bundler/lib/bundler/templates/newgem/github/workflows/main.yml.tt +18 -0
- data/bundler/lib/bundler/templates/newgem/gitlab-ci.yml.tt +9 -0
- data/bundler/lib/bundler/templates/newgem/lib/newgem.rb.tt +2 -0
- data/bundler/lib/bundler/templates/newgem/lib/newgem/version.rb.tt +2 -0
- data/bundler/lib/bundler/templates/newgem/newgem.gemspec.tt +8 -6
- data/bundler/lib/bundler/templates/newgem/rubocop.yml.tt +10 -0
- data/bundler/lib/bundler/templates/newgem/spec/newgem_spec.rb.tt +2 -0
- data/bundler/lib/bundler/templates/newgem/spec/spec_helper.rb.tt +2 -1
- data/bundler/lib/bundler/templates/newgem/test/{newgem_test.rb.tt → minitest/newgem_test.rb.tt} +2 -0
- data/bundler/lib/bundler/templates/newgem/test/{test_helper.rb.tt → minitest/test_helper.rb.tt} +2 -0
- data/bundler/lib/bundler/templates/newgem/test/test-unit/newgem_test.rb.tt +15 -0
- data/bundler/lib/bundler/templates/newgem/test/test-unit/test_helper.rb.tt +6 -0
- data/bundler/lib/bundler/ui/shell.rb +5 -5
- data/bundler/lib/bundler/uri_credentials_filter.rb +1 -1
- data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb +79 -212
- data/bundler/lib/bundler/vendor/thor/lib/thor.rb +0 -7
- data/bundler/lib/bundler/vendor/thor/lib/thor/actions/create_link.rb +2 -1
- data/bundler/lib/bundler/vendor/thor/lib/thor/base.rb +9 -0
- data/bundler/lib/bundler/vendor/thor/lib/thor/version.rb +1 -1
- data/bundler/lib/bundler/vendored_persistent.rb +0 -7
- data/bundler/lib/bundler/version.rb +1 -1
- data/bundler/lib/bundler/worker.rb +1 -1
- data/bundler/lib/bundler/yaml_serializer.rb +1 -1
- data/bundler/man/bundle-add.1 +1 -1
- data/bundler/man/{bundle-add.ronn → bundle-add.1.ronn} +0 -0
- data/bundler/man/bundle-binstubs.1 +5 -3
- data/bundler/man/{bundle-binstubs.ronn → bundle-binstubs.1.ronn} +2 -4
- data/bundler/man/bundle-cache.1 +1 -1
- data/bundler/man/{bundle-cache.ronn → bundle-cache.1.ronn} +0 -0
- data/bundler/man/bundle-check.1 +1 -1
- data/bundler/man/{bundle-check.ronn → bundle-check.1.ronn} +0 -0
- data/bundler/man/bundle-clean.1 +1 -1
- data/bundler/man/{bundle-clean.ronn → bundle-clean.1.ronn} +0 -0
- data/bundler/man/bundle-config.1 +16 -22
- data/bundler/man/{bundle-config.ronn → bundle-config.1.ronn} +19 -22
- data/bundler/man/bundle-doctor.1 +1 -1
- data/bundler/man/{bundle-doctor.ronn → bundle-doctor.1.ronn} +0 -0
- data/bundler/man/bundle-exec.1 +1 -1
- data/bundler/man/{bundle-exec.ronn → bundle-exec.1.ronn} +0 -0
- data/bundler/man/bundle-gem.1 +25 -3
- data/bundler/man/{bundle-gem.ronn → bundle-gem.1.ronn} +30 -7
- data/bundler/man/bundle-info.1 +1 -1
- data/bundler/man/{bundle-info.ronn → bundle-info.1.ronn} +0 -0
- data/bundler/man/bundle-init.1 +1 -1
- data/bundler/man/{bundle-init.ronn → bundle-init.1.ronn} +0 -0
- data/bundler/man/bundle-inject.1 +1 -1
- data/bundler/man/{bundle-inject.ronn → bundle-inject.1.ronn} +0 -0
- data/bundler/man/bundle-install.1 +29 -2
- data/bundler/man/{bundle-install.ronn → bundle-install.1.ronn} +24 -2
- data/bundler/man/bundle-list.1 +7 -7
- data/bundler/man/{bundle-list.ronn → bundle-list.1.ronn} +6 -6
- data/bundler/man/bundle-lock.1 +1 -1
- data/bundler/man/{bundle-lock.ronn → bundle-lock.1.ronn} +0 -0
- data/bundler/man/bundle-open.1 +1 -1
- data/bundler/man/{bundle-open.ronn → bundle-open.1.ronn} +0 -0
- data/bundler/man/bundle-outdated.1 +1 -1
- data/bundler/man/{bundle-outdated.ronn → bundle-outdated.1.ronn} +0 -0
- data/bundler/man/bundle-platform.1 +1 -1
- data/bundler/man/{bundle-platform.ronn → bundle-platform.1.ronn} +0 -0
- data/bundler/man/bundle-pristine.1 +1 -1
- data/bundler/man/{bundle-pristine.ronn → bundle-pristine.1.ronn} +0 -0
- data/bundler/man/bundle-remove.1 +1 -1
- data/bundler/man/{bundle-remove.ronn → bundle-remove.1.ronn} +0 -0
- data/bundler/man/bundle-show.1 +1 -1
- data/bundler/man/{bundle-show.ronn → bundle-show.1.ronn} +0 -0
- data/bundler/man/bundle-update.1 +1 -1
- data/bundler/man/{bundle-update.ronn → bundle-update.1.ronn} +0 -0
- data/bundler/man/bundle-viz.1 +1 -1
- data/bundler/man/{bundle-viz.ronn → bundle-viz.1.ronn} +0 -0
- data/bundler/man/bundle.1 +1 -1
- data/bundler/man/{bundle.ronn → bundle.1.ronn} +0 -0
- data/bundler/man/gemfile.5 +4 -4
- data/bundler/man/gemfile.5.ronn +4 -4
- data/lib/rubygems.rb +133 -186
- data/lib/rubygems/available_set.rb +4 -6
- data/lib/rubygems/basic_specification.rb +12 -10
- data/lib/rubygems/bundler_version_finder.rb +14 -9
- data/lib/rubygems/command.rb +17 -17
- data/lib/rubygems/command_manager.rb +4 -5
- data/lib/rubygems/commands/build_command.rb +4 -1
- data/lib/rubygems/commands/cert_command.rb +1 -9
- data/lib/rubygems/commands/check_command.rb +0 -2
- data/lib/rubygems/commands/cleanup_command.rb +11 -7
- data/lib/rubygems/commands/contents_command.rb +4 -6
- data/lib/rubygems/commands/dependency_command.rb +6 -8
- data/lib/rubygems/commands/environment_command.rb +1 -3
- data/lib/rubygems/commands/fetch_command.rb +2 -4
- data/lib/rubygems/commands/generate_index_command.rb +0 -2
- data/lib/rubygems/commands/help_command.rb +2 -4
- data/lib/rubygems/commands/info_command.rb +8 -5
- data/lib/rubygems/commands/install_command.rb +3 -5
- data/lib/rubygems/commands/list_command.rb +8 -7
- data/lib/rubygems/commands/lock_command.rb +1 -3
- data/lib/rubygems/commands/mirror_command.rb +0 -2
- data/lib/rubygems/commands/open_command.rb +0 -4
- data/lib/rubygems/commands/outdated_command.rb +0 -2
- data/lib/rubygems/commands/owner_command.rb +0 -2
- data/lib/rubygems/commands/pristine_command.rb +10 -4
- data/lib/rubygems/commands/push_command.rb +4 -44
- data/lib/rubygems/commands/query_command.rb +6 -353
- data/lib/rubygems/commands/rdoc_command.rb +0 -2
- data/lib/rubygems/commands/search_command.rb +7 -7
- data/lib/rubygems/commands/server_command.rb +0 -2
- data/lib/rubygems/commands/setup_command.rb +156 -48
- data/lib/rubygems/commands/signin_command.rb +0 -2
- data/lib/rubygems/commands/signout_command.rb +0 -2
- data/lib/rubygems/commands/sources_command.rb +3 -5
- data/lib/rubygems/commands/specification_command.rb +2 -4
- data/lib/rubygems/commands/stale_command.rb +1 -3
- data/lib/rubygems/commands/uninstall_command.rb +2 -4
- data/lib/rubygems/commands/unpack_command.rb +1 -3
- data/lib/rubygems/commands/update_command.rb +59 -14
- data/lib/rubygems/commands/which_command.rb +0 -2
- data/lib/rubygems/commands/yank_command.rb +0 -2
- data/lib/rubygems/config_file.rb +11 -4
- data/lib/rubygems/core_ext/kernel_require.rb +26 -36
- data/lib/rubygems/core_ext/kernel_warn.rb +6 -6
- data/lib/rubygems/defaults.rb +99 -5
- data/lib/rubygems/dependency.rb +2 -7
- data/lib/rubygems/dependency_installer.rb +1 -75
- data/lib/rubygems/dependency_list.rb +7 -9
- data/lib/rubygems/deprecate.rb +46 -1
- data/lib/rubygems/doctor.rb +4 -4
- data/lib/rubygems/errors.rb +3 -14
- data/lib/rubygems/exceptions.rb +2 -33
- data/lib/rubygems/ext.rb +6 -6
- data/lib/rubygems/ext/build_error.rb +2 -0
- data/lib/rubygems/ext/builder.rb +4 -4
- data/lib/rubygems/ext/cmake_builder.rb +1 -3
- data/lib/rubygems/ext/configure_builder.rb +0 -2
- data/lib/rubygems/ext/ext_conf_builder.rb +6 -9
- data/lib/rubygems/ext/rake_builder.rb +0 -2
- data/lib/rubygems/gem_runner.rb +3 -10
- data/lib/rubygems/gemcutter_utilities.rb +1 -1
- data/lib/rubygems/indexer.rb +1 -21
- data/lib/rubygems/install_update_options.rb +5 -5
- data/lib/rubygems/installer.rb +47 -48
- data/lib/rubygems/installer_test_case.rb +18 -5
- data/lib/rubygems/installer_uninstaller_utils.rb +24 -0
- data/lib/rubygems/local_remote_options.rb +1 -1
- data/lib/rubygems/mock_gem_ui.rb +0 -6
- data/lib/rubygems/name_tuple.rb +2 -6
- data/lib/rubygems/openssl.rb +7 -0
- data/lib/rubygems/package.rb +11 -23
- data/lib/rubygems/package/digest_io.rb +0 -2
- data/lib/rubygems/package/file_source.rb +0 -2
- data/lib/rubygems/package/io_source.rb +0 -2
- data/lib/rubygems/package/old.rb +1 -3
- data/lib/rubygems/package/tar_header.rb +3 -5
- data/lib/rubygems/package/tar_reader.rb +0 -3
- data/lib/rubygems/package/tar_reader/entry.rb +0 -3
- data/lib/rubygems/package/tar_test_case.rb +1 -3
- data/lib/rubygems/package/tar_writer.rb +2 -12
- data/lib/rubygems/package_task.rb +1 -7
- data/lib/rubygems/path_support.rb +1 -3
- data/lib/rubygems/platform.rb +3 -5
- data/lib/rubygems/psych_tree.rb +0 -2
- data/lib/rubygems/query_utils.rb +362 -0
- data/lib/rubygems/rdoc.rb +0 -12
- data/lib/rubygems/remote_fetcher.rb +9 -25
- data/lib/rubygems/request.rb +1 -9
- data/lib/rubygems/request/connection_pools.rb +1 -5
- data/lib/rubygems/request/http_pool.rb +0 -2
- data/lib/rubygems/request/https_pool.rb +0 -2
- data/lib/rubygems/request_set.rb +5 -7
- data/lib/rubygems/request_set/gem_dependency_api.rb +2 -4
- data/lib/rubygems/request_set/lockfile.rb +8 -12
- data/lib/rubygems/request_set/lockfile/parser.rb +0 -2
- data/lib/rubygems/request_set/lockfile/tokenizer.rb +1 -3
- data/lib/rubygems/requirement.rb +20 -21
- data/lib/rubygems/resolver.rb +7 -10
- data/lib/rubygems/resolver/activation_request.rb +0 -2
- data/lib/rubygems/resolver/api_set.rb +4 -6
- data/lib/rubygems/resolver/api_specification.rb +16 -7
- data/lib/rubygems/resolver/best_set.rb +0 -2
- data/lib/rubygems/resolver/composed_set.rb +3 -5
- data/lib/rubygems/resolver/conflict.rb +1 -3
- data/lib/rubygems/resolver/current_set.rb +0 -2
- data/lib/rubygems/resolver/dependency_request.rb +0 -2
- data/lib/rubygems/resolver/git_set.rb +0 -2
- data/lib/rubygems/resolver/git_specification.rb +0 -2
- data/lib/rubygems/resolver/index_set.rb +1 -3
- data/lib/rubygems/resolver/index_specification.rb +0 -2
- data/lib/rubygems/resolver/installed_specification.rb +0 -2
- data/lib/rubygems/resolver/installer_set.rb +3 -5
- data/lib/rubygems/resolver/local_specification.rb +0 -2
- data/lib/rubygems/resolver/lock_set.rb +1 -3
- data/lib/rubygems/resolver/lock_specification.rb +0 -2
- data/lib/rubygems/resolver/requirement_list.rb +0 -2
- data/lib/rubygems/resolver/set.rb +0 -2
- data/lib/rubygems/resolver/source_set.rb +0 -2
- data/lib/rubygems/resolver/spec_specification.rb +0 -2
- data/lib/rubygems/resolver/specification.rb +0 -2
- data/lib/rubygems/resolver/stats.rb +0 -2
- data/lib/rubygems/resolver/vendor_set.rb +0 -2
- data/lib/rubygems/resolver/vendor_specification.rb +0 -2
- data/lib/rubygems/s3_uri_signer.rb +1 -7
- data/lib/rubygems/safe_yaml.rb +4 -4
- data/lib/rubygems/security.rb +26 -32
- data/lib/rubygems/security/policy.rb +3 -7
- data/lib/rubygems/security/signer.rb +4 -6
- data/lib/rubygems/security/trust_dir.rb +1 -3
- data/lib/rubygems/server.rb +9 -11
- data/lib/rubygems/source.rb +4 -4
- data/lib/rubygems/source/git.rb +7 -8
- data/lib/rubygems/source/installed.rb +0 -2
- data/lib/rubygems/source/local.rb +2 -4
- data/lib/rubygems/source/lock.rb +0 -2
- data/lib/rubygems/source/specific_file.rb +0 -2
- data/lib/rubygems/source/vendor.rb +0 -2
- data/lib/rubygems/source_list.rb +6 -7
- data/lib/rubygems/spec_fetcher.rb +18 -17
- data/lib/rubygems/specification.rb +107 -120
- data/lib/rubygems/specification_policy.rb +88 -30
- data/lib/rubygems/stub_specification.rb +0 -4
- data/lib/rubygems/syck_hack.rb +0 -2
- data/lib/rubygems/test_case.rb +122 -92
- data/lib/rubygems/test_utilities.rb +6 -14
- data/lib/rubygems/uninstaller.rb +35 -16
- data/lib/rubygems/uri_formatter.rb +0 -2
- data/lib/rubygems/uri_parser.rb +0 -2
- data/lib/rubygems/user_interaction.rb +1 -26
- data/lib/rubygems/util.rb +15 -3
- data/lib/rubygems/util/licenses.rb +4 -6
- data/lib/rubygems/util/list.rb +0 -2
- data/lib/rubygems/validator.rb +1 -3
- data/lib/rubygems/version.rb +5 -7
- data/rubygems-update.gemspec +2 -2
- data/setup.rb +2 -7
- data/test/rubygems/plugin/load/rubygems_plugin.rb +0 -2
- data/test/rubygems/rubygems/commands/crash_command.rb +0 -2
- data/test/rubygems/rubygems_plugin.rb +0 -2
- data/test/rubygems/specifications/bar-0.0.2.gemspec +0 -2
- data/test/rubygems/specifications/rubyforge-0.0.1.gemspec +12 -0
- data/test/rubygems/test_bundled_ca.rb +38 -45
- data/test/rubygems/test_config.rb +0 -2
- data/test/rubygems/test_deprecate.rb +40 -7
- data/test/rubygems/test_gem.rb +150 -103
- data/test/rubygems/test_gem_available_set.rb +3 -5
- data/test/rubygems/test_gem_bundler_version_finder.rb +19 -3
- data/test/rubygems/test_gem_command.rb +24 -7
- data/test/rubygems/test_gem_command_manager.rb +36 -5
- data/test/rubygems/test_gem_commands_build_command.rb +53 -10
- data/test/rubygems/test_gem_commands_cert_command.rb +2 -4
- data/test/rubygems/test_gem_commands_check_command.rb +0 -2
- data/test/rubygems/test_gem_commands_cleanup_command.rb +13 -4
- data/test/rubygems/test_gem_commands_contents_command.rb +48 -17
- data/test/rubygems/test_gem_commands_dependency_command.rb +0 -2
- data/test/rubygems/test_gem_commands_environment_command.rb +21 -23
- data/test/rubygems/test_gem_commands_fetch_command.rb +0 -2
- data/test/rubygems/test_gem_commands_generate_index_command.rb +1 -7
- data/test/rubygems/test_gem_commands_help_command.rb +0 -2
- data/test/rubygems/test_gem_commands_info_command.rb +6 -8
- data/test/rubygems/test_gem_commands_install_command.rb +31 -33
- data/test/rubygems/test_gem_commands_list_command.rb +0 -2
- data/test/rubygems/test_gem_commands_lock_command.rb +0 -2
- data/test/rubygems/test_gem_commands_mirror.rb +1 -3
- data/test/rubygems/test_gem_commands_open_command.rb +4 -6
- data/test/rubygems/test_gem_commands_outdated_command.rb +0 -2
- data/test/rubygems/test_gem_commands_owner_command.rb +11 -5
- data/test/rubygems/test_gem_commands_pristine_command.rb +41 -10
- data/test/rubygems/test_gem_commands_push_command.rb +7 -4
- data/test/rubygems/test_gem_commands_query_command.rb +9 -9
- data/test/rubygems/test_gem_commands_search_command.rb +0 -2
- data/test/rubygems/test_gem_commands_server_command.rb +0 -2
- data/test/rubygems/test_gem_commands_setup_command.rb +210 -118
- data/test/rubygems/test_gem_commands_signin_command.rb +6 -6
- data/test/rubygems/test_gem_commands_signout_command.rb +0 -7
- data/test/rubygems/test_gem_commands_sources_command.rb +39 -3
- data/test/rubygems/test_gem_commands_specification_command.rb +18 -20
- data/test/rubygems/test_gem_commands_stale_command.rb +0 -2
- data/test/rubygems/test_gem_commands_uninstall_command.rb +2 -3
- data/test/rubygems/test_gem_commands_unpack_command.rb +0 -2
- data/test/rubygems/test_gem_commands_update_command.rb +116 -7
- data/test/rubygems/test_gem_commands_which_command.rb +3 -5
- data/test/rubygems/test_gem_commands_yank_command.rb +14 -8
- data/test/rubygems/test_gem_config_file.rb +7 -12
- data/test/rubygems/test_gem_dependency.rb +0 -2
- data/test/rubygems/test_gem_dependency_installer.rb +54 -191
- data/test/rubygems/test_gem_dependency_list.rb +8 -10
- data/test/rubygems/test_gem_dependency_resolution_error.rb +1 -3
- data/test/rubygems/test_gem_doctor.rb +28 -2
- data/test/rubygems/test_gem_ext_builder.rb +16 -33
- data/test/rubygems/test_gem_ext_cmake_builder.rb +13 -14
- data/test/rubygems/test_gem_ext_configure_builder.rb +1 -11
- data/test/rubygems/test_gem_ext_ext_conf_builder.rb +0 -3
- data/test/rubygems/test_gem_ext_rake_builder.rb +9 -11
- data/test/rubygems/test_gem_gem_runner.rb +43 -1
- data/test/rubygems/test_gem_gemcutter_utilities.rb +5 -2
- data/test/rubygems/test_gem_impossible_dependencies_error.rb +0 -2
- data/test/rubygems/test_gem_indexer.rb +9 -15
- data/test/rubygems/test_gem_install_update_options.rb +0 -2
- data/test/rubygems/test_gem_installer.rb +192 -71
- data/test/rubygems/test_gem_local_remote_options.rb +0 -2
- data/test/rubygems/test_gem_name_tuple.rb +0 -2
- data/test/rubygems/test_gem_package.rb +33 -31
- data/test/rubygems/test_gem_package_old.rb +0 -2
- data/test/rubygems/test_gem_package_tar_header.rb +18 -1
- data/test/rubygems/test_gem_package_tar_reader.rb +0 -2
- data/test/rubygems/test_gem_package_tar_reader_entry.rb +0 -2
- data/test/rubygems/test_gem_package_tar_writer.rb +8 -5
- data/test/rubygems/test_gem_package_task.rb +46 -13
- data/test/rubygems/test_gem_path_support.rb +0 -2
- data/test/rubygems/test_gem_platform.rb +0 -2
- data/test/rubygems/test_gem_rdoc.rb +0 -2
- data/test/rubygems/test_gem_remote_fetcher.rb +156 -195
- data/test/rubygems/test_gem_request.rb +11 -15
- data/test/rubygems/test_gem_request_connection_pools.rb +0 -4
- data/test/rubygems/test_gem_request_set.rb +72 -22
- data/test/rubygems/test_gem_request_set_gem_dependency_api.rb +3 -5
- data/test/rubygems/test_gem_request_set_lockfile.rb +0 -2
- data/test/rubygems/test_gem_request_set_lockfile_parser.rb +9 -11
- data/test/rubygems/test_gem_request_set_lockfile_tokenizer.rb +118 -120
- data/test/rubygems/test_gem_requirement.rb +10 -4
- data/test/rubygems/test_gem_resolver.rb +6 -8
- data/test/rubygems/test_gem_resolver_activation_request.rb +0 -2
- data/test/rubygems/test_gem_resolver_api_set.rb +3 -5
- data/test/rubygems/test_gem_resolver_api_specification.rb +0 -2
- data/test/rubygems/test_gem_resolver_best_set.rb +2 -4
- data/test/rubygems/test_gem_resolver_composed_set.rb +0 -2
- data/test/rubygems/test_gem_resolver_conflict.rb +0 -2
- data/test/rubygems/test_gem_resolver_dependency_request.rb +0 -2
- data/test/rubygems/test_gem_resolver_git_set.rb +0 -2
- data/test/rubygems/test_gem_resolver_git_specification.rb +0 -2
- data/test/rubygems/test_gem_resolver_index_set.rb +2 -4
- data/test/rubygems/test_gem_resolver_index_specification.rb +0 -2
- data/test/rubygems/test_gem_resolver_installed_specification.rb +0 -2
- data/test/rubygems/test_gem_resolver_installer_set.rb +7 -9
- data/test/rubygems/test_gem_resolver_local_specification.rb +0 -2
- data/test/rubygems/test_gem_resolver_lock_set.rb +3 -5
- data/test/rubygems/test_gem_resolver_lock_specification.rb +0 -2
- data/test/rubygems/test_gem_resolver_requirement_list.rb +0 -2
- data/test/rubygems/test_gem_resolver_specification.rb +0 -4
- data/test/rubygems/test_gem_resolver_vendor_set.rb +0 -2
- data/test/rubygems/test_gem_resolver_vendor_specification.rb +0 -2
- data/test/rubygems/test_gem_security.rb +20 -22
- data/test/rubygems/test_gem_security_policy.rb +5 -10
- data/test/rubygems/test_gem_security_signer.rb +8 -10
- data/test/rubygems/test_gem_security_trust_dir.rb +2 -4
- data/test/rubygems/test_gem_server.rb +10 -14
- data/test/rubygems/test_gem_silent_ui.rb +0 -2
- data/test/rubygems/test_gem_source.rb +12 -16
- data/test/rubygems/test_gem_source_fetch_problem.rb +0 -2
- data/test/rubygems/test_gem_source_git.rb +12 -13
- data/test/rubygems/test_gem_source_installed.rb +7 -9
- data/test/rubygems/test_gem_source_list.rb +1 -2
- data/test/rubygems/test_gem_source_local.rb +8 -10
- data/test/rubygems/test_gem_source_lock.rb +10 -12
- data/test/rubygems/test_gem_source_specific_file.rb +7 -9
- data/test/rubygems/test_gem_source_vendor.rb +7 -9
- data/test/rubygems/test_gem_spec_fetcher.rb +11 -4
- data/test/rubygems/test_gem_specification.rb +179 -129
- data/test/rubygems/test_gem_stream_ui.rb +3 -3
- data/test/rubygems/test_gem_stub_specification.rb +4 -7
- data/test/rubygems/test_gem_text.rb +1 -3
- data/test/rubygems/test_gem_uninstaller.rb +133 -11
- data/test/rubygems/test_gem_unsatisfiable_dependency_error.rb +0 -2
- data/test/rubygems/test_gem_uri_formatter.rb +0 -2
- data/test/rubygems/test_gem_util.rb +7 -7
- data/test/rubygems/test_gem_validator.rb +0 -2
- data/test/rubygems/test_gem_version.rb +1 -3
- data/test/rubygems/test_gem_version_option.rb +0 -2
- data/test/rubygems/test_kernel.rb +25 -10
- data/test/rubygems/test_project_sanity.rb +7 -2
- data/test/rubygems/test_remote_fetch_error.rb +0 -2
- data/test/rubygems/test_require.rb +241 -47
- metadata +59 -96
- data/.bundle/config +0 -2
- data/.rubocop.yml +0 -91
- data/Gemfile +0 -8
- data/Gemfile.lock +0 -43
- data/bundler/CODE_OF_CONDUCT.md +0 -136
- data/bundler/man/bundle-add.1.txt +0 -58
- data/bundler/man/bundle-binstubs.1.txt +0 -48
- data/bundler/man/bundle-cache.1.txt +0 -78
- data/bundler/man/bundle-check.1.txt +0 -33
- data/bundler/man/bundle-clean.1.txt +0 -26
- data/bundler/man/bundle-config.1.txt +0 -528
- data/bundler/man/bundle-doctor.1.txt +0 -44
- data/bundler/man/bundle-exec.1.txt +0 -178
- data/bundler/man/bundle-gem.1.txt +0 -91
- data/bundler/man/bundle-info.1.txt +0 -21
- data/bundler/man/bundle-init.1.txt +0 -34
- data/bundler/man/bundle-inject.1.txt +0 -32
- data/bundler/man/bundle-install.1.txt +0 -401
- data/bundler/man/bundle-list.1.txt +0 -43
- data/bundler/man/bundle-lock.1.txt +0 -93
- data/bundler/man/bundle-open.1.txt +0 -29
- data/bundler/man/bundle-outdated.1.txt +0 -131
- data/bundler/man/bundle-platform.1.txt +0 -57
- data/bundler/man/bundle-pristine.1.txt +0 -44
- data/bundler/man/bundle-remove.1.txt +0 -34
- data/bundler/man/bundle-show.1.txt +0 -27
- data/bundler/man/bundle-update.1.txt +0 -390
- data/bundler/man/bundle-viz.1.txt +0 -39
- data/bundler/man/bundle.1.txt +0 -116
- data/bundler/man/gemfile.5.txt +0 -649
- data/bundler/man/index.txt +0 -25
- data/lib/rubygems/source_local.rb +0 -7
- data/lib/rubygems/source_specific_file.rb +0 -6
- data/lib/ubygems.rb +0 -14
- data/tmp/.keep +0 -0
- data/util/CL2notes +0 -55
- data/util/bisect +0 -10
- data/util/ci.sh +0 -62
- data/util/cops/deprecations.rb +0 -52
- data/util/create_certs.rb +0 -171
- data/util/create_certs.sh +0 -27
- data/util/create_encrypted_key.rb +0 -16
- data/util/generate_spdx_license_list.rb +0 -63
- data/util/patch_with_prs.rb +0 -77
- data/util/rubocop +0 -8
- data/util/update_bundled_ca_certificates.rb +0 -139
- data/util/update_changelog.rb +0 -67
data/lib/rubygems/rdoc.rb
CHANGED
@@ -1,18 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
require 'rubygems'
|
3
3
|
|
4
|
-
begin
|
5
|
-
gem 'rdoc'
|
6
|
-
rescue Gem::LoadError
|
7
|
-
# swallow
|
8
|
-
else
|
9
|
-
# This will force any deps that 'rdoc' might have
|
10
|
-
# (such as json) that are ambiguous to be activated, which
|
11
|
-
# is important because we end up using Specification.reset
|
12
|
-
# and we don't want the warning it pops out.
|
13
|
-
Gem.finish_resolve
|
14
|
-
end
|
15
|
-
|
16
4
|
begin
|
17
5
|
require 'rdoc/rubygems_hook'
|
18
6
|
module Gem
|
@@ -7,17 +7,13 @@ require 'rubygems/uri_formatter'
|
|
7
7
|
require 'rubygems/uri_parsing'
|
8
8
|
require 'rubygems/user_interaction'
|
9
9
|
require 'resolv'
|
10
|
-
require 'rubygems/deprecate'
|
11
10
|
|
12
11
|
##
|
13
12
|
# RemoteFetcher handles the details of fetching gems and gem information from
|
14
13
|
# a remote source.
|
15
14
|
|
16
15
|
class Gem::RemoteFetcher
|
17
|
-
|
18
16
|
include Gem::UserInteraction
|
19
|
-
extend Gem::Deprecate
|
20
|
-
|
21
17
|
include Gem::UriParsing
|
22
18
|
|
23
19
|
##
|
@@ -25,7 +21,6 @@ class Gem::RemoteFetcher
|
|
25
21
|
# that could happen while downloading from the internet.
|
26
22
|
|
27
23
|
class FetchError < Gem::Exception
|
28
|
-
|
29
24
|
include Gem::UriParsing
|
30
25
|
|
31
26
|
##
|
@@ -46,7 +41,6 @@ class Gem::RemoteFetcher
|
|
46
41
|
def to_s # :nodoc:
|
47
42
|
"#{super} (#{uri})"
|
48
43
|
end
|
49
|
-
|
50
44
|
end
|
51
45
|
|
52
46
|
##
|
@@ -109,7 +103,7 @@ class Gem::RemoteFetcher
|
|
109
103
|
|
110
104
|
return if found.empty?
|
111
105
|
|
112
|
-
spec, source = found.max_by {
|
106
|
+
spec, source = found.max_by {|(s,_)| s.version }
|
113
107
|
|
114
108
|
download spec, source.uri
|
115
109
|
end
|
@@ -120,11 +114,12 @@ class Gem::RemoteFetcher
|
|
120
114
|
# always replaced.
|
121
115
|
|
122
116
|
def download(spec, source_uri, install_dir = Gem.dir)
|
117
|
+
install_cache_dir = File.join install_dir, "cache"
|
123
118
|
cache_dir =
|
124
|
-
if Dir.pwd == install_dir
|
119
|
+
if Dir.pwd == install_dir # see fetch_command
|
125
120
|
install_dir
|
126
|
-
elsif File.writable? install_dir
|
127
|
-
|
121
|
+
elsif File.writable?(install_cache_dir) || (File.writable?(install_dir) && (not File.exist?(install_cache_dir)))
|
122
|
+
install_cache_dir
|
128
123
|
else
|
129
124
|
File.join Gem.user_dir, "cache"
|
130
125
|
end
|
@@ -132,6 +127,7 @@ class Gem::RemoteFetcher
|
|
132
127
|
gem_file_name = File.basename spec.cache_file
|
133
128
|
local_gem_path = File.join cache_dir, gem_file_name
|
134
129
|
|
130
|
+
require "fileutils"
|
135
131
|
FileUtils.mkdir_p cache_dir rescue nil unless File.exist? cache_dir
|
136
132
|
|
137
133
|
source_uri = parse_uri(source_uri)
|
@@ -215,7 +211,7 @@ class Gem::RemoteFetcher
|
|
215
211
|
def fetch_http(uri, last_modified = nil, head = false, depth = 0)
|
216
212
|
fetch_type = head ? Net::HTTP::Head : Net::HTTP::Get
|
217
213
|
response = request uri, fetch_type, last_modified do |req|
|
218
|
-
headers.each {
|
214
|
+
headers.each {|k,v| req.add_field(k,v) }
|
219
215
|
end
|
220
216
|
|
221
217
|
case response
|
@@ -255,7 +251,7 @@ class Gem::RemoteFetcher
|
|
255
251
|
|
256
252
|
data = send "fetch_#{uri.scheme}", uri, mtime, head
|
257
253
|
|
258
|
-
if data and !head and uri.to_s
|
254
|
+
if data and !head and uri.to_s.end_with?(".gz")
|
259
255
|
begin
|
260
256
|
data = Gem::Util.gunzip data
|
261
257
|
rescue Zlib::GzipFile::Error
|
@@ -309,17 +305,6 @@ class Gem::RemoteFetcher
|
|
309
305
|
data
|
310
306
|
end
|
311
307
|
|
312
|
-
##
|
313
|
-
# Returns the size of +uri+ in bytes.
|
314
|
-
|
315
|
-
def fetch_size(uri)
|
316
|
-
response = fetch_path(uri, nil, true)
|
317
|
-
|
318
|
-
response['content-length'].to_i
|
319
|
-
end
|
320
|
-
|
321
|
-
deprecate :fetch_size, :none, 2019, 12
|
322
|
-
|
323
308
|
##
|
324
309
|
# Performs a Net::HTTP request of type +request_class+ on +uri+ returning
|
325
310
|
# a Net::HTTP response object. request maintains a table of persistent
|
@@ -341,7 +326,7 @@ class Gem::RemoteFetcher
|
|
341
326
|
end
|
342
327
|
|
343
328
|
def close_all
|
344
|
-
@pools.each_value {|pool| pool.close_all}
|
329
|
+
@pools.each_value {|pool| pool.close_all }
|
345
330
|
end
|
346
331
|
|
347
332
|
private
|
@@ -355,5 +340,4 @@ class Gem::RemoteFetcher
|
|
355
340
|
@pools[proxy] ||= Gem::Request::ConnectionPools.new proxy, @cert_files
|
356
341
|
end
|
357
342
|
end
|
358
|
-
|
359
343
|
end
|
data/lib/rubygems/request.rb
CHANGED
@@ -4,7 +4,6 @@ require 'time'
|
|
4
4
|
require 'rubygems/user_interaction'
|
5
5
|
|
6
6
|
class Gem::Request
|
7
|
-
|
8
7
|
extend Gem::UserInteraction
|
9
8
|
include Gem::UserInteraction
|
10
9
|
|
@@ -46,7 +45,7 @@ class Gem::Request
|
|
46
45
|
end
|
47
46
|
|
48
47
|
def self.configure_connection_for_https(connection, cert_files)
|
49
|
-
require '
|
48
|
+
require 'openssl'
|
50
49
|
connection.use_ssl = true
|
51
50
|
connection.verify_mode =
|
52
51
|
Gem.configuration.ssl_verify_mode || OpenSSL::SSL::VERIFY_PEER
|
@@ -78,12 +77,6 @@ class Gem::Request
|
|
78
77
|
end
|
79
78
|
|
80
79
|
connection
|
81
|
-
rescue LoadError => e
|
82
|
-
raise unless (e.respond_to?(:path) && e.path == 'openssl') ||
|
83
|
-
e.message =~ / -- openssl$/
|
84
|
-
|
85
|
-
raise Gem::Exception.new(
|
86
|
-
'Unable to require openssl, install OpenSSL and rebuild Ruby (preferred) or use non-HTTPS sources')
|
87
80
|
end
|
88
81
|
|
89
82
|
def self.verify_certificate(store_context)
|
@@ -291,7 +284,6 @@ class Gem::Request
|
|
291
284
|
|
292
285
|
ua
|
293
286
|
end
|
294
|
-
|
295
287
|
end
|
296
288
|
|
297
289
|
require 'rubygems/request/http_pool'
|
@@ -1,13 +1,10 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
class Gem::Request::ConnectionPools # :nodoc:
|
4
|
-
|
5
4
|
@client = Net::HTTP
|
6
5
|
|
7
6
|
class << self
|
8
|
-
|
9
7
|
attr_accessor :client
|
10
|
-
|
11
8
|
end
|
12
9
|
|
13
10
|
def initialize(proxy_uri, cert_files)
|
@@ -31,7 +28,7 @@ class Gem::Request::ConnectionPools # :nodoc:
|
|
31
28
|
end
|
32
29
|
|
33
30
|
def close_all
|
34
|
-
@pools.each_value {|pool| pool.close_all}
|
31
|
+
@pools.each_value {|pool| pool.close_all }
|
35
32
|
end
|
36
33
|
|
37
34
|
private
|
@@ -95,5 +92,4 @@ class Gem::Request::ConnectionPools # :nodoc:
|
|
95
92
|
net_http_args
|
96
93
|
end
|
97
94
|
end
|
98
|
-
|
99
95
|
end
|
@@ -6,7 +6,6 @@
|
|
6
6
|
# use it.
|
7
7
|
|
8
8
|
class Gem::Request::HTTPPool # :nodoc:
|
9
|
-
|
10
9
|
attr_reader :cert_files, :proxy_uri
|
11
10
|
|
12
11
|
def initialize(http_args, cert_files, proxy_uri)
|
@@ -44,5 +43,4 @@ class Gem::Request::HTTPPool # :nodoc:
|
|
44
43
|
connection.start
|
45
44
|
connection
|
46
45
|
end
|
47
|
-
|
48
46
|
end
|
data/lib/rubygems/request_set.rb
CHANGED
@@ -15,7 +15,6 @@ require 'tsort'
|
|
15
15
|
# #=> ["nokogiri-1.6.0", "mini_portile-0.5.1", "pg-0.17.0"]
|
16
16
|
|
17
17
|
class Gem::RequestSet
|
18
|
-
|
19
18
|
include TSort
|
20
19
|
|
21
20
|
##
|
@@ -184,7 +183,7 @@ class Gem::RequestSet
|
|
184
183
|
if req.installed?
|
185
184
|
req.spec.spec.build_extensions
|
186
185
|
|
187
|
-
if @always_install.none? {
|
186
|
+
if @always_install.none? {|spec| spec == req.spec.spec }
|
188
187
|
yield req, nil if block_given?
|
189
188
|
next
|
190
189
|
end
|
@@ -269,7 +268,7 @@ class Gem::RequestSet
|
|
269
268
|
gem_home, ENV['GEM_HOME'] = ENV['GEM_HOME'], dir
|
270
269
|
|
271
270
|
existing = force ? [] : specs_in(dir)
|
272
|
-
existing.delete_if {
|
271
|
+
existing.delete_if {|s| @always_install.include? s }
|
273
272
|
|
274
273
|
dir = File.expand_path dir
|
275
274
|
|
@@ -283,7 +282,7 @@ class Gem::RequestSet
|
|
283
282
|
sorted_requests.each do |request|
|
284
283
|
spec = request.spec
|
285
284
|
|
286
|
-
if existing.find {
|
285
|
+
if existing.find {|s| s.full_name == spec.full_name }
|
287
286
|
yield request, nil if block_given?
|
288
287
|
next
|
289
288
|
end
|
@@ -386,7 +385,7 @@ class Gem::RequestSet
|
|
386
385
|
q.text 'sets:'
|
387
386
|
|
388
387
|
q.breakable
|
389
|
-
q.pp @sets.map {
|
388
|
+
q.pp @sets.map {|set| set.class }
|
390
389
|
end
|
391
390
|
end
|
392
391
|
|
@@ -440,7 +439,7 @@ class Gem::RequestSet
|
|
440
439
|
end
|
441
440
|
|
442
441
|
def specs
|
443
|
-
@specs ||= @requests.map {
|
442
|
+
@specs ||= @requests.map {|r| r.full_spec }
|
444
443
|
end
|
445
444
|
|
446
445
|
def specs_in(dir)
|
@@ -471,7 +470,6 @@ class Gem::RequestSet
|
|
471
470
|
yield match
|
472
471
|
end
|
473
472
|
end
|
474
|
-
|
475
473
|
end
|
476
474
|
|
477
475
|
require 'rubygems/request_set/gem_dependency_api'
|
@@ -31,7 +31,6 @@
|
|
31
31
|
# See `gem help install` and `gem help gem_dependencies` for further details.
|
32
32
|
|
33
33
|
class Gem::RequestSet::GemDependencyAPI
|
34
|
-
|
35
34
|
ENGINE_MAP = { # :nodoc:
|
36
35
|
:jruby => %w[jruby],
|
37
36
|
:jruby_18 => %w[jruby],
|
@@ -206,7 +205,7 @@ class Gem::RequestSet::GemDependencyAPI
|
|
206
205
|
@git_set = @set.git_set
|
207
206
|
@git_sources = {}
|
208
207
|
@installing = false
|
209
|
-
@requires = Hash.new {
|
208
|
+
@requires = Hash.new {|h, name| h[name] = [] }
|
210
209
|
@vendor_set = @set.vendor_set
|
211
210
|
@source_set = @set.source_set
|
212
211
|
@gem_sources = {}
|
@@ -235,7 +234,7 @@ class Gem::RequestSet::GemDependencyAPI
|
|
235
234
|
return unless (groups & @without_groups).empty?
|
236
235
|
|
237
236
|
dependencies.each do |dep|
|
238
|
-
@set.gem dep.name, *dep.requirement
|
237
|
+
@set.gem dep.name, *dep.requirement.as_list
|
239
238
|
end
|
240
239
|
end
|
241
240
|
|
@@ -842,5 +841,4 @@ Gem dependencies file #{@path} includes git reference for both ref/branch and ta
|
|
842
841
|
|
843
842
|
Gem.sources << url
|
844
843
|
end
|
845
|
-
|
846
844
|
end
|
@@ -5,12 +5,10 @@
|
|
5
5
|
# constructed.
|
6
6
|
|
7
7
|
class Gem::RequestSet::Lockfile
|
8
|
-
|
9
8
|
##
|
10
9
|
# Raised when a lockfile cannot be parsed
|
11
10
|
|
12
11
|
class ParseError < Gem::Exception
|
13
|
-
|
14
12
|
##
|
15
13
|
# The column where the error was encountered
|
16
14
|
|
@@ -36,7 +34,6 @@ class Gem::RequestSet::Lockfile
|
|
36
34
|
@path = path
|
37
35
|
super "#{message} (at line #{line} column #{column})"
|
38
36
|
end
|
39
|
-
|
40
37
|
end
|
41
38
|
|
42
39
|
##
|
@@ -89,7 +86,7 @@ class Gem::RequestSet::Lockfile
|
|
89
86
|
def add_DEPENDENCIES(out) # :nodoc:
|
90
87
|
out << "DEPENDENCIES"
|
91
88
|
|
92
|
-
out.concat @dependencies.sort_by {
|
89
|
+
out.concat @dependencies.sort_by {|name,| name }.map {|name, requirement|
|
93
90
|
" #{name}#{requirement.for_lockfile}"
|
94
91
|
}
|
95
92
|
|
@@ -103,12 +100,12 @@ class Gem::RequestSet::Lockfile
|
|
103
100
|
request.spec.source.uri
|
104
101
|
end
|
105
102
|
|
106
|
-
source_groups.sort_by {
|
103
|
+
source_groups.sort_by {|group,| group.to_s }.map do |group, requests|
|
107
104
|
out << "GEM"
|
108
105
|
out << " remote: #{group}"
|
109
106
|
out << " specs:"
|
110
107
|
|
111
|
-
requests.sort_by {
|
108
|
+
requests.sort_by {|request| request.name }.each do |request|
|
112
109
|
next if request.spec.name == 'bundler'
|
113
110
|
platform = "-#{request.spec.platform}" unless
|
114
111
|
Gem::Platform::RUBY == request.spec.platform
|
@@ -140,10 +137,10 @@ class Gem::RequestSet::Lockfile
|
|
140
137
|
out << " revision: #{revision}"
|
141
138
|
out << " specs:"
|
142
139
|
|
143
|
-
requests.sort_by {
|
140
|
+
requests.sort_by {|request| request.name }.each do |request|
|
144
141
|
out << " #{request.name} (#{request.version})"
|
145
142
|
|
146
|
-
dependencies = request.spec.dependencies.sort_by {
|
143
|
+
dependencies = request.spec.dependencies.sort_by {|dep| dep.name }
|
147
144
|
dependencies.each do |dep|
|
148
145
|
out << " #{dep.name}#{dep.requirement.for_lockfile}"
|
149
146
|
end
|
@@ -185,9 +182,9 @@ class Gem::RequestSet::Lockfile
|
|
185
182
|
def add_PLATFORMS(out) # :nodoc:
|
186
183
|
out << "PLATFORMS"
|
187
184
|
|
188
|
-
platforms = requests.map {
|
185
|
+
platforms = requests.map {|request| request.spec.platform }.uniq
|
189
186
|
|
190
|
-
platforms = platforms.sort_by {
|
187
|
+
platforms = platforms.sort_by {|platform| platform.to_s }
|
191
188
|
|
192
189
|
platforms.each do |platform|
|
193
190
|
out << " #{platform}"
|
@@ -197,7 +194,7 @@ class Gem::RequestSet::Lockfile
|
|
197
194
|
end
|
198
195
|
|
199
196
|
def spec_groups
|
200
|
-
requests.group_by {
|
197
|
+
requests.group_by {|request| request.spec.class }
|
201
198
|
end
|
202
199
|
|
203
200
|
##
|
@@ -237,7 +234,6 @@ class Gem::RequestSet::Lockfile
|
|
237
234
|
def requests
|
238
235
|
@set.sorted_requests
|
239
236
|
end
|
240
|
-
|
241
237
|
end
|
242
238
|
|
243
239
|
require 'rubygems/request_set/lockfile/tokenizer'
|
@@ -2,7 +2,6 @@
|
|
2
2
|
require 'rubygems/request_set/lockfile/parser'
|
3
3
|
|
4
4
|
class Gem::RequestSet::Lockfile::Tokenizer
|
5
|
-
|
6
5
|
Token = Struct.new :type, :value, :column, :line
|
7
6
|
EOF = Token.new :EOF
|
8
7
|
|
@@ -23,7 +22,7 @@ class Gem::RequestSet::Lockfile::Tokenizer
|
|
23
22
|
end
|
24
23
|
|
25
24
|
def to_a
|
26
|
-
@tokens.map {
|
25
|
+
@tokens.map {|token| [token.type, token.value, token.column, token.line] }
|
27
26
|
end
|
28
27
|
|
29
28
|
def skip(type)
|
@@ -110,5 +109,4 @@ class Gem::RequestSet::Lockfile::Tokenizer
|
|
110
109
|
|
111
110
|
@tokens
|
112
111
|
end
|
113
|
-
|
114
112
|
end
|
data/lib/rubygems/requirement.rb
CHANGED
@@ -1,5 +1,4 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
-
require "rubygems/version"
|
3
2
|
require "rubygems/deprecate"
|
4
3
|
|
5
4
|
##
|
@@ -10,20 +9,19 @@ require "rubygems/deprecate"
|
|
10
9
|
# together in RubyGems.
|
11
10
|
|
12
11
|
class Gem::Requirement
|
13
|
-
|
14
12
|
OPS = { #:nodoc:
|
15
|
-
"=" => lambda {
|
16
|
-
"!=" => lambda {
|
17
|
-
">" => lambda {
|
18
|
-
"<" => lambda {
|
19
|
-
">=" => lambda {
|
20
|
-
"<=" => lambda {
|
21
|
-
"~>" => lambda {
|
13
|
+
"=" => lambda {|v, r| v == r },
|
14
|
+
"!=" => lambda {|v, r| v != r },
|
15
|
+
">" => lambda {|v, r| v > r },
|
16
|
+
"<" => lambda {|v, r| v < r },
|
17
|
+
">=" => lambda {|v, r| v >= r },
|
18
|
+
"<=" => lambda {|v, r| v <= r },
|
19
|
+
"~>" => lambda {|v, r| v >= r && v.release < r.bump }
|
22
20
|
}.freeze
|
23
21
|
|
24
22
|
SOURCE_SET_REQUIREMENT = Struct.new(:for_lockfile).new "!" # :nodoc:
|
25
23
|
|
26
|
-
quoted = OPS.keys.map {
|
24
|
+
quoted = OPS.keys.map {|k| Regexp.quote k }.join "|"
|
27
25
|
PATTERN_RAW = "\\s*(#{quoted})?\\s*(#{Gem::Version::VERSION_PATTERN})\\s*".freeze # :nodoc:
|
28
26
|
|
29
27
|
##
|
@@ -113,7 +111,7 @@ class Gem::Requirement
|
|
113
111
|
elsif $1 == ">=" && $2 == "0.a"
|
114
112
|
DefaultPrereleaseRequirement
|
115
113
|
else
|
116
|
-
[$1 || "=", Gem::Version.new($2)]
|
114
|
+
[-($1 || "="), Gem::Version.new($2)]
|
117
115
|
end
|
118
116
|
end
|
119
117
|
|
@@ -137,7 +135,7 @@ class Gem::Requirement
|
|
137
135
|
if requirements.empty?
|
138
136
|
@requirements = [DefaultRequirement]
|
139
137
|
else
|
140
|
-
@requirements = requirements.map! {
|
138
|
+
@requirements = requirements.map! {|r| self.class.parse r }
|
141
139
|
end
|
142
140
|
end
|
143
141
|
|
@@ -148,7 +146,7 @@ class Gem::Requirement
|
|
148
146
|
new = new.flatten
|
149
147
|
new.compact!
|
150
148
|
new.uniq!
|
151
|
-
new = new.map {
|
149
|
+
new = new.map {|r| self.class.parse r }
|
152
150
|
|
153
151
|
@requirements.concat new
|
154
152
|
end
|
@@ -188,7 +186,7 @@ class Gem::Requirement
|
|
188
186
|
end
|
189
187
|
|
190
188
|
def as_list # :nodoc:
|
191
|
-
requirements.map {
|
189
|
+
requirements.map {|op, version| "#{op} #{version}" }
|
192
190
|
end
|
193
191
|
|
194
192
|
def hash # :nodoc:
|
@@ -233,7 +231,7 @@ class Gem::Requirement
|
|
233
231
|
# are prereleases
|
234
232
|
|
235
233
|
def prerelease?
|
236
|
-
requirements.any? {
|
234
|
+
requirements.any? {|r| r.last.prerelease? }
|
237
235
|
end
|
238
236
|
|
239
237
|
def pretty_print(q) # :nodoc:
|
@@ -249,7 +247,7 @@ class Gem::Requirement
|
|
249
247
|
raise ArgumentError, "Need a Gem::Version: #{version.inspect}" unless
|
250
248
|
Gem::Version === version
|
251
249
|
# #28965: syck has a bug with unquoted '=' YAML.loading as YAML::DefaultKey
|
252
|
-
requirements.all? {
|
250
|
+
requirements.all? {|op, rv| (OPS[op] || OPS["="]).call version, rv }
|
253
251
|
end
|
254
252
|
|
255
253
|
alias :=== :satisfied_by?
|
@@ -272,7 +270,7 @@ class Gem::Requirement
|
|
272
270
|
return unless Gem::Requirement === other
|
273
271
|
|
274
272
|
# An == check is always necessary
|
275
|
-
return false unless
|
273
|
+
return false unless _sorted_requirements == other._sorted_requirements
|
276
274
|
|
277
275
|
# An == check is sufficient unless any requirements use ~>
|
278
276
|
return true unless _tilde_requirements.any?
|
@@ -284,8 +282,12 @@ class Gem::Requirement
|
|
284
282
|
|
285
283
|
protected
|
286
284
|
|
285
|
+
def _sorted_requirements
|
286
|
+
@_sorted_requirements ||= requirements.sort_by(&:to_s)
|
287
|
+
end
|
288
|
+
|
287
289
|
def _tilde_requirements
|
288
|
-
|
290
|
+
@_tilde_requirements ||= _sorted_requirements.select {|r| r.first == "~>" }
|
289
291
|
end
|
290
292
|
|
291
293
|
private
|
@@ -300,14 +302,11 @@ class Gem::Requirement
|
|
300
302
|
end
|
301
303
|
end
|
302
304
|
end
|
303
|
-
|
304
305
|
end
|
305
306
|
|
306
307
|
class Gem::Version
|
307
|
-
|
308
308
|
# This is needed for compatibility with older yaml
|
309
309
|
# gemspecs.
|
310
310
|
|
311
311
|
Requirement = Gem::Requirement # :nodoc:
|
312
|
-
|
313
312
|
end
|