rubygems-update 3.1.2 → 3.2.6
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} +756 -489
- data/CODE_OF_CONDUCT.md +55 -19
- data/CONTRIBUTING.md +25 -11
- data/Manifest.txt +75 -104
- data/POLICIES.md +6 -12
- data/README.md +5 -5
- data/Rakefile +64 -92
- data/bin/update_rubygems +1 -1
- data/bundler/CHANGELOG.md +1636 -1422
- 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 +32 -8
- data/bundler/lib/bundler/build_metadata.rb +4 -12
- data/bundler/lib/bundler/cli.rb +55 -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 +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 -4
- data/bundler/lib/bundler/cli/fund.rb +36 -0
- data/bundler/lib/bundler/cli/gem.rb +86 -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 +16 -13
- 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 +5 -13
- data/bundler/lib/bundler/definition.rb +66 -82
- data/bundler/lib/bundler/dep_proxy.rb +16 -9
- data/bundler/lib/bundler/dependency.rb +3 -10
- data/bundler/lib/bundler/dsl.rb +5 -9
- 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 -3
- 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 +3 -4
- data/bundler/lib/bundler/friendly_errors.rb +22 -13
- data/bundler/lib/bundler/gem_helper.rb +33 -19
- 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 +6 -2
- data/bundler/lib/bundler/injector.rb +22 -4
- data/bundler/lib/bundler/inline.rb +2 -2
- data/bundler/lib/bundler/installer.rb +35 -32
- 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 +35 -11
- data/bundler/lib/bundler/lockfile_generator.rb +1 -1
- data/bundler/lib/bundler/lockfile_parser.rb +1 -1
- 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 +16 -25
- data/bundler/{man/bundle-config.ronn → lib/bundler/man/bundle-config.1.ronn} +19 -30
- 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 +30 -5
- data/bundler/lib/bundler/plugin/api/source.rb +1 -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 +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 +43 -19
- data/bundler/lib/bundler/resolver/spec_group.rb +39 -24
- 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 +3 -9
- data/bundler/lib/bundler/rubygems_integration.rb +26 -61
- data/bundler/lib/bundler/runtime.rb +4 -14
- data/bundler/lib/bundler/settings.rb +49 -46
- 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 +23 -21
- data/bundler/lib/bundler/source/git/git_proxy.rb +82 -80
- 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 +23 -17
- 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 +8 -10
- data/bundler/lib/bundler/stub_specification.rb +17 -7
- 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 -2
- 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/dependency_graph.rb +34 -1
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/tag.rb +2 -2
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/errors.rb +1 -1
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/gem_metadata.rb +1 -1
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/resolution.rb +48 -46
- data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb +79 -208
- 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/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 +138 -187
- 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 +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 +4 -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 +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 +9 -7
- 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 +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 +4 -7
- data/lib/rubygems/config_file.rb +11 -4
- data/lib/rubygems/core_ext/kernel_require.rb +29 -36
- data/lib/rubygems/core_ext/kernel_warn.rb +12 -13
- data/lib/rubygems/defaults.rb +101 -7
- data/lib/rubygems/dependency.rb +3 -8
- 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 +21 -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 +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 +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 +14 -29
- 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 +6 -8
- 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 +31 -24
- data/lib/rubygems/resolver/api_set/gem_parser.rb +20 -0
- data/lib/rubygems/resolver/api_specification.rb +24 -10
- 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 +29 -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 +1 -0
- data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph.rb +39 -5
- 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 +43 -10
- data/lib/rubygems/resolver/molinillo/lib/molinillo/errors.rb +75 -7
- data/lib/rubygems/resolver/molinillo/lib/molinillo/gem_metadata.rb +2 -1
- data/lib/rubygems/resolver/molinillo/lib/molinillo/modules/specification_provider.rb +1 -0
- data/lib/rubygems/resolver/molinillo/lib/molinillo/modules/ui.rb +3 -1
- data/lib/rubygems/resolver/molinillo/lib/molinillo/resolution.rb +506 -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 +16 -13
- 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 +122 -131
- data/lib/rubygems/specification_policy.rb +88 -30
- 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 +120 -134
- 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 +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/lib/rubygems/version_option.rb +6 -0
- data/rubygems-update.gemspec +3 -3
- data/setup.rb +2 -7
- 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 +12 -0
- 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 +156 -99
- 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 +250 -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 +0 -2
- 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 +99 -3
- 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 +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 +44 -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 +116 -239
- 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 +258 -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 +41 -39
- 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 +9 -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 +169 -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 +72 -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 +188 -131
- 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 +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 +7 -7
- 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 +79 -133
- 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 -67
@@ -9,7 +9,6 @@ require 'rubygems/name_tuple'
|
|
9
9
|
# SpecFetcher handles metadata updates from remote gem repositories.
|
10
10
|
|
11
11
|
class Gem::SpecFetcher
|
12
|
-
|
13
12
|
include Gem::UserInteraction
|
14
13
|
include Gem::Text
|
15
14
|
|
@@ -92,14 +91,14 @@ class Gem::SpecFetcher
|
|
92
91
|
|
93
92
|
list.each do |source, specs|
|
94
93
|
if dependency.name.is_a?(String) && specs.respond_to?(:bsearch)
|
95
|
-
start_index = (0 ... specs.length).bsearch{
|
96
|
-
end_index = (0 ... specs.length).bsearch{
|
94
|
+
start_index = (0 ... specs.length).bsearch{|i| specs[i].name >= dependency.name }
|
95
|
+
end_index = (0 ... specs.length).bsearch{|i| specs[i].name > dependency.name }
|
97
96
|
specs = specs[start_index ... end_index] if start_index && end_index
|
98
97
|
end
|
99
98
|
|
100
99
|
found[source] = specs.select do |tup|
|
101
100
|
if dependency.match?(tup)
|
102
|
-
if matching_platform and !Gem::Platform.
|
101
|
+
if matching_platform and !Gem::Platform.match_gem?(tup.platform, tup.name)
|
103
102
|
pm = (
|
104
103
|
rejected_specs[dependency] ||= \
|
105
104
|
Gem::PlatformMismatch.new(tup.name, tup.version))
|
@@ -122,7 +121,7 @@ class Gem::SpecFetcher
|
|
122
121
|
end
|
123
122
|
end
|
124
123
|
|
125
|
-
tuples = tuples.sort_by {
|
124
|
+
tuples = tuples.sort_by {|x| x[0] }
|
126
125
|
|
127
126
|
return [tuples, errors]
|
128
127
|
end
|
@@ -171,30 +170,33 @@ class Gem::SpecFetcher
|
|
171
170
|
# Suggests gems based on the supplied +gem_name+. Returns an array of
|
172
171
|
# alternative gem names.
|
173
172
|
|
174
|
-
def suggest_gems_from_name(gem_name, type = :latest)
|
173
|
+
def suggest_gems_from_name(gem_name, type = :latest, num_results = 5)
|
175
174
|
gem_name = gem_name.downcase.tr('_-', '')
|
176
175
|
max = gem_name.size / 2
|
177
176
|
names = available_specs(type).first.values.flatten(1)
|
178
177
|
|
179
178
|
matches = names.map do |n|
|
180
179
|
next unless n.match_platform?
|
181
|
-
|
182
|
-
distance = levenshtein_distance gem_name, n.name.downcase.tr('_-', '')
|
183
|
-
|
184
|
-
next if distance >= max
|
185
|
-
|
186
|
-
return [n.name] if distance == 0
|
187
|
-
|
188
|
-
[n.name, distance]
|
180
|
+
[n.name, 0] if n.name.downcase.tr('_-', '').include?(gem_name)
|
189
181
|
end.compact
|
190
182
|
|
183
|
+
if matches.length < num_results
|
184
|
+
matches += names.map do |n|
|
185
|
+
next unless n.match_platform?
|
186
|
+
distance = levenshtein_distance gem_name, n.name.downcase.tr('_-', '')
|
187
|
+
next if distance >= max
|
188
|
+
return [n.name] if distance == 0
|
189
|
+
[n.name, distance]
|
190
|
+
end.compact
|
191
|
+
end
|
192
|
+
|
191
193
|
matches = if matches.empty? && type != :prerelease
|
192
194
|
suggest_gems_from_name gem_name, :prerelease
|
193
195
|
else
|
194
|
-
matches.uniq.sort_by {
|
196
|
+
matches.uniq.sort_by {|name, dist| dist }
|
195
197
|
end
|
196
198
|
|
197
|
-
matches.
|
199
|
+
matches.map {|name, dist| name }.uniq.first(num_results)
|
198
200
|
end
|
199
201
|
|
200
202
|
##
|
@@ -251,10 +253,9 @@ class Gem::SpecFetcher
|
|
251
253
|
|
252
254
|
def tuples_for(source, type, gracefully_ignore=false) # :nodoc:
|
253
255
|
@caches[type][source.uri] ||=
|
254
|
-
source.load_specs(type).sort_by {
|
256
|
+
source.load_specs(type).sort_by {|tup| tup.name }
|
255
257
|
rescue Gem::RemoteFetcher::FetchError
|
256
258
|
raise unless gracefully_ignore
|
257
259
|
[]
|
258
260
|
end
|
259
|
-
|
260
261
|
end
|
@@ -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
|
@@ -193,6 +190,12 @@ class Gem::Specification < Gem::BasicSpecification
|
|
193
190
|
@@spec_with_requirable_file = {}
|
194
191
|
@@active_stub_with_requirable_file = {}
|
195
192
|
|
193
|
+
# Tracking removed method calls to warn users during build time.
|
194
|
+
REMOVED_METHODS = [:rubyforge_project=].freeze # :nodoc:
|
195
|
+
def removed_method_calls
|
196
|
+
@removed_method_calls ||= []
|
197
|
+
end
|
198
|
+
|
196
199
|
######################################################################
|
197
200
|
# :section: Required gemspec attributes
|
198
201
|
|
@@ -243,12 +246,11 @@ class Gem::Specification < Gem::BasicSpecification
|
|
243
246
|
# require 'rake'
|
244
247
|
# spec.files = FileList['lib/**/*.rb',
|
245
248
|
# 'bin/*',
|
246
|
-
# '[A-Z]*'
|
247
|
-
# 'test/**/*'].to_a
|
249
|
+
# '[A-Z]*'].to_a
|
248
250
|
#
|
249
251
|
# # or without Rake...
|
250
252
|
# spec.files = Dir['lib/**/*.rb'] + Dir['bin/*']
|
251
|
-
# spec.files += Dir['[A-Z]*']
|
253
|
+
# spec.files += Dir['[A-Z]*']
|
252
254
|
# spec.files.reject! { |fn| fn.include? "CVS" }
|
253
255
|
|
254
256
|
def files
|
@@ -384,6 +386,7 @@ class Gem::Specification < Gem::BasicSpecification
|
|
384
386
|
# "mailing_list_uri" => "https://groups.example.com/bestgemever",
|
385
387
|
# "source_code_uri" => "https://example.com/user/bestgemever",
|
386
388
|
# "wiki_uri" => "https://example.com/user/bestgemever/wiki"
|
389
|
+
# "funding_uri" => "https://example.com/donate"
|
387
390
|
# }
|
388
391
|
#
|
389
392
|
# These links will be used on your gem's page on rubygems.org and must pass
|
@@ -554,6 +557,10 @@ class Gem::Specification < Gem::BasicSpecification
|
|
554
557
|
# spec.add_runtime_dependency 'example', '~> 1.1', '>= 1.1.4'
|
555
558
|
|
556
559
|
def add_runtime_dependency(gem, *requirements)
|
560
|
+
if requirements.uniq.size != requirements.size
|
561
|
+
warn "WARNING: duplicated #{gem} dependency #{requirements}"
|
562
|
+
end
|
563
|
+
|
557
564
|
add_dependency_with_type(gem, :runtime, requirements)
|
558
565
|
end
|
559
566
|
|
@@ -719,21 +726,13 @@ class Gem::Specification < Gem::BasicSpecification
|
|
719
726
|
# Deprecated: You must now specify the executable name to Gem.bin_path.
|
720
727
|
|
721
728
|
attr_writer :default_executable
|
722
|
-
|
729
|
+
rubygems_deprecate :default_executable=
|
723
730
|
|
724
731
|
##
|
725
732
|
# Allows deinstallation of gems with legacy platforms.
|
726
733
|
|
727
734
|
attr_writer :original_platform # :nodoc:
|
728
735
|
|
729
|
-
##
|
730
|
-
# Deprecated and ignored.
|
731
|
-
#
|
732
|
-
# Formerly used to set rubyforge project.
|
733
|
-
|
734
|
-
attr_writer :rubyforge_project
|
735
|
-
deprecate :rubyforge_project=, :none, 2019, 12
|
736
|
-
|
737
736
|
##
|
738
737
|
# The Gem::Specification version of this gemspec.
|
739
738
|
#
|
@@ -748,8 +747,8 @@ class Gem::Specification < Gem::BasicSpecification
|
|
748
747
|
# After a reset, make sure already loaded specs
|
749
748
|
# are still marked as activated.
|
750
749
|
specs = {}
|
751
|
-
Gem.loaded_specs.each_value{|s| specs[s] = true}
|
752
|
-
@@all.each{|s| s.activated = true if specs[s]}
|
750
|
+
Gem.loaded_specs.each_value{|s| specs[s] = true }
|
751
|
+
@@all.each{|s| s.activated = true if specs[s] }
|
753
752
|
end
|
754
753
|
@@all
|
755
754
|
end
|
@@ -769,7 +768,7 @@ class Gem::Specification < Gem::BasicSpecification
|
|
769
768
|
end
|
770
769
|
|
771
770
|
def self.gemspec_stubs_in(dir, pattern)
|
772
|
-
Gem::Util.glob_files_in_dir(pattern, dir).map {
|
771
|
+
Gem::Util.glob_files_in_dir(pattern, dir).map {|path| yield path }.select(&:valid?)
|
773
772
|
end
|
774
773
|
private_class_method :gemspec_stubs_in
|
775
774
|
|
@@ -784,21 +783,11 @@ class Gem::Specification < Gem::BasicSpecification
|
|
784
783
|
dirs.flat_map do |dir|
|
785
784
|
base_dir = File.dirname dir
|
786
785
|
gems_dir = File.join base_dir, "gems"
|
787
|
-
gemspec_stubs_in(dir, pattern) {
|
786
|
+
gemspec_stubs_in(dir, pattern) {|path| yield path, base_dir, gems_dir }
|
788
787
|
end
|
789
788
|
end
|
790
789
|
private_class_method :map_stubs
|
791
790
|
|
792
|
-
def self.uniq_by(list, &block) # :nodoc:
|
793
|
-
list.uniq(&block)
|
794
|
-
end
|
795
|
-
private_class_method :uniq_by
|
796
|
-
|
797
|
-
def self.sort_by!(list, &block)
|
798
|
-
list.sort_by!(&block)
|
799
|
-
end
|
800
|
-
private_class_method :sort_by!
|
801
|
-
|
802
791
|
def self.each_spec(dirs) # :nodoc:
|
803
792
|
each_gemspec(dirs) do |path|
|
804
793
|
spec = self.load path
|
@@ -812,11 +801,9 @@ class Gem::Specification < Gem::BasicSpecification
|
|
812
801
|
def self.stubs
|
813
802
|
@@stubs ||= begin
|
814
803
|
pattern = "*.gemspec"
|
815
|
-
stubs =
|
816
|
-
stubs = uniq_by(stubs) { |stub| stub.full_name }
|
804
|
+
stubs = stubs_for_pattern(pattern, false)
|
817
805
|
|
818
|
-
|
819
|
-
@@stubs_by_name = stubs.select { |s| Gem::Platform.match s.platform }.group_by(&:name)
|
806
|
+
@@stubs_by_name = stubs.select {|s| Gem::Platform.match_spec? s }.group_by(&:name)
|
820
807
|
stubs
|
821
808
|
end
|
822
809
|
end
|
@@ -832,8 +819,6 @@ class Gem::Specification < Gem::BasicSpecification
|
|
832
819
|
end
|
833
820
|
end
|
834
821
|
|
835
|
-
EMPTY = [].freeze # :nodoc:
|
836
|
-
|
837
822
|
##
|
838
823
|
# Returns a Gem::StubSpecification for installed gem named +name+
|
839
824
|
# only returns stubs that match Gem.platforms
|
@@ -842,18 +827,23 @@ class Gem::Specification < Gem::BasicSpecification
|
|
842
827
|
if @@stubs
|
843
828
|
@@stubs_by_name[name] || []
|
844
829
|
else
|
845
|
-
|
846
|
-
stubs = Gem.loaded_specs.values +
|
847
|
-
installed_stubs(dirs, pattern).select { |s| Gem::Platform.match s.platform } +
|
848
|
-
default_stubs(pattern)
|
849
|
-
stubs = uniq_by(stubs) { |stub| stub.full_name }.group_by(&:name)
|
850
|
-
stubs.each_value { |v| _resort!(v) }
|
851
|
-
|
852
|
-
@@stubs_by_name.merge! stubs
|
853
|
-
@@stubs_by_name[name] ||= EMPTY
|
830
|
+
@@stubs_by_name[name] ||= stubs_for_pattern("#{name}-*.gemspec")
|
854
831
|
end
|
855
832
|
end
|
856
833
|
|
834
|
+
##
|
835
|
+
# Finds stub specifications matching a pattern from the standard locations,
|
836
|
+
# optionally filtering out specs not matching the current platform
|
837
|
+
#
|
838
|
+
def self.stubs_for_pattern(pattern, match_platform = true) # :nodoc:
|
839
|
+
installed_stubs = installed_stubs(Gem::Specification.dirs, pattern)
|
840
|
+
installed_stubs.select! {|s| Gem::Platform.match_spec? s } if match_platform
|
841
|
+
stubs = installed_stubs + default_stubs(pattern)
|
842
|
+
stubs = stubs.uniq {|stub| stub.full_name }
|
843
|
+
_resort!(stubs)
|
844
|
+
stubs
|
845
|
+
end
|
846
|
+
|
857
847
|
def self._resort!(specs) # :nodoc:
|
858
848
|
specs.sort! do |a, b|
|
859
849
|
names = a.name <=> b.name
|
@@ -941,7 +931,7 @@ class Gem::Specification < Gem::BasicSpecification
|
|
941
931
|
def self.dirs=(dirs)
|
942
932
|
self.reset
|
943
933
|
|
944
|
-
@@dirs = Array(dirs).map {
|
934
|
+
@@dirs = Array(dirs).map {|dir| File.join dir, "specifications" }
|
945
935
|
end
|
946
936
|
|
947
937
|
extend Enumerable
|
@@ -1024,10 +1014,7 @@ class Gem::Specification < Gem::BasicSpecification
|
|
1024
1014
|
# Return currently unresolved specs that contain the file matching +path+.
|
1025
1015
|
|
1026
1016
|
def self.find_in_unresolved(path)
|
1027
|
-
|
1028
|
-
specs = unresolved_deps.values.map { |dep| dep.to_specs }.flatten
|
1029
|
-
|
1030
|
-
specs.find_all { |spec| spec.contains_requirable_file? path }
|
1017
|
+
unresolved_specs.find_all {|spec| spec.contains_requirable_file? path }
|
1031
1018
|
end
|
1032
1019
|
|
1033
1020
|
##
|
@@ -1035,9 +1022,7 @@ class Gem::Specification < Gem::BasicSpecification
|
|
1035
1022
|
# specs that contain the file matching +path+.
|
1036
1023
|
|
1037
1024
|
def self.find_in_unresolved_tree(path)
|
1038
|
-
|
1039
|
-
|
1040
|
-
specs.each do |spec|
|
1025
|
+
unresolved_specs.each do |spec|
|
1041
1026
|
spec.traverse do |from_spec, dep, to_spec, trail|
|
1042
1027
|
if to_spec.has_conflicts? || to_spec.conficts_when_loaded_with?(trail)
|
1043
1028
|
:next
|
@@ -1050,6 +1035,11 @@ class Gem::Specification < Gem::BasicSpecification
|
|
1050
1035
|
[]
|
1051
1036
|
end
|
1052
1037
|
|
1038
|
+
def self.unresolved_specs
|
1039
|
+
unresolved_deps.values.map {|dep| dep.to_specs }.flatten
|
1040
|
+
end
|
1041
|
+
private_class_method :unresolved_specs
|
1042
|
+
|
1053
1043
|
##
|
1054
1044
|
# Special loader for YAML files. When a Specification object is loaded
|
1055
1045
|
# from a YAML file, it bypasses the normal Ruby object initialization
|
@@ -1086,8 +1076,15 @@ class Gem::Specification < Gem::BasicSpecification
|
|
1086
1076
|
_latest_specs Gem::Specification._all, prerelease
|
1087
1077
|
end
|
1088
1078
|
|
1079
|
+
##
|
1080
|
+
# Return the latest installed spec for gem +name+.
|
1081
|
+
|
1082
|
+
def self.latest_spec_for(name)
|
1083
|
+
latest_specs(true).find {|installed_spec| installed_spec.name == name }
|
1084
|
+
end
|
1085
|
+
|
1089
1086
|
def self._latest_specs(specs, prerelease = false) # :nodoc:
|
1090
|
-
result = Hash.new {
|
1087
|
+
result = Hash.new {|h,k| h[k] = {} }
|
1091
1088
|
native = {}
|
1092
1089
|
|
1093
1090
|
specs.reverse_each do |spec|
|
@@ -1100,7 +1097,7 @@ class Gem::Specification < Gem::BasicSpecification
|
|
1100
1097
|
result.map(&:last).map(&:values).flatten.reject do |spec|
|
1101
1098
|
minimum = native[spec.name]
|
1102
1099
|
minimum && spec.version < minimum
|
1103
|
-
end.sort_by{
|
1100
|
+
end.sort_by{|tup| tup.name }
|
1104
1101
|
end
|
1105
1102
|
|
1106
1103
|
##
|
@@ -1157,7 +1154,7 @@ class Gem::Specification < Gem::BasicSpecification
|
|
1157
1154
|
|
1158
1155
|
def self.normalize_yaml_input(input)
|
1159
1156
|
result = input.respond_to?(:read) ? input.read : input
|
1160
|
-
result = "--- " + result unless result
|
1157
|
+
result = "--- " + result unless result.start_with?("--- ")
|
1161
1158
|
result = result.dup
|
1162
1159
|
result.gsub!(/ !!null \n/, " \n")
|
1163
1160
|
# date: 2011-04-26 00:00:00.000000000Z
|
@@ -1174,7 +1171,7 @@ class Gem::Specification < Gem::BasicSpecification
|
|
1174
1171
|
# version as well.
|
1175
1172
|
|
1176
1173
|
def self.outdated
|
1177
|
-
outdated_and_latest_version.map {
|
1174
|
+
outdated_and_latest_version.map {|local, _| local.name }
|
1178
1175
|
end
|
1179
1176
|
|
1180
1177
|
##
|
@@ -1195,7 +1192,7 @@ class Gem::Specification < Gem::BasicSpecification
|
|
1195
1192
|
Gem::Dependency.new local_spec.name, ">= #{local_spec.version}"
|
1196
1193
|
|
1197
1194
|
remotes, = fetcher.search_for_dependency dependency
|
1198
|
-
remotes = remotes.map {
|
1195
|
+
remotes = remotes.map {|n, _| n.version }
|
1199
1196
|
|
1200
1197
|
latest_remote = remotes.sort.last
|
1201
1198
|
|
@@ -1226,7 +1223,7 @@ class Gem::Specification < Gem::BasicSpecification
|
|
1226
1223
|
|
1227
1224
|
def self.reset
|
1228
1225
|
@@dirs = nil
|
1229
|
-
Gem.pre_reset_hooks.each {
|
1226
|
+
Gem.pre_reset_hooks.each {|hook| hook.call }
|
1230
1227
|
@@all = nil
|
1231
1228
|
@@stubs = nil
|
1232
1229
|
@@stubs_by_name = {}
|
@@ -1243,19 +1240,19 @@ class Gem::Specification < Gem::BasicSpecification
|
|
1243
1240
|
versions = find_all_by_name(dep.name)
|
1244
1241
|
unless versions.empty?
|
1245
1242
|
warn " Available/installed versions of this gem:"
|
1246
|
-
versions.each {
|
1243
|
+
versions.each {|s| warn " - #{s.version}" }
|
1247
1244
|
end
|
1248
1245
|
end
|
1249
1246
|
warn "#{w}: Clearing out unresolved specs. Try 'gem cleanup <gem>'"
|
1250
1247
|
warn "Please report a bug if this causes problems."
|
1251
1248
|
unresolved.clear
|
1252
1249
|
end
|
1253
|
-
Gem.post_reset_hooks.each {
|
1250
|
+
Gem.post_reset_hooks.each {|hook| hook.call }
|
1254
1251
|
end
|
1255
1252
|
|
1256
1253
|
# DOC: This method needs documented or nodoc'd
|
1257
1254
|
def self.unresolved_deps
|
1258
|
-
@unresolved_deps ||= Hash.new {
|
1255
|
+
@unresolved_deps ||= Hash.new {|h, n| h[n] = Gem::Dependency.new n }
|
1259
1256
|
end
|
1260
1257
|
|
1261
1258
|
##
|
@@ -1286,7 +1283,7 @@ class Gem::Specification < Gem::BasicSpecification
|
|
1286
1283
|
# Cleanup any YAML::PrivateType. They only show up for an old bug
|
1287
1284
|
# where nil => null, so just convert them to nil based on the type.
|
1288
1285
|
|
1289
|
-
array.map! {
|
1286
|
+
array.map! {|e| e.kind_of?(YAML::PrivateType) ? nil : e }
|
1290
1287
|
|
1291
1288
|
spec.instance_variable_set :@rubygems_version, array[0]
|
1292
1289
|
# spec version
|
@@ -1351,7 +1348,7 @@ class Gem::Specification < Gem::BasicSpecification
|
|
1351
1348
|
true, # has_rdoc
|
1352
1349
|
@new_platform,
|
1353
1350
|
@licenses,
|
1354
|
-
@metadata
|
1351
|
+
@metadata,
|
1355
1352
|
]
|
1356
1353
|
end
|
1357
1354
|
|
@@ -1399,7 +1396,11 @@ class Gem::Specification < Gem::BasicSpecification
|
|
1399
1396
|
raise e
|
1400
1397
|
end
|
1401
1398
|
|
1402
|
-
|
1399
|
+
begin
|
1400
|
+
specs = spec_dep.to_specs
|
1401
|
+
rescue Gem::MissingSpecError => e
|
1402
|
+
raise Gem::MissingSpecError.new(e.name, e.requirement, "at: #{self.spec_file}")
|
1403
|
+
end
|
1403
1404
|
|
1404
1405
|
if specs.size == 1
|
1405
1406
|
specs.first.activate
|
@@ -1435,7 +1436,7 @@ class Gem::Specification < Gem::BasicSpecification
|
|
1435
1436
|
self.summary = sanitize_string(summary)
|
1436
1437
|
self.description = sanitize_string(description)
|
1437
1438
|
self.post_install_message = sanitize_string(post_install_message)
|
1438
|
-
self.authors = authors.collect {
|
1439
|
+
self.authors = authors.collect {|a| sanitize_string(a) }
|
1439
1440
|
end
|
1440
1441
|
|
1441
1442
|
##
|
@@ -1447,13 +1448,7 @@ class Gem::Specification < Gem::BasicSpecification
|
|
1447
1448
|
# HACK the #to_s is in here because RSpec has an Array of Arrays of
|
1448
1449
|
# Strings for authors. Need a way to disallow bad values on gemspec
|
1449
1450
|
# generation. (Probably won't happen.)
|
1450
|
-
string
|
1451
|
-
|
1452
|
-
begin
|
1453
|
-
Builder::XChar.encode string
|
1454
|
-
rescue NameError, NoMethodError
|
1455
|
-
string.to_xs
|
1456
|
-
end
|
1451
|
+
string.to_s
|
1457
1452
|
end
|
1458
1453
|
|
1459
1454
|
##
|
@@ -1464,7 +1459,7 @@ class Gem::Specification < Gem::BasicSpecification
|
|
1464
1459
|
return nil if executables.nil?
|
1465
1460
|
|
1466
1461
|
if @bindir
|
1467
|
-
Array(executables).map {
|
1462
|
+
Array(executables).map {|e| File.join(@bindir, e) }
|
1468
1463
|
else
|
1469
1464
|
executables
|
1470
1465
|
end
|
@@ -1546,7 +1541,7 @@ class Gem::Specification < Gem::BasicSpecification
|
|
1546
1541
|
def build_args
|
1547
1542
|
if File.exist? build_info_file
|
1548
1543
|
build_info = File.readlines build_info_file
|
1549
|
-
build_info = build_info.map {
|
1544
|
+
build_info = build_info.map {|x| x.strip }
|
1550
1545
|
build_info.delete ""
|
1551
1546
|
build_info
|
1552
1547
|
else
|
@@ -1638,7 +1633,7 @@ class Gem::Specification < Gem::BasicSpecification
|
|
1638
1633
|
|
1639
1634
|
def conficts_when_loaded_with?(list_of_specs) # :nodoc:
|
1640
1635
|
result = list_of_specs.any? do |spec|
|
1641
|
-
spec.dependencies.any? {
|
1636
|
+
spec.dependencies.any? {|dep| dep.runtime? && (dep.name == name) && !satisfies_requirement?(dep) }
|
1642
1637
|
end
|
1643
1638
|
result
|
1644
1639
|
end
|
@@ -1727,7 +1722,7 @@ class Gem::Specification < Gem::BasicSpecification
|
|
1727
1722
|
end
|
1728
1723
|
result
|
1729
1724
|
end
|
1730
|
-
|
1725
|
+
rubygems_deprecate :default_executable
|
1731
1726
|
|
1732
1727
|
##
|
1733
1728
|
# The default value for specification attribute +name+
|
@@ -1752,10 +1747,11 @@ class Gem::Specification < Gem::BasicSpecification
|
|
1752
1747
|
#
|
1753
1748
|
# [depending_gem, dependency, [list_of_gems_that_satisfy_dependency]]
|
1754
1749
|
|
1755
|
-
def dependent_gems
|
1750
|
+
def dependent_gems(check_dev=true)
|
1756
1751
|
out = []
|
1757
1752
|
Gem::Specification.each do |spec|
|
1758
|
-
spec.dependencies
|
1753
|
+
deps = check_dev ? spec.dependencies : spec.runtime_dependencies
|
1754
|
+
deps.each do |dep|
|
1759
1755
|
if self.satisfies_requirement?(dep)
|
1760
1756
|
sats = []
|
1761
1757
|
find_all_satisfiers(dep) do |sat|
|
@@ -1772,7 +1768,7 @@ class Gem::Specification < Gem::BasicSpecification
|
|
1772
1768
|
# Returns all specs that matches this spec's runtime dependencies.
|
1773
1769
|
|
1774
1770
|
def dependent_specs
|
1775
|
-
runtime_dependencies.map {
|
1771
|
+
runtime_dependencies.map {|dep| dep.to_specs }.flatten
|
1776
1772
|
end
|
1777
1773
|
|
1778
1774
|
##
|
@@ -1786,7 +1782,7 @@ class Gem::Specification < Gem::BasicSpecification
|
|
1786
1782
|
# List of dependencies that are used for development
|
1787
1783
|
|
1788
1784
|
def development_dependencies
|
1789
|
-
dependencies.select {
|
1785
|
+
dependencies.select {|d| d.type == :development }
|
1790
1786
|
end
|
1791
1787
|
|
1792
1788
|
##
|
@@ -1847,29 +1843,23 @@ class Gem::Specification < Gem::BasicSpecification
|
|
1847
1843
|
end
|
1848
1844
|
|
1849
1845
|
##
|
1850
|
-
# Sets executables to +value+, ensuring it is an array.
|
1851
|
-
# use this, push onto the array instead.
|
1846
|
+
# Sets executables to +value+, ensuring it is an array.
|
1852
1847
|
|
1853
1848
|
def executables=(value)
|
1854
|
-
# TODO: warn about setting instead of pushing
|
1855
1849
|
@executables = Array(value)
|
1856
1850
|
end
|
1857
1851
|
|
1858
1852
|
##
|
1859
|
-
# Sets extensions to +extensions+, ensuring it is an array.
|
1860
|
-
# use this, push onto the array instead.
|
1853
|
+
# Sets extensions to +extensions+, ensuring it is an array.
|
1861
1854
|
|
1862
1855
|
def extensions=(extensions)
|
1863
|
-
# TODO: warn about setting instead of pushing
|
1864
1856
|
@extensions = Array extensions
|
1865
1857
|
end
|
1866
1858
|
|
1867
1859
|
##
|
1868
|
-
# Sets extra_rdoc_files to +files+, ensuring it is an array.
|
1869
|
-
# use this, push onto the array instead.
|
1860
|
+
# Sets extra_rdoc_files to +files+, ensuring it is an array.
|
1870
1861
|
|
1871
1862
|
def extra_rdoc_files=(files)
|
1872
|
-
# TODO: warn about setting instead of pushing
|
1873
1863
|
@extra_rdoc_files = Array files
|
1874
1864
|
end
|
1875
1865
|
|
@@ -1935,7 +1925,7 @@ class Gem::Specification < Gem::BasicSpecification
|
|
1935
1925
|
def has_rdoc # :nodoc:
|
1936
1926
|
true
|
1937
1927
|
end
|
1938
|
-
|
1928
|
+
rubygems_deprecate :has_rdoc
|
1939
1929
|
|
1940
1930
|
##
|
1941
1931
|
# Deprecated and ignored.
|
@@ -1945,10 +1935,10 @@ class Gem::Specification < Gem::BasicSpecification
|
|
1945
1935
|
def has_rdoc=(ignored) # :nodoc:
|
1946
1936
|
@has_rdoc = true
|
1947
1937
|
end
|
1948
|
-
|
1938
|
+
rubygems_deprecate :has_rdoc=
|
1949
1939
|
|
1950
1940
|
alias :has_rdoc? :has_rdoc # :nodoc:
|
1951
|
-
|
1941
|
+
rubygems_deprecate :has_rdoc?
|
1952
1942
|
|
1953
1943
|
##
|
1954
1944
|
# True if this gem has files in test_files
|
@@ -1970,7 +1960,9 @@ class Gem::Specification < Gem::BasicSpecification
|
|
1970
1960
|
yaml_initialize coder.tag, coder.map
|
1971
1961
|
end
|
1972
1962
|
|
1973
|
-
eval <<-
|
1963
|
+
eval <<-RUBY, binding, __FILE__, __LINE__ + 1
|
1964
|
+
# frozen_string_literal: true
|
1965
|
+
|
1974
1966
|
def set_nil_attributes_to_nil
|
1975
1967
|
#{@@nil_attributes.map {|key| "@#{key} = nil" }.join "; "}
|
1976
1968
|
end
|
@@ -1980,7 +1972,7 @@ class Gem::Specification < Gem::BasicSpecification
|
|
1980
1972
|
#{@@non_nil_attributes.map {|key| "@#{key} = #{INITIALIZE_CODE_FOR_DEFAULTS[key]}" }.join ";"}
|
1981
1973
|
end
|
1982
1974
|
private :set_not_nil_attributes_to_default_values
|
1983
|
-
|
1975
|
+
RUBY
|
1984
1976
|
|
1985
1977
|
##
|
1986
1978
|
# Specification constructor. Assigns the default values to the attributes
|
@@ -2005,6 +1997,10 @@ class Gem::Specification < Gem::BasicSpecification
|
|
2005
1997
|
self.name = name if name
|
2006
1998
|
self.version = version if version
|
2007
1999
|
|
2000
|
+
if platform = Gem.platforms.last and platform != Gem::Platform::RUBY and platform != Gem::Platform.local
|
2001
|
+
self.platform = platform
|
2002
|
+
end
|
2003
|
+
|
2008
2004
|
yield self if block_given?
|
2009
2005
|
end
|
2010
2006
|
|
@@ -2107,11 +2103,17 @@ class Gem::Specification < Gem::BasicSpecification
|
|
2107
2103
|
end
|
2108
2104
|
|
2109
2105
|
##
|
2106
|
+
# Track removed method calls to warn about during build time.
|
2110
2107
|
# Warn about unknown attributes while loading a spec.
|
2111
2108
|
|
2112
2109
|
def method_missing(sym, *a, &b) # :nodoc:
|
2110
|
+
if REMOVED_METHODS.include?(sym)
|
2111
|
+
removed_method_calls << sym
|
2112
|
+
return
|
2113
|
+
end
|
2114
|
+
|
2113
2115
|
if @specification_version > CURRENT_SPECIFICATION_VERSION and
|
2114
|
-
sym.to_s
|
2116
|
+
sym.to_s.end_with?("=")
|
2115
2117
|
warn "ignoring #{sym} loading #{full_name}" if $DEBUG
|
2116
2118
|
else
|
2117
2119
|
super
|
@@ -2195,7 +2197,7 @@ class Gem::Specification < Gem::BasicSpecification
|
|
2195
2197
|
|
2196
2198
|
attributes.each do |attr_name|
|
2197
2199
|
current_value = self.send attr_name
|
2198
|
-
current_value = current_value.sort if %i
|
2200
|
+
current_value = current_value.sort if %i[files test_files].include? attr_name
|
2199
2201
|
if current_value != default_value(attr_name) or
|
2200
2202
|
self.class.required_attribute? attr_name
|
2201
2203
|
|
@@ -2245,11 +2247,9 @@ class Gem::Specification < Gem::BasicSpecification
|
|
2245
2247
|
end
|
2246
2248
|
|
2247
2249
|
##
|
2248
|
-
# Sets rdoc_options to +value+, ensuring it is an array.
|
2249
|
-
# use this, push onto the array instead.
|
2250
|
+
# Sets rdoc_options to +value+, ensuring it is an array.
|
2250
2251
|
|
2251
2252
|
def rdoc_options=(options)
|
2252
|
-
# TODO: warn about setting instead of pushing
|
2253
2253
|
@rdoc_options = Array options
|
2254
2254
|
end
|
2255
2255
|
|
@@ -2268,11 +2268,9 @@ class Gem::Specification < Gem::BasicSpecification
|
|
2268
2268
|
end
|
2269
2269
|
|
2270
2270
|
##
|
2271
|
-
# Set requirements to +req+, ensuring it is an array.
|
2272
|
-
# use this, push onto the array instead.
|
2271
|
+
# Set requirements to +req+, ensuring it is an array.
|
2273
2272
|
|
2274
2273
|
def requirements=(req)
|
2275
|
-
# TODO: warn about setting instead of pushing
|
2276
2274
|
@requirements = Array req
|
2277
2275
|
end
|
2278
2276
|
|
@@ -2294,9 +2292,9 @@ class Gem::Specification < Gem::BasicSpecification
|
|
2294
2292
|
def ruby_code(obj)
|
2295
2293
|
case obj
|
2296
2294
|
when String then obj.dump + ".freeze"
|
2297
|
-
when Array then '[' + obj.map {
|
2295
|
+
when Array then '[' + obj.map {|x| ruby_code x }.join(", ") + ']'
|
2298
2296
|
when Hash then
|
2299
|
-
seg = obj.keys.sort.map {
|
2297
|
+
seg = obj.keys.sort.map {|k| "#{k.to_s.dump} => #{obj[k].to_s.dump}" }
|
2300
2298
|
"{ #{seg.join(', ')} }"
|
2301
2299
|
when Gem::Version then obj.to_s.dump
|
2302
2300
|
when DateLike then obj.strftime('%Y-%m-%d').dump
|
@@ -2324,7 +2322,7 @@ class Gem::Specification < Gem::BasicSpecification
|
|
2324
2322
|
# True if this gem has the same attributes as +other+.
|
2325
2323
|
|
2326
2324
|
def same_attributes?(spec)
|
2327
|
-
@@attributes.all? {
|
2325
|
+
@@attributes.all? {|name, default| self.send(name) == spec.send(name) }
|
2328
2326
|
end
|
2329
2327
|
|
2330
2328
|
private :same_attributes?
|
@@ -2423,7 +2421,7 @@ class Gem::Specification < Gem::BasicSpecification
|
|
2423
2421
|
# still have their default values are omitted.
|
2424
2422
|
|
2425
2423
|
def to_ruby
|
2426
|
-
|
2424
|
+
require_relative 'openssl'
|
2427
2425
|
mark_version
|
2428
2426
|
result = []
|
2429
2427
|
result << "# -*- encoding: utf-8 -*-"
|
@@ -2456,14 +2454,14 @@ class Gem::Specification < Gem::BasicSpecification
|
|
2456
2454
|
:version,
|
2457
2455
|
:has_rdoc,
|
2458
2456
|
:default_executable,
|
2459
|
-
:metadata
|
2457
|
+
:metadata,
|
2460
2458
|
]
|
2461
2459
|
|
2462
2460
|
@@attributes.each do |attr_name|
|
2463
2461
|
next if handled.include? attr_name
|
2464
2462
|
current_value = self.send(attr_name)
|
2465
2463
|
if current_value != default_value(attr_name) || self.class.required_attribute?(attr_name)
|
2466
|
-
result << " s.#{attr_name} = #{ruby_code current_value}" unless current_value.is_a?(OpenSSL::PKey::RSA)
|
2464
|
+
result << " s.#{attr_name} = #{ruby_code current_value}" unless defined?(OpenSSL::PKey::RSA) && current_value.is_a?(OpenSSL::PKey::RSA)
|
2467
2465
|
end
|
2468
2466
|
end
|
2469
2467
|
|
@@ -2566,7 +2564,7 @@ class Gem::Specification < Gem::BasicSpecification
|
|
2566
2564
|
unless result == :next
|
2567
2565
|
spec_name = dep_spec.name
|
2568
2566
|
dep_spec.traverse(trail, visited, &block) unless
|
2569
|
-
trail.any? {
|
2567
|
+
trail.any? {|s| s.name == spec_name }
|
2570
2568
|
end
|
2571
2569
|
end
|
2572
2570
|
end
|
@@ -2591,30 +2589,27 @@ class Gem::Specification < Gem::BasicSpecification
|
|
2591
2589
|
end
|
2592
2590
|
|
2593
2591
|
def keep_only_files_and_directories
|
2594
|
-
@executables.delete_if {
|
2595
|
-
@extensions.delete_if {
|
2596
|
-
@extra_rdoc_files.delete_if {
|
2597
|
-
@files.delete_if {
|
2598
|
-
@test_files.delete_if {
|
2592
|
+
@executables.delete_if {|x| File.directory?(File.join(@bindir, x)) }
|
2593
|
+
@extensions.delete_if {|x| File.directory?(x) && !File.symlink?(x) }
|
2594
|
+
@extra_rdoc_files.delete_if {|x| File.directory?(x) && !File.symlink?(x) }
|
2595
|
+
@files.delete_if {|x| File.directory?(x) && !File.symlink?(x) }
|
2596
|
+
@test_files.delete_if {|x| File.directory?(x) && !File.symlink?(x) }
|
2599
2597
|
end
|
2600
2598
|
|
2601
2599
|
def validate_metadata
|
2602
2600
|
Gem::SpecificationPolicy.new(self).validate_metadata
|
2603
2601
|
end
|
2602
|
+
rubygems_deprecate :validate_metadata
|
2604
2603
|
|
2605
|
-
##
|
2606
|
-
# Checks that dependencies use requirements as we recommend. Warnings are
|
2607
|
-
# issued when dependencies are open-ended or overly strict for semantic
|
2608
|
-
# versioning.
|
2609
2604
|
def validate_dependencies
|
2610
2605
|
Gem::SpecificationPolicy.new(self).validate_dependencies
|
2611
2606
|
end
|
2607
|
+
rubygems_deprecate :validate_dependencies
|
2612
2608
|
|
2613
|
-
##
|
2614
|
-
# Checks to see if the files to be packaged are world-readable.
|
2615
2609
|
def validate_permissions
|
2616
2610
|
Gem::SpecificationPolicy.new(self).validate_permissions
|
2617
2611
|
end
|
2612
|
+
rubygems_deprecate :validate_permissions
|
2618
2613
|
|
2619
2614
|
##
|
2620
2615
|
# Set the version to +version+, potentially also setting
|
@@ -2677,8 +2672,4 @@ class Gem::Specification < Gem::BasicSpecification
|
|
2677
2672
|
def raw_require_paths # :nodoc:
|
2678
2673
|
@require_paths
|
2679
2674
|
end
|
2680
|
-
|
2681
2675
|
end
|
2682
|
-
|
2683
|
-
# DOC: What is this and why is it here, randomly, at the end of this file?
|
2684
|
-
Gem.clear_paths
|