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
@@ -4,7 +4,6 @@
|
|
4
4
|
# Kind off like BestSet but filters the sources for gems
|
5
5
|
|
6
6
|
class Gem::Resolver::SourceSet < Gem::Resolver::Set
|
7
|
-
|
8
7
|
##
|
9
8
|
# Creates a SourceSet for the given +sources+ or Gem::sources if none are
|
10
9
|
# specified. +sources+ must be a Gem::SourceList.
|
@@ -43,5 +42,4 @@ class Gem::Resolver::SourceSet < Gem::Resolver::Set
|
|
43
42
|
link = @links[name]
|
44
43
|
@sets[link] ||= Gem::Source.new(link).dependency_resolver_set if link
|
45
44
|
end
|
46
|
-
|
47
45
|
end
|
@@ -4,7 +4,6 @@
|
|
4
4
|
# Resolver specifications that are backed by a Gem::Specification.
|
5
5
|
|
6
6
|
class Gem::Resolver::SpecSpecification < Gem::Resolver::Specification
|
7
|
-
|
8
7
|
##
|
9
8
|
# A SpecSpecification is created for a +set+ for a Gem::Specification in
|
10
9
|
# +spec+. The +source+ is either where the +spec+ came from, or should be
|
@@ -52,5 +51,4 @@ class Gem::Resolver::SpecSpecification < Gem::Resolver::Specification
|
|
52
51
|
def version
|
53
52
|
spec.version
|
54
53
|
end
|
55
|
-
|
56
54
|
end
|
@@ -5,7 +5,6 @@
|
|
5
5
|
# dependency resolution in the resolver is included.
|
6
6
|
|
7
7
|
class Gem::Resolver::Specification
|
8
|
-
|
9
8
|
##
|
10
9
|
# The dependencies of the gem for this specification
|
11
10
|
|
@@ -111,5 +110,4 @@ class Gem::Resolver::Specification
|
|
111
110
|
def local? # :nodoc:
|
112
111
|
false
|
113
112
|
end
|
114
|
-
|
115
113
|
end
|
@@ -1,6 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
class Gem::Resolver::Stats
|
3
|
-
|
4
3
|
def initialize
|
5
4
|
@max_depth = 0
|
6
5
|
@max_requirements = 0
|
@@ -43,5 +42,4 @@ class Gem::Resolver::Stats
|
|
43
42
|
$stdout.printf PATTERN, "Backtracking #", @backtracking
|
44
43
|
$stdout.printf PATTERN, "Iteration #", @iterations
|
45
44
|
end
|
46
|
-
|
47
45
|
end
|
@@ -15,7 +15,6 @@
|
|
15
15
|
# rake.gemspec (watching the given name).
|
16
16
|
|
17
17
|
class Gem::Resolver::VendorSet < Gem::Resolver::Set
|
18
|
-
|
19
18
|
##
|
20
19
|
# The specifications for this set.
|
21
20
|
|
@@ -83,5 +82,4 @@ class Gem::Resolver::VendorSet < Gem::Resolver::Set
|
|
83
82
|
end
|
84
83
|
end
|
85
84
|
end
|
86
|
-
|
87
85
|
end
|
@@ -5,7 +5,6 @@
|
|
5
5
|
# option.
|
6
6
|
|
7
7
|
class Gem::Resolver::VendorSpecification < Gem::Resolver::SpecSpecification
|
8
|
-
|
9
8
|
def ==(other) # :nodoc:
|
10
9
|
self.class === other and
|
11
10
|
@set == other.set and
|
@@ -20,5 +19,4 @@ class Gem::Resolver::VendorSpecification < Gem::Resolver::SpecSpecification
|
|
20
19
|
def install(options = {})
|
21
20
|
yield nil
|
22
21
|
end
|
23
|
-
|
24
22
|
end
|
@@ -1,14 +1,12 @@
|
|
1
1
|
require 'base64'
|
2
2
|
require 'digest'
|
3
|
-
require 'openssl'
|
3
|
+
require 'rubygems/openssl'
|
4
4
|
|
5
5
|
##
|
6
6
|
# S3URISigner implements AWS SigV4 for S3 Source to avoid a dependency on the aws-sdk-* gems
|
7
7
|
# More on AWS SigV4: https://docs.aws.amazon.com/AmazonS3/latest/API/sig-v4-authenticating-requests.html
|
8
8
|
class Gem::S3URISigner
|
9
|
-
|
10
9
|
class ConfigurationError < Gem::Exception
|
11
|
-
|
12
10
|
def initialize(message)
|
13
11
|
super message
|
14
12
|
end
|
@@ -16,11 +14,9 @@ class Gem::S3URISigner
|
|
16
14
|
def to_s # :nodoc:
|
17
15
|
"#{super}"
|
18
16
|
end
|
19
|
-
|
20
17
|
end
|
21
18
|
|
22
19
|
class InstanceProfileError < Gem::Exception
|
23
|
-
|
24
20
|
def initialize(message)
|
25
21
|
super message
|
26
22
|
end
|
@@ -28,7 +24,6 @@ class Gem::S3URISigner
|
|
28
24
|
def to_s # :nodoc:
|
29
25
|
"#{super}"
|
30
26
|
end
|
31
|
-
|
32
27
|
end
|
33
28
|
|
34
29
|
attr_accessor :uri
|
@@ -179,5 +174,4 @@ class Gem::S3URISigner
|
|
179
174
|
BASE64_URI_TRANSLATE = { "+" => "%2B", "/" => "%2F", "=" => "%3D", "\n" => "" }.freeze
|
180
175
|
EC2_IAM_INFO = "http://169.254.169.254/latest/meta-data/iam/info".freeze
|
181
176
|
EC2_IAM_SECURITY_CREDENTIALS = "http://169.254.169.254/latest/meta-data/iam/security-credentials/".freeze
|
182
|
-
|
183
177
|
end
|
data/lib/rubygems/safe_yaml.rb
CHANGED
@@ -7,7 +7,7 @@ module Gem
|
|
7
7
|
# Psych.safe_load
|
8
8
|
|
9
9
|
module SafeYAML
|
10
|
-
PERMITTED_CLASSES = %w
|
10
|
+
PERMITTED_CLASSES = %w[
|
11
11
|
Symbol
|
12
12
|
Time
|
13
13
|
Date
|
@@ -19,12 +19,12 @@ module Gem
|
|
19
19
|
Gem::Version::Requirement
|
20
20
|
YAML::Syck::DefaultKey
|
21
21
|
Syck::DefaultKey
|
22
|
-
|
22
|
+
].freeze
|
23
23
|
|
24
|
-
PERMITTED_SYMBOLS = %w
|
24
|
+
PERMITTED_SYMBOLS = %w[
|
25
25
|
development
|
26
26
|
runtime
|
27
|
-
|
27
|
+
].freeze
|
28
28
|
|
29
29
|
if ::YAML.respond_to? :safe_load
|
30
30
|
def self.safe_load(input)
|
data/lib/rubygems/security.rb
CHANGED
@@ -7,13 +7,7 @@
|
|
7
7
|
|
8
8
|
require 'rubygems/exceptions'
|
9
9
|
require 'fileutils'
|
10
|
-
|
11
|
-
begin
|
12
|
-
require 'openssl'
|
13
|
-
rescue LoadError => e
|
14
|
-
raise unless (e.respond_to?(:path) && e.path == 'openssl') ||
|
15
|
-
e.message =~ / -- openssl$/
|
16
|
-
end
|
10
|
+
require_relative 'openssl'
|
17
11
|
|
18
12
|
##
|
19
13
|
# = Signing gems
|
@@ -62,11 +56,11 @@ end
|
|
62
56
|
#
|
63
57
|
# $ tar tf your-gem-1.0.gem
|
64
58
|
# metadata.gz
|
65
|
-
# metadata.gz.sum
|
66
59
|
# metadata.gz.sig # metadata signature
|
67
60
|
# data.tar.gz
|
68
|
-
# data.tar.gz.sum
|
69
61
|
# data.tar.gz.sig # data signature
|
62
|
+
# checksums.yaml.gz
|
63
|
+
# checksums.yaml.gz.sig # checksums signature
|
70
64
|
#
|
71
65
|
# === Manually signing gems
|
72
66
|
#
|
@@ -161,6 +155,8 @@ end
|
|
161
155
|
# -K, --private-key KEY Key for --sign or --build
|
162
156
|
# -s, --sign CERT Signs CERT with the key from -K
|
163
157
|
# and the certificate from -C
|
158
|
+
# -d, --days NUMBER_OF_DAYS Days before the certificate expires
|
159
|
+
# -R, --re-sign Re-signs the certificate from -C with the key from -K
|
164
160
|
#
|
165
161
|
# We've already covered the <code>--build</code> option, and the
|
166
162
|
# <code>--add</code>, <code>--list</code>, and <code>--remove</code> commands
|
@@ -265,7 +261,7 @@ end
|
|
265
261
|
# 2. Grab the public key from the gemspec
|
266
262
|
#
|
267
263
|
# gem spec some_signed_gem-1.0.gem cert_chain | \
|
268
|
-
# ruby -ryaml -e 'puts YAML.
|
264
|
+
# ruby -ryaml -e 'puts YAML.load($stdin)' > public_key.crt
|
269
265
|
#
|
270
266
|
# 3. Generate a SHA1 hash of the data.tar.gz
|
271
267
|
#
|
@@ -336,28 +332,10 @@ module Gem::Security
|
|
336
332
|
|
337
333
|
class Exception < Gem::Exception; end
|
338
334
|
|
339
|
-
##
|
340
|
-
# Digest algorithm used to sign gems
|
341
|
-
|
342
|
-
DIGEST_ALGORITHM =
|
343
|
-
if defined?(OpenSSL::Digest::SHA256)
|
344
|
-
OpenSSL::Digest::SHA256
|
345
|
-
elsif defined?(OpenSSL::Digest::SHA1)
|
346
|
-
OpenSSL::Digest::SHA1
|
347
|
-
else
|
348
|
-
require 'digest'
|
349
|
-
Digest::SHA512
|
350
|
-
end
|
351
|
-
|
352
335
|
##
|
353
336
|
# Used internally to select the signing digest from all computed digests
|
354
337
|
|
355
|
-
DIGEST_NAME = # :nodoc:
|
356
|
-
if DIGEST_ALGORITHM.method_defined? :name
|
357
|
-
DIGEST_ALGORITHM.new.name
|
358
|
-
else
|
359
|
-
DIGEST_ALGORITHM.name[/::([^:]+)\z/, 1]
|
360
|
-
end
|
338
|
+
DIGEST_NAME = 'SHA256' # :nodoc:
|
361
339
|
|
362
340
|
##
|
363
341
|
# Algorithm for creating the key pair used to sign gems
|
@@ -465,6 +443,22 @@ module Gem::Security
|
|
465
443
|
sign certificate, key, certificate, age, extensions, serial
|
466
444
|
end
|
467
445
|
|
446
|
+
##
|
447
|
+
# Creates a new digest instance using the specified +algorithm+. The default
|
448
|
+
# is SHA256.
|
449
|
+
|
450
|
+
if defined?(OpenSSL::Digest)
|
451
|
+
def self.create_digest(algorithm = DIGEST_NAME)
|
452
|
+
OpenSSL::Digest.new(algorithm)
|
453
|
+
end
|
454
|
+
else
|
455
|
+
require 'digest'
|
456
|
+
|
457
|
+
def self.create_digest(algorithm = DIGEST_NAME)
|
458
|
+
Digest.const_get(algorithm).new
|
459
|
+
end
|
460
|
+
end
|
461
|
+
|
468
462
|
##
|
469
463
|
# Creates a new key pair of the specified +length+ and +algorithm+. The
|
470
464
|
# default is a 3072 bit RSA key.
|
@@ -483,7 +477,7 @@ module Gem::Security
|
|
483
477
|
|
484
478
|
dcs = dcs.split '.'
|
485
479
|
|
486
|
-
name = "CN=#{cn}/#{dcs.map {
|
480
|
+
name = "CN=#{cn}/#{dcs.map {|dc| "DC=#{dc}" }.join '/'}"
|
487
481
|
|
488
482
|
OpenSSL::X509::Name.parse name
|
489
483
|
end
|
@@ -526,7 +520,7 @@ module Gem::Security
|
|
526
520
|
|
527
521
|
##
|
528
522
|
# Sign the public key from +certificate+ with the +signing_key+ and
|
529
|
-
# +signing_cert+, using the Gem::Security::
|
523
|
+
# +signing_cert+, using the Gem::Security::DIGEST_NAME. Uses the
|
530
524
|
# default certificate validity range and extensions.
|
531
525
|
#
|
532
526
|
# Returns the newly signed certificate.
|
@@ -553,7 +547,7 @@ module Gem::Security
|
|
553
547
|
signed = create_cert signee_subject, signee_key, age, extensions, serial
|
554
548
|
signed.issuer = signing_cert.subject
|
555
549
|
|
556
|
-
signed.sign signing_key, Gem::Security::
|
550
|
+
signed.sign signing_key, Gem::Security::DIGEST_NAME
|
557
551
|
end
|
558
552
|
|
559
553
|
##
|
@@ -8,7 +8,6 @@ require 'rubygems/user_interaction'
|
|
8
8
|
# Gem::Security::Policies.
|
9
9
|
|
10
10
|
class Gem::Security::Policy
|
11
|
-
|
12
11
|
include Gem::UserInteraction
|
13
12
|
|
14
13
|
attr_reader :name
|
@@ -25,8 +24,6 @@ class Gem::Security::Policy
|
|
25
24
|
# options.
|
26
25
|
|
27
26
|
def initialize(name, policy = {}, opt = {})
|
28
|
-
require 'openssl'
|
29
|
-
|
30
27
|
@name = name
|
31
28
|
|
32
29
|
@opt = opt
|
@@ -76,7 +73,7 @@ class Gem::Security::Policy
|
|
76
73
|
|
77
74
|
def check_data(public_key, digest, signature, data)
|
78
75
|
raise Gem::Security::Exception, "invalid signature" unless
|
79
|
-
public_key.verify digest
|
76
|
+
public_key.verify digest, signature, data.digest
|
80
77
|
|
81
78
|
true
|
82
79
|
end
|
@@ -139,7 +136,7 @@ class Gem::Security::Policy
|
|
139
136
|
raise Gem::Security::Exception,
|
140
137
|
"root certificate #{root.subject} is not self-signed " +
|
141
138
|
"(issuer #{root.issuer})" if
|
142
|
-
root.issuer
|
139
|
+
root.issuer != root.subject
|
143
140
|
|
144
141
|
check_cert root, root, time
|
145
142
|
end
|
@@ -224,7 +221,7 @@ class Gem::Security::Policy
|
|
224
221
|
end
|
225
222
|
|
226
223
|
opt = @opt
|
227
|
-
digester = Gem::Security
|
224
|
+
digester = Gem::Security.create_digest
|
228
225
|
trust_dir = opt[:trust_dir]
|
229
226
|
time = Time.now
|
230
227
|
|
@@ -291,5 +288,4 @@ class Gem::Security::Policy
|
|
291
288
|
end
|
292
289
|
|
293
290
|
alias to_s name # :nodoc:
|
294
|
-
|
295
291
|
end
|
@@ -5,7 +5,6 @@
|
|
5
5
|
require "rubygems/user_interaction"
|
6
6
|
|
7
7
|
class Gem::Security::Signer
|
8
|
-
|
9
8
|
include Gem::UserInteraction
|
10
9
|
|
11
10
|
##
|
@@ -39,7 +38,7 @@ class Gem::Security::Signer
|
|
39
38
|
}.freeze
|
40
39
|
|
41
40
|
##
|
42
|
-
#
|
41
|
+
# Attempts to re-sign an expired cert with a given private key
|
43
42
|
def self.re_sign_cert(expired_cert, expired_cert_path, private_key)
|
44
43
|
return unless expired_cert.not_after < Time.now
|
45
44
|
|
@@ -81,8 +80,8 @@ class Gem::Security::Signer
|
|
81
80
|
@cert_chain = [default_cert] if File.exist? default_cert
|
82
81
|
end
|
83
82
|
|
84
|
-
@digest_algorithm = Gem::Security::DIGEST_ALGORITHM
|
85
83
|
@digest_name = Gem::Security::DIGEST_NAME
|
84
|
+
@digest_algorithm = Gem::Security.create_digest(@digest_name)
|
86
85
|
|
87
86
|
if @key && !@key.is_a?(OpenSSL::PKey::RSA)
|
88
87
|
@key = OpenSSL::PKey::RSA.new(File.read(@key), @passphrase)
|
@@ -106,10 +105,10 @@ class Gem::Security::Signer
|
|
106
105
|
# this value is preferred, otherwise the subject is used.
|
107
106
|
|
108
107
|
def extract_name(cert) # :nodoc:
|
109
|
-
subject_alt_name = cert.extensions.find {
|
108
|
+
subject_alt_name = cert.extensions.find {|e| 'subjectAltName' == e.oid }
|
110
109
|
|
111
110
|
if subject_alt_name
|
112
|
-
/\Aemail:/ =~ subject_alt_name.value
|
111
|
+
/\Aemail:/ =~ subject_alt_name.value # rubocop:disable Performance/StartWith
|
113
112
|
|
114
113
|
$' || subject_alt_name.value
|
115
114
|
else
|
@@ -202,5 +201,4 @@ class Gem::Security::Signer
|
|
202
201
|
end
|
203
202
|
end
|
204
203
|
end
|
205
|
-
|
206
204
|
end
|
@@ -4,7 +4,6 @@
|
|
4
4
|
# verification.
|
5
5
|
|
6
6
|
class Gem::Security::TrustDir
|
7
|
-
|
8
7
|
##
|
9
8
|
# Default permissions for the trust directory and its contents
|
10
9
|
|
@@ -26,7 +25,7 @@ class Gem::Security::TrustDir
|
|
26
25
|
@dir = dir
|
27
26
|
@permissions = permissions
|
28
27
|
|
29
|
-
@digester = Gem::Security
|
28
|
+
@digester = Gem::Security.create_digest
|
30
29
|
end
|
31
30
|
|
32
31
|
##
|
@@ -115,5 +114,4 @@ class Gem::Security::TrustDir
|
|
115
114
|
FileUtils.mkdir_p @dir, :mode => @permissions[:trust_dir]
|
116
115
|
end
|
117
116
|
end
|
118
|
-
|
119
117
|
end
|
data/lib/rubygems/server.rb
CHANGED
@@ -29,7 +29,6 @@ require 'rubygems/rdoc'
|
|
29
29
|
# TODO Refactor into a real WEBrick servlet to remove code duplication.
|
30
30
|
|
31
31
|
class Gem::Server
|
32
|
-
|
33
32
|
attr_reader :spec_dirs
|
34
33
|
|
35
34
|
include ERB::Util
|
@@ -442,8 +441,8 @@ div.method-source-code pre { color: #ffdead; overflow: hidden; }
|
|
442
441
|
logger = WEBrick::Log.new nil, WEBrick::BasicLog::FATAL
|
443
442
|
@server = WEBrick::HTTPServer.new :DoNotListen => true, :Logger => logger
|
444
443
|
|
445
|
-
@spec_dirs = @gem_dirs.map {
|
446
|
-
@spec_dirs.reject! {
|
444
|
+
@spec_dirs = @gem_dirs.map {|gem_dir| File.join gem_dir, 'specifications' }
|
445
|
+
@spec_dirs.reject! {|spec_dir| !File.directory? spec_dir }
|
447
446
|
|
448
447
|
reset_gems
|
449
448
|
|
@@ -458,7 +457,7 @@ div.method-source-code pre { color: #ffdead; overflow: hidden; }
|
|
458
457
|
|
459
458
|
def uri_encode(str)
|
460
459
|
str.gsub(URI::UNSAFE) do |match|
|
461
|
-
match.each_byte.map {
|
460
|
+
match.each_byte.map {|c| sprintf('%%%02X', c.ord) }.join
|
462
461
|
end
|
463
462
|
end
|
464
463
|
|
@@ -573,7 +572,7 @@ div.method-source-code pre { color: #ffdead; overflow: hidden; }
|
|
573
572
|
add_date res
|
574
573
|
|
575
574
|
case req.request_uri.path
|
576
|
-
when %r
|
575
|
+
when %r{^/quick/(Marshal.#{Regexp.escape Gem.marshal_version}/)?(.*?)\.gemspec\.rz$} then
|
577
576
|
marshal_format, full_name = $1, $2
|
578
577
|
specs = Gem::Specification.find_all_by_full_name(full_name)
|
579
578
|
|
@@ -615,11 +614,11 @@ div.method-source-code pre { color: #ffdead; overflow: hidden; }
|
|
615
614
|
}
|
616
615
|
end
|
617
616
|
|
618
|
-
deps = deps.sort_by {
|
617
|
+
deps = deps.sort_by {|dep| [dep["name"].downcase, dep["version"]] }
|
619
618
|
deps.last["is_last"] = true unless deps.empty?
|
620
619
|
|
621
620
|
# executables
|
622
|
-
executables = spec.executables.sort.collect {
|
621
|
+
executables = spec.executables.sort.collect {|exec| {"executable" => exec} }
|
623
622
|
executables = nil if executables.empty?
|
624
623
|
executables.last["is_last"] = true if executables
|
625
624
|
|
@@ -661,14 +660,14 @@ div.method-source-code pre { color: #ffdead; overflow: hidden; }
|
|
661
660
|
"only_one_executable" => true,
|
662
661
|
"full_name" => "rubygems-#{Gem::VERSION}",
|
663
662
|
"has_deps" => false,
|
664
|
-
"homepage" => "
|
663
|
+
"homepage" => "https://guides.rubygems.org/",
|
665
664
|
"name" => 'rubygems',
|
666
665
|
"ri_installed" => true,
|
667
666
|
"summary" => "RubyGems itself",
|
668
667
|
"version" => Gem::VERSION,
|
669
668
|
}
|
670
669
|
|
671
|
-
specs = specs.sort_by {
|
670
|
+
specs = specs.sort_by {|spec| [spec["name"].downcase, spec["version"]] }
|
672
671
|
specs.last["is_last"] = true
|
673
672
|
|
674
673
|
# tag all specs with first_name_entry
|
@@ -869,11 +868,10 @@ div.method-source-code pre { color: #ffdead; overflow: hidden; }
|
|
869
868
|
listeners = @server.listeners.map{|l| l.addr[2] }
|
870
869
|
|
871
870
|
# TODO: 0.0.0.0 == any, not localhost.
|
872
|
-
host = listeners.any?{|l| l == '0.0.0.0'} ? 'localhost' : listeners.first
|
871
|
+
host = listeners.any?{|l| l == '0.0.0.0' } ? 'localhost' : listeners.first
|
873
872
|
|
874
873
|
say "Launching browser to http://#{host}:#{@port}"
|
875
874
|
|
876
875
|
system("#{@launch} http://#{host}:#{@port}")
|
877
876
|
end
|
878
|
-
|
879
877
|
end
|