rubygems-update 3.1.4 → 3.2.14
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/{History.txt → CHANGELOG.md} +791 -492
- data/CODE_OF_CONDUCT.md +55 -19
- data/CONTRIBUTING.md +24 -10
- data/Manifest.txt +77 -104
- data/POLICIES.md +6 -12
- data/README.md +1 -1
- data/Rakefile +75 -101
- data/bin/update_rubygems +1 -1
- data/bundler/CHANGELOG.md +1717 -1426
- data/bundler/README.md +6 -8
- data/bundler/UPGRADING.md +18 -32
- data/bundler/bundler.gemspec +4 -4
- data/bundler/exe/bundle +3 -0
- data/bundler/lib/bundler.rb +33 -9
- data/bundler/lib/bundler/build_metadata.rb +4 -12
- data/bundler/lib/bundler/cli.rb +56 -21
- data/bundler/lib/bundler/cli/add.rb +1 -1
- data/bundler/lib/bundler/cli/binstubs.rb +6 -2
- data/bundler/lib/bundler/cli/cache.rb +2 -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 -4
- data/bundler/lib/bundler/cli/fund.rb +36 -0
- data/bundler/lib/bundler/cli/gem.rb +121 -28
- 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 +13 -11
- 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 +87 -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 +3 -1
- data/bundler/lib/bundler/compact_index_client.rb +1 -1
- data/bundler/lib/bundler/compact_index_client/cache.rb +6 -14
- data/bundler/lib/bundler/compact_index_client/gem_parser.rb +28 -0
- data/bundler/lib/bundler/compact_index_client/updater.rb +6 -14
- data/bundler/lib/bundler/definition.rb +115 -123
- data/bundler/lib/bundler/dep_proxy.rb +16 -9
- data/bundler/lib/bundler/dependency.rb +3 -10
- data/bundler/lib/bundler/dsl.rb +40 -33
- data/bundler/lib/bundler/endpoint_specification.rb +1 -1
- data/bundler/lib/bundler/env.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 -4
- data/bundler/lib/bundler/fetcher.rb +4 -4
- 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 +3 -4
- data/bundler/lib/bundler/friendly_errors.rb +22 -13
- data/bundler/lib/bundler/gem_helper.rb +35 -18
- data/bundler/lib/bundler/gem_helpers.rb +36 -25
- data/bundler/lib/bundler/gem_version_promoter.rb +4 -4
- data/bundler/lib/bundler/graph.rb +1 -1
- data/bundler/lib/bundler/index.rb +12 -7
- data/bundler/lib/bundler/injector.rb +22 -4
- data/bundler/lib/bundler/inline.rb +2 -1
- data/bundler/lib/bundler/installer.rb +37 -49
- data/bundler/lib/bundler/installer/gem_installer.rb +3 -3
- data/bundler/lib/bundler/installer/parallel_installer.rb +16 -18
- data/bundler/lib/bundler/installer/standalone.rb +17 -2
- data/bundler/lib/bundler/lazy_specification.rb +40 -25
- data/bundler/lib/bundler/lockfile_generator.rb +1 -1
- data/bundler/lib/bundler/lockfile_parser.rb +4 -14
- data/bundler/lib/bundler/man/.document +1 -0
- data/bundler/{man → lib/bundler/man}/bundle-add.1 +1 -1
- data/bundler/{man/bundle-add.ronn → lib/bundler/man/bundle-add.1.ronn} +0 -0
- data/bundler/{man → lib/bundler/man}/bundle-binstubs.1 +5 -3
- data/bundler/{man/bundle-binstubs.ronn → lib/bundler/man/bundle-binstubs.1.ronn} +2 -4
- data/bundler/{man → lib/bundler/man}/bundle-cache.1 +1 -1
- data/bundler/{man/bundle-cache.ronn → lib/bundler/man/bundle-cache.1.ronn} +0 -0
- data/bundler/{man → lib/bundler/man}/bundle-check.1 +1 -1
- data/bundler/{man/bundle-check.ronn → lib/bundler/man/bundle-check.1.ronn} +0 -0
- data/bundler/{man → lib/bundler/man}/bundle-clean.1 +1 -1
- data/bundler/{man/bundle-clean.ronn → lib/bundler/man/bundle-clean.1.ronn} +0 -0
- data/bundler/{man → lib/bundler/man}/bundle-config.1 +22 -31
- data/bundler/{man/bundle-config.ronn → lib/bundler/man/bundle-config.1.ronn} +30 -40
- data/bundler/{man → lib/bundler/man}/bundle-doctor.1 +1 -1
- data/bundler/{man/bundle-doctor.ronn → lib/bundler/man/bundle-doctor.1.ronn} +0 -0
- data/bundler/{man → lib/bundler/man}/bundle-exec.1 +1 -1
- data/bundler/{man/bundle-exec.ronn → lib/bundler/man/bundle-exec.1.ronn} +0 -0
- data/bundler/{man → lib/bundler/man}/bundle-gem.1 +25 -3
- data/bundler/{man/bundle-gem.ronn → lib/bundler/man/bundle-gem.1.ronn} +30 -7
- data/bundler/{man → lib/bundler/man}/bundle-info.1 +1 -1
- data/bundler/{man/bundle-info.ronn → lib/bundler/man/bundle-info.1.ronn} +0 -0
- data/bundler/{man → lib/bundler/man}/bundle-init.1 +1 -1
- data/bundler/{man/bundle-init.ronn → lib/bundler/man/bundle-init.1.ronn} +0 -0
- data/bundler/{man → lib/bundler/man}/bundle-inject.1 +1 -1
- data/bundler/{man/bundle-inject.ronn → lib/bundler/man/bundle-inject.1.ronn} +0 -0
- data/bundler/{man → lib/bundler/man}/bundle-install.1 +30 -3
- data/bundler/{man/bundle-install.ronn → lib/bundler/man/bundle-install.1.ronn} +25 -3
- data/bundler/{man → lib/bundler/man}/bundle-list.1 +7 -7
- data/bundler/{man/bundle-list.ronn → lib/bundler/man/bundle-list.1.ronn} +6 -6
- data/bundler/{man → lib/bundler/man}/bundle-lock.1 +1 -1
- data/bundler/{man/bundle-lock.ronn → lib/bundler/man/bundle-lock.1.ronn} +0 -0
- data/bundler/{man → lib/bundler/man}/bundle-open.1 +1 -1
- data/bundler/{man/bundle-open.ronn → lib/bundler/man/bundle-open.1.ronn} +0 -0
- data/bundler/{man → lib/bundler/man}/bundle-outdated.1 +1 -1
- data/bundler/{man/bundle-outdated.ronn → lib/bundler/man/bundle-outdated.1.ronn} +0 -0
- data/bundler/{man → lib/bundler/man}/bundle-platform.1 +1 -1
- data/bundler/{man/bundle-platform.ronn → lib/bundler/man/bundle-platform.1.ronn} +0 -0
- data/bundler/{man → lib/bundler/man}/bundle-pristine.1 +1 -1
- data/bundler/{man/bundle-pristine.ronn → lib/bundler/man/bundle-pristine.1.ronn} +0 -0
- data/bundler/{man → lib/bundler/man}/bundle-remove.1 +1 -1
- data/bundler/{man/bundle-remove.ronn → lib/bundler/man/bundle-remove.1.ronn} +0 -0
- data/bundler/{man → lib/bundler/man}/bundle-show.1 +1 -1
- data/bundler/{man/bundle-show.ronn → lib/bundler/man/bundle-show.1.ronn} +0 -0
- data/bundler/{man → lib/bundler/man}/bundle-update.1 +1 -1
- data/bundler/{man/bundle-update.ronn → lib/bundler/man/bundle-update.1.ronn} +0 -0
- data/bundler/{man → lib/bundler/man}/bundle-viz.1 +1 -1
- data/bundler/{man/bundle-viz.ronn → lib/bundler/man/bundle-viz.1.ronn} +0 -0
- data/bundler/{man → lib/bundler/man}/bundle.1 +1 -1
- data/bundler/{man/bundle.ronn → lib/bundler/man/bundle.1.ronn} +0 -0
- data/bundler/{man → lib/bundler/man}/gemfile.5 +4 -4
- data/bundler/{man → lib/bundler/man}/gemfile.5.ronn +4 -4
- data/bundler/{man → lib/bundler/man}/index.txt +0 -0
- data/bundler/lib/bundler/mirror.rb +2 -2
- data/bundler/lib/bundler/plugin.rb +31 -5
- data/bundler/lib/bundler/plugin/api/source.rb +8 -1
- data/bundler/lib/bundler/plugin/dsl.rb +1 -1
- data/bundler/lib/bundler/plugin/index.rb +10 -1
- data/bundler/lib/bundler/plugin/installer.rb +9 -11
- data/bundler/lib/bundler/plugin/installer/rubygems.rb +1 -1
- data/bundler/lib/bundler/plugin/source_list.rb +5 -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 +133 -77
- data/bundler/lib/bundler/resolver/spec_group.rb +75 -48
- data/bundler/lib/bundler/retry.rb +1 -1
- data/bundler/lib/bundler/ruby_version.rb +1 -1
- data/bundler/lib/bundler/rubygems_ext.rb +69 -9
- data/bundler/lib/bundler/rubygems_gem_installer.rb +50 -9
- data/bundler/lib/bundler/rubygems_integration.rb +25 -60
- data/bundler/lib/bundler/runtime.rb +4 -14
- data/bundler/lib/bundler/settings.rb +50 -47
- data/bundler/lib/bundler/shared_helpers.rb +3 -3
- data/bundler/lib/bundler/similarity_detector.rb +1 -1
- data/bundler/lib/bundler/source.rb +7 -1
- data/bundler/lib/bundler/source/git.rb +24 -22
- data/bundler/lib/bundler/source/git/git_proxy.rb +82 -80
- data/bundler/lib/bundler/source/metadata.rb +0 -4
- data/bundler/lib/bundler/source/path.rb +7 -3
- data/bundler/lib/bundler/source/path/installer.rb +10 -10
- data/bundler/lib/bundler/source/rubygems.rb +43 -22
- data/bundler/lib/bundler/source/rubygems/remote.rb +1 -1
- data/bundler/lib/bundler/source_list.rb +30 -25
- data/bundler/lib/bundler/spec_set.rb +14 -13
- data/bundler/lib/bundler/stub_specification.rb +25 -7
- data/bundler/lib/bundler/templates/newgem/CHANGELOG.md.tt +5 -0
- 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 +6 -5
- 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 +4 -2
- data/bundler/lib/bundler/templates/newgem/lib/newgem/version.rb.tt +2 -0
- data/bundler/lib/bundler/templates/newgem/newgem.gemspec.tt +15 -7
- data/bundler/lib/bundler/templates/newgem/rubocop.yml.tt +13 -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 +3 -1
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo.rb +0 -1
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/delegates/specification_provider.rb +7 -0
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph.rb +34 -2
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/tag.rb +2 -2
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/vertex.rb +11 -5
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/errors.rb +3 -3
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/gem_metadata.rb +1 -1
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/modules/specification_provider.rb +11 -0
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/resolution.rb +49 -47
- data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb +82 -189
- data/bundler/lib/bundler/vendor/thor/lib/thor.rb +5 -13
- data/bundler/lib/bundler/vendor/thor/lib/thor/actions.rb +1 -1
- data/bundler/lib/bundler/vendor/thor/lib/thor/actions/create_link.rb +2 -1
- data/bundler/lib/bundler/vendor/thor/lib/thor/actions/file_manipulation.rb +4 -2
- data/bundler/lib/bundler/vendor/thor/lib/thor/base.rb +9 -0
- data/bundler/lib/bundler/vendor/thor/lib/thor/error.rb +1 -1
- data/bundler/lib/bundler/vendor/thor/lib/thor/parser/arguments.rb +5 -1
- data/bundler/lib/bundler/vendor/thor/lib/thor/parser/options.rb +9 -8
- data/bundler/lib/bundler/vendor/thor/lib/thor/shell/basic.rb +5 -2
- data/bundler/lib/bundler/vendor/thor/lib/thor/shell/color.rb +5 -1
- data/bundler/lib/bundler/vendor/thor/lib/thor/version.rb +1 -1
- data/bundler/lib/bundler/vendor/tmpdir/lib/tmpdir.rb +154 -0
- data/bundler/lib/bundler/vendored_persistent.rb +0 -7
- data/bundler/lib/bundler/vendored_tmpdir.rb +4 -0
- 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/lib/rubygems.rb +84 -160
- data/lib/rubygems/available_set.rb +4 -6
- data/lib/rubygems/basic_specification.rb +11 -9
- data/lib/rubygems/bundler_version_finder.rb +14 -9
- data/lib/rubygems/command.rb +17 -16
- data/lib/rubygems/command_manager.rb +5 -6
- data/lib/rubygems/commands/build_command.rb +40 -20
- data/lib/rubygems/commands/cert_command.rb +2 -10
- 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 +3 -3
- 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 +9 -4
- data/lib/rubygems/commands/pristine_command.rb +11 -5
- data/lib/rubygems/commands/push_command.rb +10 -47
- data/lib/rubygems/commands/query_command.rb +14 -344
- 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 +3 -1
- data/lib/rubygems/commands/setup_command.rb +101 -74
- 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 +6 -4
- data/lib/rubygems/commands/specification_command.rb +8 -4
- data/lib/rubygems/commands/stale_command.rb +1 -3
- data/lib/rubygems/commands/uninstall_command.rb +1 -3
- 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 +4 -7
- data/lib/rubygems/config_file.rb +20 -4
- data/lib/rubygems/core_ext/kernel_require.rb +29 -36
- data/lib/rubygems/core_ext/kernel_warn.rb +12 -13
- data/lib/rubygems/core_ext/tcpsocket_init.rb +52 -0
- data/lib/rubygems/defaults.rb +101 -7
- data/lib/rubygems/dependency.rb +8 -9
- data/lib/rubygems/dependency_installer.rb +6 -78
- 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 +19 -39
- data/lib/rubygems/ext/cmake_builder.rb +6 -9
- data/lib/rubygems/ext/configure_builder.rb +5 -8
- data/lib/rubygems/ext/ext_conf_builder.rb +21 -19
- data/lib/rubygems/ext/rake_builder.rb +4 -6
- data/lib/rubygems/gem_runner.rb +3 -10
- data/lib/rubygems/gemcutter_utilities.rb +102 -21
- data/lib/rubygems/indexer.rb +1 -22
- data/lib/rubygems/install_update_options.rb +7 -7
- data/lib/rubygems/installer.rb +59 -80
- data/lib/rubygems/installer_test_case.rb +25 -11
- data/lib/rubygems/installer_uninstaller_utils.rb +29 -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 +3 -7
- data/lib/rubygems/openssl.rb +7 -0
- data/lib/rubygems/package.rb +14 -25
- 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 +4 -6
- 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 +2 -4
- 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 +21 -16
- data/lib/rubygems/psych_tree.rb +0 -2
- data/lib/rubygems/query_utils.rb +353 -0
- data/lib/rubygems/rdoc.rb +0 -12
- data/lib/rubygems/remote_fetcher.rb +18 -37
- data/lib/rubygems/request.rb +4 -11
- 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 +7 -20
- data/lib/rubygems/request_set/gem_dependency_api.rb +5 -7
- 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 +21 -22
- data/lib/rubygems/resolver.rb +14 -12
- data/lib/rubygems/resolver/activation_request.rb +9 -3
- data/lib/rubygems/resolver/api_set.rb +30 -23
- data/lib/rubygems/resolver/api_set/gem_parser.rb +20 -0
- data/lib/rubygems/resolver/api_specification.rb +23 -9
- data/lib/rubygems/resolver/best_set.rb +2 -4
- data/lib/rubygems/resolver/composed_set.rb +3 -5
- data/lib/rubygems/resolver/conflict.rb +2 -4
- data/lib/rubygems/resolver/current_set.rb +0 -2
- data/lib/rubygems/resolver/dependency_request.rb +1 -3
- 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 +32 -2
- data/lib/rubygems/resolver/installed_specification.rb +0 -2
- data/lib/rubygems/resolver/installer_set.rb +60 -13
- data/lib/rubygems/resolver/local_specification.rb +0 -2
- data/lib/rubygems/resolver/lock_set.rb +2 -4
- data/lib/rubygems/resolver/lock_specification.rb +0 -2
- data/lib/rubygems/resolver/molinillo/lib/molinillo.rb +6 -5
- data/lib/rubygems/resolver/molinillo/lib/molinillo/delegates/resolution_state.rb +7 -0
- data/lib/rubygems/resolver/molinillo/lib/molinillo/delegates/specification_provider.rb +8 -0
- data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph.rb +39 -6
- data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/action.rb +1 -0
- data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/add_edge_no_circular.rb +2 -1
- data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/add_vertex.rb +2 -1
- data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/delete_edge.rb +2 -1
- data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/detach_vertex_named.rb +2 -1
- data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/log.rb +7 -6
- data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/set_payload.rb +2 -1
- data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/tag.rb +4 -3
- data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/vertex.rb +51 -12
- data/lib/rubygems/resolver/molinillo/lib/molinillo/errors.rb +76 -8
- data/lib/rubygems/resolver/molinillo/lib/molinillo/gem_metadata.rb +2 -1
- data/lib/rubygems/resolver/molinillo/lib/molinillo/modules/specification_provider.rb +12 -0
- data/lib/rubygems/resolver/molinillo/lib/molinillo/modules/ui.rb +3 -1
- data/lib/rubygems/resolver/molinillo/lib/molinillo/resolution.rb +510 -165
- data/lib/rubygems/resolver/molinillo/lib/molinillo/resolver.rb +3 -2
- data/lib/rubygems/resolver/molinillo/lib/molinillo/state.rb +8 -4
- 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 +14 -2
- data/lib/rubygems/resolver/specification.rb +13 -3
- 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 +2 -8
- data/lib/rubygems/safe_yaml.rb +4 -4
- data/lib/rubygems/security.rb +27 -34
- data/lib/rubygems/security/policy.rb +4 -8
- data/lib/rubygems/security/signer.rb +5 -7
- data/lib/rubygems/security/trust_dir.rb +1 -3
- data/lib/rubygems/server.rb +15 -12
- data/lib/rubygems/source.rb +23 -12
- 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 +4 -7
- data/lib/rubygems/spec_fetcher.rb +19 -18
- data/lib/rubygems/specification.rb +120 -131
- data/lib/rubygems/specification_policy.rb +79 -29
- data/lib/rubygems/ssl_certs/{index.rubygems.org → rubygems.org}/GlobalSignRootCA.pem +0 -0
- data/lib/rubygems/ssl_certs/rubygems.org/GlobalSignRootCA_R3.pem +21 -0
- data/lib/rubygems/stub_specification.rb +1 -5
- data/lib/rubygems/syck_hack.rb +0 -2
- data/lib/rubygems/test_case.rb +98 -129
- data/lib/rubygems/test_utilities.rb +12 -19
- data/lib/rubygems/uninstaller.rb +35 -16
- data/lib/rubygems/uri_formatter.rb +2 -3
- data/lib/rubygems/uri_parser.rb +0 -2
- data/lib/rubygems/user_interaction.rb +1 -26
- data/lib/rubygems/util.rb +8 -2
- 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 +4 -6
- data/lib/rubygems/version_option.rb +6 -0
- data/rubygems-update.gemspec +3 -3
- data/setup.rb +2 -7
- data/test/rubygems/data/null-required-ruby-version.gemspec.rz +0 -0
- data/test/rubygems/data/null-required-rubygems-version.gemspec.rz +0 -0
- data/test/rubygems/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 +0 -2
- data/test/rubygems/test_bundled_ca.rb +42 -45
- data/test/rubygems/test_config.rb +0 -2
- data/test/rubygems/test_deprecate.rb +40 -7
- data/test/rubygems/test_gem.rb +167 -87
- 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 +233 -15
- data/test/rubygems/test_gem_commands_cert_command.rb +4 -6
- data/test/rubygems/test_gem_commands_check_command.rb +0 -2
- data/test/rubygems/test_gem_commands_cleanup_command.rb +14 -5
- data/test/rubygems/test_gem_commands_contents_command.rb +50 -19
- 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 +15 -4
- data/test/rubygems/test_gem_commands_info_command.rb +6 -8
- data/test/rubygems/test_gem_commands_install_command.rb +163 -34
- 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 +17 -1
- data/test/rubygems/test_gem_commands_owner_command.rb +59 -5
- data/test/rubygems/test_gem_commands_pristine_command.rb +43 -12
- data/test/rubygems/test_gem_commands_push_command.rb +77 -9
- data/test/rubygems/test_gem_commands_query_command.rb +12 -12
- 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 +160 -135
- data/test/rubygems/test_gem_commands_signin_command.rb +33 -9
- data/test/rubygems/test_gem_commands_signout_command.rb +0 -7
- data/test/rubygems/test_gem_commands_sources_command.rb +60 -2
- data/test/rubygems/test_gem_commands_specification_command.rb +46 -20
- data/test/rubygems/test_gem_commands_stale_command.rb +0 -2
- data/test/rubygems/test_gem_commands_uninstall_command.rb +1 -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 +44 -8
- data/test/rubygems/test_gem_config_file.rb +17 -12
- data/test/rubygems/test_gem_dependency.rb +0 -2
- data/test/rubygems/test_gem_dependency_installer.rb +133 -247
- data/test/rubygems/test_gem_dependency_list.rb +10 -12
- 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 +50 -47
- data/test/rubygems/test_gem_ext_cmake_builder.rb +16 -25
- data/test/rubygems/test_gem_ext_configure_builder.rb +6 -22
- data/test/rubygems/test_gem_ext_ext_conf_builder.rb +9 -29
- data/test/rubygems/test_gem_ext_rake_builder.rb +39 -24
- data/test/rubygems/test_gem_gem_runner.rb +44 -1
- data/test/rubygems/test_gem_gemcutter_utilities.rb +8 -5
- 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 +14 -4
- data/test/rubygems/test_gem_installer.rb +260 -115
- 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 +38 -31
- data/test/rubygems/test_gem_package_old.rb +4 -6
- 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 +4 -6
- 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 +71 -6
- data/test/rubygems/test_gem_rdoc.rb +0 -2
- data/test/rubygems/test_gem_remote_fetcher.rb +213 -212
- data/test/rubygems/test_gem_request.rb +13 -17
- data/test/rubygems/test_gem_request_connection_pools.rb +0 -4
- data/test/rubygems/test_gem_request_set.rb +20 -22
- data/test/rubygems/test_gem_request_set_gem_dependency_api.rb +3 -5
- data/test/rubygems/test_gem_request_set_lockfile.rb +4 -6
- 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 +43 -3
- 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 +60 -59
- data/test/rubygems/test_gem_resolver_api_specification.rb +3 -5
- data/test/rubygems/test_gem_resolver_best_set.rb +27 -6
- data/test/rubygems/test_gem_resolver_composed_set.rb +0 -2
- data/test/rubygems/test_gem_resolver_conflict.rb +1 -3
- 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 +1 -3
- data/test/rubygems/test_gem_resolver_vendor_specification.rb +0 -2
- data/test/rubygems/test_gem_security.rb +22 -24
- data/test/rubygems/test_gem_security_policy.rb +7 -12
- data/test/rubygems/test_gem_security_signer.rb +10 -12
- data/test/rubygems/test_gem_security_trust_dir.rb +4 -6
- 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 +19 -18
- 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_subpath_problem.rb +49 -0
- 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 +171 -139
- data/test/rubygems/test_gem_stream_ui.rb +3 -3
- data/test/rubygems/test_gem_stub_specification.rb +4 -6
- data/test/rubygems/test_gem_text.rb +1 -3
- data/test/rubygems/test_gem_uninstaller.rb +134 -12
- 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 +11 -11
- data/test/rubygems/test_gem_validator.rb +1 -3
- data/test/rubygems/test_gem_version.rb +1 -3
- data/test/rubygems/test_gem_version_option.rb +1 -3
- 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 +291 -56
- data/test/test_changelog_generator.rb +17 -0
- metadata +84 -136
- 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/lib/bundler/vendor/molinillo/lib/molinillo/compatibility.rb +0 -26
- 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/lib/rubygems/source_local.rb +0 -7
- data/lib/rubygems/source_specific_file.rb +0 -6
- data/lib/rubygems/ssl_certs/rubygems.global.ssl.fastly.net/DigiCertHighAssuranceEVRootCA.pem +0 -23
- data/lib/rubygems/ssl_certs/rubygems.org/AddTrustExternalCARoot.pem +0 -25
- 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 -64
|
@@ -6,9 +6,6 @@
|
|
|
6
6
|
# See LICENSE.txt for permissions.
|
|
7
7
|
#++
|
|
8
8
|
|
|
9
|
-
require 'rubygems/version'
|
|
10
|
-
require 'rubygems/requirement'
|
|
11
|
-
require 'rubygems/platform'
|
|
12
9
|
require 'rubygems/deprecate'
|
|
13
10
|
require 'rubygems/basic_specification'
|
|
14
11
|
require 'rubygems/stub_specification'
|
|
@@ -37,7 +34,6 @@ require 'rubygems/util/list'
|
|
|
37
34
|
# items you may add to a specification.
|
|
38
35
|
|
|
39
36
|
class Gem::Specification < Gem::BasicSpecification
|
|
40
|
-
|
|
41
37
|
extend Gem::Deprecate
|
|
42
38
|
|
|
43
39
|
# REFACTOR: Consider breaking out this version stuff into a separate
|
|
@@ -81,18 +77,18 @@ class Gem::Specification < Gem::BasicSpecification
|
|
|
81
77
|
-1 => ['(RubyGems versions up to and including 0.7 did not have versioned specifications)'],
|
|
82
78
|
1 => [
|
|
83
79
|
'Deprecated "test_suite_file" in favor of the new, but equivalent, "test_files"',
|
|
84
|
-
'"test_file=x" is a shortcut for "test_files=[x]"'
|
|
80
|
+
'"test_file=x" is a shortcut for "test_files=[x]"',
|
|
85
81
|
],
|
|
86
82
|
2 => [
|
|
87
83
|
'Added "required_rubygems_version"',
|
|
88
84
|
'Now forward-compatible with future versions',
|
|
89
85
|
],
|
|
90
86
|
3 => [
|
|
91
|
-
'Added Fixnum validation to the specification_version'
|
|
87
|
+
'Added Fixnum validation to the specification_version',
|
|
92
88
|
],
|
|
93
89
|
4 => [
|
|
94
|
-
'Added sandboxed freeform metadata to the specification version.'
|
|
95
|
-
]
|
|
90
|
+
'Added sandboxed freeform metadata to the specification version.',
|
|
91
|
+
],
|
|
96
92
|
}.freeze
|
|
97
93
|
|
|
98
94
|
MARSHAL_FIELDS = { # :nodoc:
|
|
@@ -180,12 +176,13 @@ class Gem::Specification < Gem::BasicSpecification
|
|
|
180
176
|
end
|
|
181
177
|
end
|
|
182
178
|
|
|
183
|
-
@@attributes = @@default_value.keys.sort_by {
|
|
184
|
-
@@array_attributes = @@default_value.reject {
|
|
179
|
+
@@attributes = @@default_value.keys.sort_by {|s| s.to_s }
|
|
180
|
+
@@array_attributes = @@default_value.reject {|k,v| v != [] }.keys
|
|
185
181
|
@@nil_attributes, @@non_nil_attributes = @@default_value.keys.partition do |k|
|
|
186
182
|
@@default_value[k].nil?
|
|
187
183
|
end
|
|
188
184
|
|
|
185
|
+
@@stubs = nil
|
|
189
186
|
@@stubs_by_name = {}
|
|
190
187
|
|
|
191
188
|
# Sentinel object to represent "not found" stubs
|
|
@@ -249,12 +246,11 @@ class Gem::Specification < Gem::BasicSpecification
|
|
|
249
246
|
# require 'rake'
|
|
250
247
|
# spec.files = FileList['lib/**/*.rb',
|
|
251
248
|
# 'bin/*',
|
|
252
|
-
# '[A-Z]*'
|
|
253
|
-
# 'test/**/*'].to_a
|
|
249
|
+
# '[A-Z]*'].to_a
|
|
254
250
|
#
|
|
255
251
|
# # or without Rake...
|
|
256
252
|
# spec.files = Dir['lib/**/*.rb'] + Dir['bin/*']
|
|
257
|
-
# spec.files += Dir['[A-Z]*']
|
|
253
|
+
# spec.files += Dir['[A-Z]*']
|
|
258
254
|
# spec.files.reject! { |fn| fn.include? "CVS" }
|
|
259
255
|
|
|
260
256
|
def files
|
|
@@ -390,6 +386,7 @@ class Gem::Specification < Gem::BasicSpecification
|
|
|
390
386
|
# "mailing_list_uri" => "https://groups.example.com/bestgemever",
|
|
391
387
|
# "source_code_uri" => "https://example.com/user/bestgemever",
|
|
392
388
|
# "wiki_uri" => "https://example.com/user/bestgemever/wiki"
|
|
389
|
+
# "funding_uri" => "https://example.com/donate"
|
|
393
390
|
# }
|
|
394
391
|
#
|
|
395
392
|
# These links will be used on your gem's page on rubygems.org and must pass
|
|
@@ -560,6 +557,10 @@ class Gem::Specification < Gem::BasicSpecification
|
|
|
560
557
|
# spec.add_runtime_dependency 'example', '~> 1.1', '>= 1.1.4'
|
|
561
558
|
|
|
562
559
|
def add_runtime_dependency(gem, *requirements)
|
|
560
|
+
if requirements.uniq.size != requirements.size
|
|
561
|
+
warn "WARNING: duplicated #{gem} dependency #{requirements}"
|
|
562
|
+
end
|
|
563
|
+
|
|
563
564
|
add_dependency_with_type(gem, :runtime, requirements)
|
|
564
565
|
end
|
|
565
566
|
|
|
@@ -665,6 +666,9 @@ class Gem::Specification < Gem::BasicSpecification
|
|
|
665
666
|
#
|
|
666
667
|
# # Only prereleases or final releases after 2.6.0.preview2
|
|
667
668
|
# spec.required_ruby_version = '> 2.6.0.preview2'
|
|
669
|
+
#
|
|
670
|
+
# # This gem will work with 2.3.0 or greater, including major version 3, but lesser than 4.0.0
|
|
671
|
+
# spec.required_ruby_version = '>= 2.3', '< 4'
|
|
668
672
|
|
|
669
673
|
def required_ruby_version=(req)
|
|
670
674
|
@required_ruby_version = Gem::Requirement.create req
|
|
@@ -725,7 +729,7 @@ class Gem::Specification < Gem::BasicSpecification
|
|
|
725
729
|
# Deprecated: You must now specify the executable name to Gem.bin_path.
|
|
726
730
|
|
|
727
731
|
attr_writer :default_executable
|
|
728
|
-
|
|
732
|
+
rubygems_deprecate :default_executable=
|
|
729
733
|
|
|
730
734
|
##
|
|
731
735
|
# Allows deinstallation of gems with legacy platforms.
|
|
@@ -746,8 +750,8 @@ class Gem::Specification < Gem::BasicSpecification
|
|
|
746
750
|
# After a reset, make sure already loaded specs
|
|
747
751
|
# are still marked as activated.
|
|
748
752
|
specs = {}
|
|
749
|
-
Gem.loaded_specs.each_value{|s| specs[s] = true}
|
|
750
|
-
@@all.each{|s| s.activated = true if specs[s]}
|
|
753
|
+
Gem.loaded_specs.each_value{|s| specs[s] = true }
|
|
754
|
+
@@all.each{|s| s.activated = true if specs[s] }
|
|
751
755
|
end
|
|
752
756
|
@@all
|
|
753
757
|
end
|
|
@@ -767,7 +771,7 @@ class Gem::Specification < Gem::BasicSpecification
|
|
|
767
771
|
end
|
|
768
772
|
|
|
769
773
|
def self.gemspec_stubs_in(dir, pattern)
|
|
770
|
-
Gem::Util.glob_files_in_dir(pattern, dir).map {
|
|
774
|
+
Gem::Util.glob_files_in_dir(pattern, dir).map {|path| yield path }.select(&:valid?)
|
|
771
775
|
end
|
|
772
776
|
private_class_method :gemspec_stubs_in
|
|
773
777
|
|
|
@@ -782,21 +786,11 @@ class Gem::Specification < Gem::BasicSpecification
|
|
|
782
786
|
dirs.flat_map do |dir|
|
|
783
787
|
base_dir = File.dirname dir
|
|
784
788
|
gems_dir = File.join base_dir, "gems"
|
|
785
|
-
gemspec_stubs_in(dir, pattern) {
|
|
789
|
+
gemspec_stubs_in(dir, pattern) {|path| yield path, base_dir, gems_dir }
|
|
786
790
|
end
|
|
787
791
|
end
|
|
788
792
|
private_class_method :map_stubs
|
|
789
793
|
|
|
790
|
-
def self.uniq_by(list, &block) # :nodoc:
|
|
791
|
-
list.uniq(&block)
|
|
792
|
-
end
|
|
793
|
-
private_class_method :uniq_by
|
|
794
|
-
|
|
795
|
-
def self.sort_by!(list, &block)
|
|
796
|
-
list.sort_by!(&block)
|
|
797
|
-
end
|
|
798
|
-
private_class_method :sort_by!
|
|
799
|
-
|
|
800
794
|
def self.each_spec(dirs) # :nodoc:
|
|
801
795
|
each_gemspec(dirs) do |path|
|
|
802
796
|
spec = self.load path
|
|
@@ -810,11 +804,9 @@ class Gem::Specification < Gem::BasicSpecification
|
|
|
810
804
|
def self.stubs
|
|
811
805
|
@@stubs ||= begin
|
|
812
806
|
pattern = "*.gemspec"
|
|
813
|
-
stubs =
|
|
814
|
-
stubs = uniq_by(stubs) { |stub| stub.full_name }
|
|
807
|
+
stubs = stubs_for_pattern(pattern, false)
|
|
815
808
|
|
|
816
|
-
|
|
817
|
-
@@stubs_by_name = stubs.select { |s| Gem::Platform.match s.platform }.group_by(&:name)
|
|
809
|
+
@@stubs_by_name = stubs.select {|s| Gem::Platform.match_spec? s }.group_by(&:name)
|
|
818
810
|
stubs
|
|
819
811
|
end
|
|
820
812
|
end
|
|
@@ -830,8 +822,6 @@ class Gem::Specification < Gem::BasicSpecification
|
|
|
830
822
|
end
|
|
831
823
|
end
|
|
832
824
|
|
|
833
|
-
EMPTY = [].freeze # :nodoc:
|
|
834
|
-
|
|
835
825
|
##
|
|
836
826
|
# Returns a Gem::StubSpecification for installed gem named +name+
|
|
837
827
|
# only returns stubs that match Gem.platforms
|
|
@@ -840,23 +830,32 @@ class Gem::Specification < Gem::BasicSpecification
|
|
|
840
830
|
if @@stubs
|
|
841
831
|
@@stubs_by_name[name] || []
|
|
842
832
|
else
|
|
843
|
-
|
|
844
|
-
|
|
845
|
-
|
|
846
|
-
default_stubs(pattern)
|
|
847
|
-
stubs = uniq_by(stubs) { |stub| stub.full_name }.group_by(&:name)
|
|
848
|
-
stubs.each_value { |v| _resort!(v) }
|
|
849
|
-
|
|
850
|
-
@@stubs_by_name.merge! stubs
|
|
851
|
-
@@stubs_by_name[name] ||= EMPTY
|
|
833
|
+
@@stubs_by_name[name] ||= stubs_for_pattern("#{name}-*.gemspec").select do |s|
|
|
834
|
+
s.name == name
|
|
835
|
+
end
|
|
852
836
|
end
|
|
853
837
|
end
|
|
854
838
|
|
|
839
|
+
##
|
|
840
|
+
# Finds stub specifications matching a pattern from the standard locations,
|
|
841
|
+
# optionally filtering out specs not matching the current platform
|
|
842
|
+
#
|
|
843
|
+
def self.stubs_for_pattern(pattern, match_platform = true) # :nodoc:
|
|
844
|
+
installed_stubs = installed_stubs(Gem::Specification.dirs, pattern)
|
|
845
|
+
installed_stubs.select! {|s| Gem::Platform.match_spec? s } if match_platform
|
|
846
|
+
stubs = installed_stubs + default_stubs(pattern)
|
|
847
|
+
stubs = stubs.uniq {|stub| stub.full_name }
|
|
848
|
+
_resort!(stubs)
|
|
849
|
+
stubs
|
|
850
|
+
end
|
|
851
|
+
|
|
855
852
|
def self._resort!(specs) # :nodoc:
|
|
856
853
|
specs.sort! do |a, b|
|
|
857
854
|
names = a.name <=> b.name
|
|
858
855
|
next names if names.nonzero?
|
|
859
|
-
b.version <=> a.version
|
|
856
|
+
versions = b.version <=> a.version
|
|
857
|
+
next versions if versions.nonzero?
|
|
858
|
+
b.platform == Gem::Platform::RUBY ? -1 : 1
|
|
860
859
|
end
|
|
861
860
|
end
|
|
862
861
|
|
|
@@ -939,7 +938,7 @@ class Gem::Specification < Gem::BasicSpecification
|
|
|
939
938
|
def self.dirs=(dirs)
|
|
940
939
|
self.reset
|
|
941
940
|
|
|
942
|
-
@@dirs = Array(dirs).map {
|
|
941
|
+
@@dirs = Array(dirs).map {|dir| File.join dir, "specifications" }
|
|
943
942
|
end
|
|
944
943
|
|
|
945
944
|
extend Enumerable
|
|
@@ -1022,10 +1021,7 @@ class Gem::Specification < Gem::BasicSpecification
|
|
|
1022
1021
|
# Return currently unresolved specs that contain the file matching +path+.
|
|
1023
1022
|
|
|
1024
1023
|
def self.find_in_unresolved(path)
|
|
1025
|
-
|
|
1026
|
-
specs = unresolved_deps.values.map { |dep| dep.to_specs }.flatten
|
|
1027
|
-
|
|
1028
|
-
specs.find_all { |spec| spec.contains_requirable_file? path }
|
|
1024
|
+
unresolved_specs.find_all {|spec| spec.contains_requirable_file? path }
|
|
1029
1025
|
end
|
|
1030
1026
|
|
|
1031
1027
|
##
|
|
@@ -1033,9 +1029,7 @@ class Gem::Specification < Gem::BasicSpecification
|
|
|
1033
1029
|
# specs that contain the file matching +path+.
|
|
1034
1030
|
|
|
1035
1031
|
def self.find_in_unresolved_tree(path)
|
|
1036
|
-
|
|
1037
|
-
|
|
1038
|
-
specs.each do |spec|
|
|
1032
|
+
unresolved_specs.each do |spec|
|
|
1039
1033
|
spec.traverse do |from_spec, dep, to_spec, trail|
|
|
1040
1034
|
if to_spec.has_conflicts? || to_spec.conficts_when_loaded_with?(trail)
|
|
1041
1035
|
:next
|
|
@@ -1048,6 +1042,11 @@ class Gem::Specification < Gem::BasicSpecification
|
|
|
1048
1042
|
[]
|
|
1049
1043
|
end
|
|
1050
1044
|
|
|
1045
|
+
def self.unresolved_specs
|
|
1046
|
+
unresolved_deps.values.map {|dep| dep.to_specs }.flatten
|
|
1047
|
+
end
|
|
1048
|
+
private_class_method :unresolved_specs
|
|
1049
|
+
|
|
1051
1050
|
##
|
|
1052
1051
|
# Special loader for YAML files. When a Specification object is loaded
|
|
1053
1052
|
# from a YAML file, it bypasses the normal Ruby object initialization
|
|
@@ -1084,21 +1083,23 @@ class Gem::Specification < Gem::BasicSpecification
|
|
|
1084
1083
|
_latest_specs Gem::Specification._all, prerelease
|
|
1085
1084
|
end
|
|
1086
1085
|
|
|
1086
|
+
##
|
|
1087
|
+
# Return the latest installed spec for gem +name+.
|
|
1088
|
+
|
|
1089
|
+
def self.latest_spec_for(name)
|
|
1090
|
+
latest_specs(true).find {|installed_spec| installed_spec.name == name }
|
|
1091
|
+
end
|
|
1092
|
+
|
|
1087
1093
|
def self._latest_specs(specs, prerelease = false) # :nodoc:
|
|
1088
|
-
result =
|
|
1089
|
-
native = {}
|
|
1094
|
+
result = {}
|
|
1090
1095
|
|
|
1091
1096
|
specs.reverse_each do |spec|
|
|
1092
1097
|
next if spec.version.prerelease? unless prerelease
|
|
1093
1098
|
|
|
1094
|
-
|
|
1095
|
-
result[spec.name][spec.platform] = spec
|
|
1099
|
+
result[spec.name] = spec
|
|
1096
1100
|
end
|
|
1097
1101
|
|
|
1098
|
-
result.map(&:last).
|
|
1099
|
-
minimum = native[spec.name]
|
|
1100
|
-
minimum && spec.version < minimum
|
|
1101
|
-
end.sort_by{ |tup| tup.name }
|
|
1102
|
+
result.map(&:last).flatten.sort_by{|tup| tup.name }
|
|
1102
1103
|
end
|
|
1103
1104
|
|
|
1104
1105
|
##
|
|
@@ -1155,7 +1156,7 @@ class Gem::Specification < Gem::BasicSpecification
|
|
|
1155
1156
|
|
|
1156
1157
|
def self.normalize_yaml_input(input)
|
|
1157
1158
|
result = input.respond_to?(:read) ? input.read : input
|
|
1158
|
-
result = "--- " + result unless result
|
|
1159
|
+
result = "--- " + result unless result.start_with?("--- ")
|
|
1159
1160
|
result = result.dup
|
|
1160
1161
|
result.gsub!(/ !!null \n/, " \n")
|
|
1161
1162
|
# date: 2011-04-26 00:00:00.000000000Z
|
|
@@ -1172,7 +1173,7 @@ class Gem::Specification < Gem::BasicSpecification
|
|
|
1172
1173
|
# version as well.
|
|
1173
1174
|
|
|
1174
1175
|
def self.outdated
|
|
1175
|
-
outdated_and_latest_version.map {
|
|
1176
|
+
outdated_and_latest_version.map {|local, _| local.name }
|
|
1176
1177
|
end
|
|
1177
1178
|
|
|
1178
1179
|
##
|
|
@@ -1193,7 +1194,7 @@ class Gem::Specification < Gem::BasicSpecification
|
|
|
1193
1194
|
Gem::Dependency.new local_spec.name, ">= #{local_spec.version}"
|
|
1194
1195
|
|
|
1195
1196
|
remotes, = fetcher.search_for_dependency dependency
|
|
1196
|
-
remotes = remotes.map {
|
|
1197
|
+
remotes = remotes.map {|n, _| n.version }
|
|
1197
1198
|
|
|
1198
1199
|
latest_remote = remotes.sort.last
|
|
1199
1200
|
|
|
@@ -1224,7 +1225,7 @@ class Gem::Specification < Gem::BasicSpecification
|
|
|
1224
1225
|
|
|
1225
1226
|
def self.reset
|
|
1226
1227
|
@@dirs = nil
|
|
1227
|
-
Gem.pre_reset_hooks.each {
|
|
1228
|
+
Gem.pre_reset_hooks.each {|hook| hook.call }
|
|
1228
1229
|
@@all = nil
|
|
1229
1230
|
@@stubs = nil
|
|
1230
1231
|
@@stubs_by_name = {}
|
|
@@ -1241,19 +1242,19 @@ class Gem::Specification < Gem::BasicSpecification
|
|
|
1241
1242
|
versions = find_all_by_name(dep.name)
|
|
1242
1243
|
unless versions.empty?
|
|
1243
1244
|
warn " Available/installed versions of this gem:"
|
|
1244
|
-
versions.each {
|
|
1245
|
+
versions.each {|s| warn " - #{s.version}" }
|
|
1245
1246
|
end
|
|
1246
1247
|
end
|
|
1247
1248
|
warn "#{w}: Clearing out unresolved specs. Try 'gem cleanup <gem>'"
|
|
1248
1249
|
warn "Please report a bug if this causes problems."
|
|
1249
1250
|
unresolved.clear
|
|
1250
1251
|
end
|
|
1251
|
-
Gem.post_reset_hooks.each {
|
|
1252
|
+
Gem.post_reset_hooks.each {|hook| hook.call }
|
|
1252
1253
|
end
|
|
1253
1254
|
|
|
1254
1255
|
# DOC: This method needs documented or nodoc'd
|
|
1255
1256
|
def self.unresolved_deps
|
|
1256
|
-
@unresolved_deps ||= Hash.new {
|
|
1257
|
+
@unresolved_deps ||= Hash.new {|h, n| h[n] = Gem::Dependency.new n }
|
|
1257
1258
|
end
|
|
1258
1259
|
|
|
1259
1260
|
##
|
|
@@ -1284,7 +1285,7 @@ class Gem::Specification < Gem::BasicSpecification
|
|
|
1284
1285
|
# Cleanup any YAML::PrivateType. They only show up for an old bug
|
|
1285
1286
|
# where nil => null, so just convert them to nil based on the type.
|
|
1286
1287
|
|
|
1287
|
-
array.map! {
|
|
1288
|
+
array.map! {|e| e.kind_of?(YAML::PrivateType) ? nil : e }
|
|
1288
1289
|
|
|
1289
1290
|
spec.instance_variable_set :@rubygems_version, array[0]
|
|
1290
1291
|
# spec version
|
|
@@ -1349,7 +1350,7 @@ class Gem::Specification < Gem::BasicSpecification
|
|
|
1349
1350
|
true, # has_rdoc
|
|
1350
1351
|
@new_platform,
|
|
1351
1352
|
@licenses,
|
|
1352
|
-
@metadata
|
|
1353
|
+
@metadata,
|
|
1353
1354
|
]
|
|
1354
1355
|
end
|
|
1355
1356
|
|
|
@@ -1397,7 +1398,11 @@ class Gem::Specification < Gem::BasicSpecification
|
|
|
1397
1398
|
raise e
|
|
1398
1399
|
end
|
|
1399
1400
|
|
|
1400
|
-
|
|
1401
|
+
begin
|
|
1402
|
+
specs = spec_dep.to_specs
|
|
1403
|
+
rescue Gem::MissingSpecError => e
|
|
1404
|
+
raise Gem::MissingSpecError.new(e.name, e.requirement, "at: #{self.spec_file}")
|
|
1405
|
+
end
|
|
1401
1406
|
|
|
1402
1407
|
if specs.size == 1
|
|
1403
1408
|
specs.first.activate
|
|
@@ -1433,7 +1438,7 @@ class Gem::Specification < Gem::BasicSpecification
|
|
|
1433
1438
|
self.summary = sanitize_string(summary)
|
|
1434
1439
|
self.description = sanitize_string(description)
|
|
1435
1440
|
self.post_install_message = sanitize_string(post_install_message)
|
|
1436
|
-
self.authors = authors.collect {
|
|
1441
|
+
self.authors = authors.collect {|a| sanitize_string(a) }
|
|
1437
1442
|
end
|
|
1438
1443
|
|
|
1439
1444
|
##
|
|
@@ -1445,13 +1450,7 @@ class Gem::Specification < Gem::BasicSpecification
|
|
|
1445
1450
|
# HACK the #to_s is in here because RSpec has an Array of Arrays of
|
|
1446
1451
|
# Strings for authors. Need a way to disallow bad values on gemspec
|
|
1447
1452
|
# generation. (Probably won't happen.)
|
|
1448
|
-
string
|
|
1449
|
-
|
|
1450
|
-
begin
|
|
1451
|
-
Builder::XChar.encode string
|
|
1452
|
-
rescue NameError, NoMethodError
|
|
1453
|
-
string.to_xs
|
|
1454
|
-
end
|
|
1453
|
+
string.to_s
|
|
1455
1454
|
end
|
|
1456
1455
|
|
|
1457
1456
|
##
|
|
@@ -1462,7 +1461,7 @@ class Gem::Specification < Gem::BasicSpecification
|
|
|
1462
1461
|
return nil if executables.nil?
|
|
1463
1462
|
|
|
1464
1463
|
if @bindir
|
|
1465
|
-
Array(executables).map {
|
|
1464
|
+
Array(executables).map {|e| File.join(@bindir, e) }
|
|
1466
1465
|
else
|
|
1467
1466
|
executables
|
|
1468
1467
|
end
|
|
@@ -1544,7 +1543,7 @@ class Gem::Specification < Gem::BasicSpecification
|
|
|
1544
1543
|
def build_args
|
|
1545
1544
|
if File.exist? build_info_file
|
|
1546
1545
|
build_info = File.readlines build_info_file
|
|
1547
|
-
build_info = build_info.map {
|
|
1546
|
+
build_info = build_info.map {|x| x.strip }
|
|
1548
1547
|
build_info.delete ""
|
|
1549
1548
|
build_info
|
|
1550
1549
|
else
|
|
@@ -1636,7 +1635,7 @@ class Gem::Specification < Gem::BasicSpecification
|
|
|
1636
1635
|
|
|
1637
1636
|
def conficts_when_loaded_with?(list_of_specs) # :nodoc:
|
|
1638
1637
|
result = list_of_specs.any? do |spec|
|
|
1639
|
-
spec.dependencies.any? {
|
|
1638
|
+
spec.dependencies.any? {|dep| dep.runtime? && (dep.name == name) && !satisfies_requirement?(dep) }
|
|
1640
1639
|
end
|
|
1641
1640
|
result
|
|
1642
1641
|
end
|
|
@@ -1725,7 +1724,7 @@ class Gem::Specification < Gem::BasicSpecification
|
|
|
1725
1724
|
end
|
|
1726
1725
|
result
|
|
1727
1726
|
end
|
|
1728
|
-
|
|
1727
|
+
rubygems_deprecate :default_executable
|
|
1729
1728
|
|
|
1730
1729
|
##
|
|
1731
1730
|
# The default value for specification attribute +name+
|
|
@@ -1750,10 +1749,11 @@ class Gem::Specification < Gem::BasicSpecification
|
|
|
1750
1749
|
#
|
|
1751
1750
|
# [depending_gem, dependency, [list_of_gems_that_satisfy_dependency]]
|
|
1752
1751
|
|
|
1753
|
-
def dependent_gems
|
|
1752
|
+
def dependent_gems(check_dev=true)
|
|
1754
1753
|
out = []
|
|
1755
1754
|
Gem::Specification.each do |spec|
|
|
1756
|
-
spec.dependencies
|
|
1755
|
+
deps = check_dev ? spec.dependencies : spec.runtime_dependencies
|
|
1756
|
+
deps.each do |dep|
|
|
1757
1757
|
if self.satisfies_requirement?(dep)
|
|
1758
1758
|
sats = []
|
|
1759
1759
|
find_all_satisfiers(dep) do |sat|
|
|
@@ -1770,7 +1770,7 @@ class Gem::Specification < Gem::BasicSpecification
|
|
|
1770
1770
|
# Returns all specs that matches this spec's runtime dependencies.
|
|
1771
1771
|
|
|
1772
1772
|
def dependent_specs
|
|
1773
|
-
runtime_dependencies.map {
|
|
1773
|
+
runtime_dependencies.map {|dep| dep.to_specs }.flatten
|
|
1774
1774
|
end
|
|
1775
1775
|
|
|
1776
1776
|
##
|
|
@@ -1784,7 +1784,7 @@ class Gem::Specification < Gem::BasicSpecification
|
|
|
1784
1784
|
# List of dependencies that are used for development
|
|
1785
1785
|
|
|
1786
1786
|
def development_dependencies
|
|
1787
|
-
dependencies.select {
|
|
1787
|
+
dependencies.select {|d| d.type == :development }
|
|
1788
1788
|
end
|
|
1789
1789
|
|
|
1790
1790
|
##
|
|
@@ -1845,29 +1845,23 @@ class Gem::Specification < Gem::BasicSpecification
|
|
|
1845
1845
|
end
|
|
1846
1846
|
|
|
1847
1847
|
##
|
|
1848
|
-
# Sets executables to +value+, ensuring it is an array.
|
|
1849
|
-
# use this, push onto the array instead.
|
|
1848
|
+
# Sets executables to +value+, ensuring it is an array.
|
|
1850
1849
|
|
|
1851
1850
|
def executables=(value)
|
|
1852
|
-
# TODO: warn about setting instead of pushing
|
|
1853
1851
|
@executables = Array(value)
|
|
1854
1852
|
end
|
|
1855
1853
|
|
|
1856
1854
|
##
|
|
1857
|
-
# Sets extensions to +extensions+, ensuring it is an array.
|
|
1858
|
-
# use this, push onto the array instead.
|
|
1855
|
+
# Sets extensions to +extensions+, ensuring it is an array.
|
|
1859
1856
|
|
|
1860
1857
|
def extensions=(extensions)
|
|
1861
|
-
# TODO: warn about setting instead of pushing
|
|
1862
1858
|
@extensions = Array extensions
|
|
1863
1859
|
end
|
|
1864
1860
|
|
|
1865
1861
|
##
|
|
1866
|
-
# Sets extra_rdoc_files to +files+, ensuring it is an array.
|
|
1867
|
-
# use this, push onto the array instead.
|
|
1862
|
+
# Sets extra_rdoc_files to +files+, ensuring it is an array.
|
|
1868
1863
|
|
|
1869
1864
|
def extra_rdoc_files=(files)
|
|
1870
|
-
# TODO: warn about setting instead of pushing
|
|
1871
1865
|
@extra_rdoc_files = Array files
|
|
1872
1866
|
end
|
|
1873
1867
|
|
|
@@ -1933,7 +1927,7 @@ class Gem::Specification < Gem::BasicSpecification
|
|
|
1933
1927
|
def has_rdoc # :nodoc:
|
|
1934
1928
|
true
|
|
1935
1929
|
end
|
|
1936
|
-
|
|
1930
|
+
rubygems_deprecate :has_rdoc
|
|
1937
1931
|
|
|
1938
1932
|
##
|
|
1939
1933
|
# Deprecated and ignored.
|
|
@@ -1943,10 +1937,10 @@ class Gem::Specification < Gem::BasicSpecification
|
|
|
1943
1937
|
def has_rdoc=(ignored) # :nodoc:
|
|
1944
1938
|
@has_rdoc = true
|
|
1945
1939
|
end
|
|
1946
|
-
|
|
1940
|
+
rubygems_deprecate :has_rdoc=
|
|
1947
1941
|
|
|
1948
1942
|
alias :has_rdoc? :has_rdoc # :nodoc:
|
|
1949
|
-
|
|
1943
|
+
rubygems_deprecate :has_rdoc?
|
|
1950
1944
|
|
|
1951
1945
|
##
|
|
1952
1946
|
# True if this gem has files in test_files
|
|
@@ -1968,7 +1962,9 @@ class Gem::Specification < Gem::BasicSpecification
|
|
|
1968
1962
|
yaml_initialize coder.tag, coder.map
|
|
1969
1963
|
end
|
|
1970
1964
|
|
|
1971
|
-
eval <<-
|
|
1965
|
+
eval <<-RUBY, binding, __FILE__, __LINE__ + 1
|
|
1966
|
+
# frozen_string_literal: true
|
|
1967
|
+
|
|
1972
1968
|
def set_nil_attributes_to_nil
|
|
1973
1969
|
#{@@nil_attributes.map {|key| "@#{key} = nil" }.join "; "}
|
|
1974
1970
|
end
|
|
@@ -1978,7 +1974,7 @@ class Gem::Specification < Gem::BasicSpecification
|
|
|
1978
1974
|
#{@@non_nil_attributes.map {|key| "@#{key} = #{INITIALIZE_CODE_FOR_DEFAULTS[key]}" }.join ";"}
|
|
1979
1975
|
end
|
|
1980
1976
|
private :set_not_nil_attributes_to_default_values
|
|
1981
|
-
|
|
1977
|
+
RUBY
|
|
1982
1978
|
|
|
1983
1979
|
##
|
|
1984
1980
|
# Specification constructor. Assigns the default values to the attributes
|
|
@@ -2003,6 +1999,10 @@ class Gem::Specification < Gem::BasicSpecification
|
|
|
2003
1999
|
self.name = name if name
|
|
2004
2000
|
self.version = version if version
|
|
2005
2001
|
|
|
2002
|
+
if platform = Gem.platforms.last and platform != Gem::Platform::RUBY and platform != Gem::Platform.local
|
|
2003
|
+
self.platform = platform
|
|
2004
|
+
end
|
|
2005
|
+
|
|
2006
2006
|
yield self if block_given?
|
|
2007
2007
|
end
|
|
2008
2008
|
|
|
@@ -2115,7 +2115,7 @@ class Gem::Specification < Gem::BasicSpecification
|
|
|
2115
2115
|
end
|
|
2116
2116
|
|
|
2117
2117
|
if @specification_version > CURRENT_SPECIFICATION_VERSION and
|
|
2118
|
-
sym.to_s
|
|
2118
|
+
sym.to_s.end_with?("=")
|
|
2119
2119
|
warn "ignoring #{sym} loading #{full_name}" if $DEBUG
|
|
2120
2120
|
else
|
|
2121
2121
|
super
|
|
@@ -2199,7 +2199,7 @@ class Gem::Specification < Gem::BasicSpecification
|
|
|
2199
2199
|
|
|
2200
2200
|
attributes.each do |attr_name|
|
|
2201
2201
|
current_value = self.send attr_name
|
|
2202
|
-
current_value = current_value.sort if %i
|
|
2202
|
+
current_value = current_value.sort if %i[files test_files].include? attr_name
|
|
2203
2203
|
if current_value != default_value(attr_name) or
|
|
2204
2204
|
self.class.required_attribute? attr_name
|
|
2205
2205
|
|
|
@@ -2249,11 +2249,9 @@ class Gem::Specification < Gem::BasicSpecification
|
|
|
2249
2249
|
end
|
|
2250
2250
|
|
|
2251
2251
|
##
|
|
2252
|
-
# Sets rdoc_options to +value+, ensuring it is an array.
|
|
2253
|
-
# use this, push onto the array instead.
|
|
2252
|
+
# Sets rdoc_options to +value+, ensuring it is an array.
|
|
2254
2253
|
|
|
2255
2254
|
def rdoc_options=(options)
|
|
2256
|
-
# TODO: warn about setting instead of pushing
|
|
2257
2255
|
@rdoc_options = Array options
|
|
2258
2256
|
end
|
|
2259
2257
|
|
|
@@ -2272,11 +2270,9 @@ class Gem::Specification < Gem::BasicSpecification
|
|
|
2272
2270
|
end
|
|
2273
2271
|
|
|
2274
2272
|
##
|
|
2275
|
-
# Set requirements to +req+, ensuring it is an array.
|
|
2276
|
-
# use this, push onto the array instead.
|
|
2273
|
+
# Set requirements to +req+, ensuring it is an array.
|
|
2277
2274
|
|
|
2278
2275
|
def requirements=(req)
|
|
2279
|
-
# TODO: warn about setting instead of pushing
|
|
2280
2276
|
@requirements = Array req
|
|
2281
2277
|
end
|
|
2282
2278
|
|
|
@@ -2298,9 +2294,9 @@ class Gem::Specification < Gem::BasicSpecification
|
|
|
2298
2294
|
def ruby_code(obj)
|
|
2299
2295
|
case obj
|
|
2300
2296
|
when String then obj.dump + ".freeze"
|
|
2301
|
-
when Array then '[' + obj.map {
|
|
2297
|
+
when Array then '[' + obj.map {|x| ruby_code x }.join(", ") + ']'
|
|
2302
2298
|
when Hash then
|
|
2303
|
-
seg = obj.keys.sort.map {
|
|
2299
|
+
seg = obj.keys.sort.map {|k| "#{k.to_s.dump} => #{obj[k].to_s.dump}" }
|
|
2304
2300
|
"{ #{seg.join(', ')} }"
|
|
2305
2301
|
when Gem::Version then obj.to_s.dump
|
|
2306
2302
|
when DateLike then obj.strftime('%Y-%m-%d').dump
|
|
@@ -2328,7 +2324,7 @@ class Gem::Specification < Gem::BasicSpecification
|
|
|
2328
2324
|
# True if this gem has the same attributes as +other+.
|
|
2329
2325
|
|
|
2330
2326
|
def same_attributes?(spec)
|
|
2331
|
-
@@attributes.all? {
|
|
2327
|
+
@@attributes.all? {|name, default| self.send(name) == spec.send(name) }
|
|
2332
2328
|
end
|
|
2333
2329
|
|
|
2334
2330
|
private :same_attributes?
|
|
@@ -2427,7 +2423,7 @@ class Gem::Specification < Gem::BasicSpecification
|
|
|
2427
2423
|
# still have their default values are omitted.
|
|
2428
2424
|
|
|
2429
2425
|
def to_ruby
|
|
2430
|
-
|
|
2426
|
+
require_relative 'openssl'
|
|
2431
2427
|
mark_version
|
|
2432
2428
|
result = []
|
|
2433
2429
|
result << "# -*- encoding: utf-8 -*-"
|
|
@@ -2460,14 +2456,14 @@ class Gem::Specification < Gem::BasicSpecification
|
|
|
2460
2456
|
:version,
|
|
2461
2457
|
:has_rdoc,
|
|
2462
2458
|
:default_executable,
|
|
2463
|
-
:metadata
|
|
2459
|
+
:metadata,
|
|
2464
2460
|
]
|
|
2465
2461
|
|
|
2466
2462
|
@@attributes.each do |attr_name|
|
|
2467
2463
|
next if handled.include? attr_name
|
|
2468
2464
|
current_value = self.send(attr_name)
|
|
2469
2465
|
if current_value != default_value(attr_name) || self.class.required_attribute?(attr_name)
|
|
2470
|
-
result << " s.#{attr_name} = #{ruby_code current_value}" unless current_value.is_a?(OpenSSL::PKey::RSA)
|
|
2466
|
+
result << " s.#{attr_name} = #{ruby_code current_value}" unless defined?(OpenSSL::PKey::RSA) && current_value.is_a?(OpenSSL::PKey::RSA)
|
|
2471
2467
|
end
|
|
2472
2468
|
end
|
|
2473
2469
|
|
|
@@ -2558,7 +2554,7 @@ class Gem::Specification < Gem::BasicSpecification
|
|
|
2558
2554
|
begin
|
|
2559
2555
|
dependencies.each do |dep|
|
|
2560
2556
|
next unless dep.runtime?
|
|
2561
|
-
dep.
|
|
2557
|
+
dep.matching_specs(true).each do |dep_spec|
|
|
2562
2558
|
next if visited.has_key?(dep_spec)
|
|
2563
2559
|
visited[dep_spec] = true
|
|
2564
2560
|
trail.push(dep_spec)
|
|
@@ -2570,7 +2566,7 @@ class Gem::Specification < Gem::BasicSpecification
|
|
|
2570
2566
|
unless result == :next
|
|
2571
2567
|
spec_name = dep_spec.name
|
|
2572
2568
|
dep_spec.traverse(trail, visited, &block) unless
|
|
2573
|
-
trail.any? {
|
|
2569
|
+
trail.any? {|s| s.name == spec_name }
|
|
2574
2570
|
end
|
|
2575
2571
|
end
|
|
2576
2572
|
end
|
|
@@ -2595,30 +2591,27 @@ class Gem::Specification < Gem::BasicSpecification
|
|
|
2595
2591
|
end
|
|
2596
2592
|
|
|
2597
2593
|
def keep_only_files_and_directories
|
|
2598
|
-
@executables.delete_if {
|
|
2599
|
-
@extensions.delete_if {
|
|
2600
|
-
@extra_rdoc_files.delete_if {
|
|
2601
|
-
@files.delete_if {
|
|
2602
|
-
@test_files.delete_if {
|
|
2594
|
+
@executables.delete_if {|x| File.directory?(File.join(@bindir, x)) }
|
|
2595
|
+
@extensions.delete_if {|x| File.directory?(x) && !File.symlink?(x) }
|
|
2596
|
+
@extra_rdoc_files.delete_if {|x| File.directory?(x) && !File.symlink?(x) }
|
|
2597
|
+
@files.delete_if {|x| File.directory?(x) && !File.symlink?(x) }
|
|
2598
|
+
@test_files.delete_if {|x| File.directory?(x) && !File.symlink?(x) }
|
|
2603
2599
|
end
|
|
2604
2600
|
|
|
2605
2601
|
def validate_metadata
|
|
2606
2602
|
Gem::SpecificationPolicy.new(self).validate_metadata
|
|
2607
2603
|
end
|
|
2604
|
+
rubygems_deprecate :validate_metadata
|
|
2608
2605
|
|
|
2609
|
-
##
|
|
2610
|
-
# Checks that dependencies use requirements as we recommend. Warnings are
|
|
2611
|
-
# issued when dependencies are open-ended or overly strict for semantic
|
|
2612
|
-
# versioning.
|
|
2613
2606
|
def validate_dependencies
|
|
2614
2607
|
Gem::SpecificationPolicy.new(self).validate_dependencies
|
|
2615
2608
|
end
|
|
2609
|
+
rubygems_deprecate :validate_dependencies
|
|
2616
2610
|
|
|
2617
|
-
##
|
|
2618
|
-
# Checks to see if the files to be packaged are world-readable.
|
|
2619
2611
|
def validate_permissions
|
|
2620
2612
|
Gem::SpecificationPolicy.new(self).validate_permissions
|
|
2621
2613
|
end
|
|
2614
|
+
rubygems_deprecate :validate_permissions
|
|
2622
2615
|
|
|
2623
2616
|
##
|
|
2624
2617
|
# Set the version to +version+, potentially also setting
|
|
@@ -2681,8 +2674,4 @@ class Gem::Specification < Gem::BasicSpecification
|
|
|
2681
2674
|
def raw_require_paths # :nodoc:
|
|
2682
2675
|
@require_paths
|
|
2683
2676
|
end
|
|
2684
|
-
|
|
2685
2677
|
end
|
|
2686
|
-
|
|
2687
|
-
# DOC: What is this and why is it here, randomly, at the end of this file?
|
|
2688
|
-
Gem.clear_paths
|