rubygems-update 3.1.6 → 3.3.22
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} +1452 -514
- data/CODE_OF_CONDUCT.md +55 -19
- data/CONTRIBUTING.md +74 -27
- data/Manifest.txt +154 -117
- data/POLICIES.md +27 -19
- data/README.md +10 -8
- data/UPGRADING.md +5 -81
- data/bin/gem +3 -8
- data/bin/update_rubygems +5 -5
- data/bundler/CHANGELOG.md +2358 -1430
- data/bundler/README.md +7 -9
- data/bundler/UPGRADING.md +27 -34
- data/bundler/bundler.gemspec +8 -11
- data/bundler/exe/bundle +10 -8
- data/bundler/exe/bundler +1 -1
- data/bundler/lib/bundler/.document +1 -0
- data/bundler/lib/bundler/build_metadata.rb +4 -12
- 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 +3 -8
- data/bundler/lib/bundler/cli/check.rb +4 -2
- data/bundler/lib/bundler/cli/clean.rb +1 -1
- data/bundler/lib/bundler/cli/common.rb +31 -3
- data/bundler/lib/bundler/cli/config.rb +10 -1
- data/bundler/lib/bundler/cli/console.rb +1 -1
- data/bundler/lib/bundler/cli/doctor.rb +25 -6
- data/bundler/lib/bundler/cli/exec.rb +5 -10
- data/bundler/lib/bundler/cli/fund.rb +36 -0
- data/bundler/lib/bundler/cli/gem.rb +219 -28
- data/bundler/lib/bundler/cli/info.rb +38 -6
- data/bundler/lib/bundler/cli/init.rb +3 -3
- data/bundler/lib/bundler/cli/inject.rb +1 -1
- data/bundler/lib/bundler/cli/install.rb +25 -54
- data/bundler/lib/bundler/cli/issue.rb +5 -4
- data/bundler/lib/bundler/cli/list.rb +19 -11
- data/bundler/lib/bundler/cli/lock.rb +5 -1
- data/bundler/lib/bundler/cli/open.rb +1 -2
- data/bundler/lib/bundler/cli/outdated.rb +105 -76
- data/bundler/lib/bundler/cli/platform.rb +2 -2
- data/bundler/lib/bundler/cli/plugin.rb +10 -0
- data/bundler/lib/bundler/cli/pristine.rb +5 -0
- data/bundler/lib/bundler/cli/remove.rb +1 -2
- data/bundler/lib/bundler/cli/show.rb +2 -2
- data/bundler/lib/bundler/cli/update.rb +20 -9
- data/bundler/lib/bundler/cli.rb +106 -83
- data/bundler/lib/bundler/compact_index_client/cache.rb +6 -23
- data/bundler/lib/bundler/compact_index_client/gem_parser.rb +28 -0
- data/bundler/lib/bundler/compact_index_client/updater.rb +29 -25
- data/bundler/lib/bundler/compact_index_client.rb +3 -9
- data/bundler/lib/bundler/current_ruby.rb +17 -6
- data/bundler/lib/bundler/definition.rb +297 -396
- data/bundler/lib/bundler/dep_proxy.rb +16 -9
- data/bundler/lib/bundler/dependency.rb +22 -77
- data/bundler/lib/bundler/digest.rb +71 -0
- data/bundler/lib/bundler/dsl.rb +76 -83
- data/bundler/lib/bundler/endpoint_specification.rb +16 -14
- data/bundler/lib/bundler/env.rb +2 -2
- data/bundler/lib/bundler/environment_preserver.rb +29 -2
- data/bundler/lib/bundler/errors.rb +30 -3
- data/bundler/lib/bundler/feature_flag.rb +0 -9
- data/bundler/lib/bundler/fetcher/base.rb +7 -9
- data/bundler/lib/bundler/fetcher/compact_index.rb +11 -16
- data/bundler/lib/bundler/fetcher/downloader.rb +10 -7
- data/bundler/lib/bundler/fetcher/index.rb +2 -30
- data/bundler/lib/bundler/fetcher.rb +24 -25
- data/bundler/lib/bundler/friendly_errors.rb +46 -47
- data/bundler/lib/bundler/gem_helper.rb +53 -31
- data/bundler/lib/bundler/gem_helpers.rb +43 -24
- data/bundler/lib/bundler/gem_version_promoter.rb +10 -20
- data/bundler/lib/bundler/graph.rb +1 -1
- data/bundler/lib/bundler/index.rb +19 -25
- data/bundler/lib/bundler/injector.rb +38 -6
- data/bundler/lib/bundler/inline.rb +4 -13
- data/bundler/lib/bundler/installer/gem_installer.rb +19 -24
- data/bundler/lib/bundler/installer/parallel_installer.rb +46 -25
- data/bundler/lib/bundler/installer/standalone.rb +58 -11
- data/bundler/lib/bundler/installer.rb +51 -81
- data/bundler/lib/bundler/lazy_specification.rb +79 -36
- data/bundler/lib/bundler/lockfile_generator.rb +3 -3
- data/bundler/lib/bundler/lockfile_parser.rb +19 -44
- data/bundler/lib/bundler/man/.document +1 -0
- data/bundler/{man → lib/bundler/man}/bundle-add.1 +21 -5
- data/bundler/{man/bundle-add.ronn → lib/bundler/man/bundle-add.1.ronn} +16 -4
- 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 +7 -1
- data/bundler/{man/bundle-cache.ronn → lib/bundler/man/bundle-cache.1.ronn} +7 -0
- data/bundler/{man → lib/bundler/man}/bundle-check.1 +1 -1
- data/bundler/{man → lib/bundler/man}/bundle-clean.1 +1 -1
- data/bundler/{man → lib/bundler/man}/bundle-config.1 +65 -47
- data/bundler/{man/bundle-config.ronn → lib/bundler/man/bundle-config.1.ronn} +74 -65
- data/bundler/lib/bundler/man/bundle-console.1 +53 -0
- data/bundler/lib/bundler/man/bundle-console.1.ronn +44 -0
- data/bundler/{man → lib/bundler/man}/bundle-doctor.1 +1 -1
- data/bundler/{man → lib/bundler/man}/bundle-exec.1 +2 -2
- data/bundler/{man/bundle-exec.ronn → lib/bundler/man/bundle-exec.1.ronn} +1 -1
- data/bundler/{man → lib/bundler/man}/bundle-gem.1 +38 -3
- data/bundler/{man/bundle-gem.ronn → lib/bundler/man/bundle-gem.1.ronn} +46 -7
- data/bundler/lib/bundler/man/bundle-help.1 +13 -0
- data/bundler/lib/bundler/man/bundle-help.1.ronn +12 -0
- data/bundler/{man → lib/bundler/man}/bundle-info.1 +1 -1
- data/bundler/{man → lib/bundler/man}/bundle-init.1 +1 -1
- data/bundler/{man → lib/bundler/man}/bundle-inject.1 +5 -2
- data/bundler/{man/bundle-inject.ronn → lib/bundler/man/bundle-inject.1.ronn} +3 -1
- data/bundler/{man → lib/bundler/man}/bundle-install.1 +35 -4
- data/bundler/{man/bundle-install.ronn → lib/bundler/man/bundle-install.1.ronn} +33 -5
- 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 → lib/bundler/man}/bundle-open.1 +1 -1
- data/bundler/{man → lib/bundler/man}/bundle-outdated.1 +3 -10
- data/bundler/{man/bundle-outdated.ronn → lib/bundler/man/bundle-outdated.1.ronn} +1 -10
- data/bundler/{man → lib/bundler/man}/bundle-platform.1 +16 -6
- data/bundler/{man/bundle-platform.ronn → lib/bundler/man/bundle-platform.1.ronn} +14 -7
- data/bundler/lib/bundler/man/bundle-plugin.1 +81 -0
- data/bundler/lib/bundler/man/bundle-plugin.1.ronn +59 -0
- data/bundler/{man → lib/bundler/man}/bundle-pristine.1 +1 -1
- data/bundler/{man → lib/bundler/man}/bundle-remove.1 +1 -1
- data/bundler/{man → lib/bundler/man}/bundle-show.1 +1 -1
- data/bundler/{man → lib/bundler/man}/bundle-update.1 +5 -5
- data/bundler/{man/bundle-update.ronn → lib/bundler/man/bundle-update.1.ronn} +5 -4
- data/bundler/lib/bundler/man/bundle-version.1 +35 -0
- data/bundler/lib/bundler/man/bundle-version.1.ronn +24 -0
- data/bundler/{man → lib/bundler/man}/bundle-viz.1 +4 -1
- data/bundler/{man/bundle-viz.ronn → lib/bundler/man/bundle-viz.1.ronn} +2 -0
- data/bundler/{man → lib/bundler/man}/bundle.1 +15 -10
- data/bundler/{man/bundle.ronn → lib/bundler/man/bundle.1.ronn} +12 -7
- data/bundler/{man → lib/bundler/man}/gemfile.5 +106 -80
- data/bundler/{man → lib/bundler/man}/gemfile.5.ronn +94 -83
- data/bundler/{man → lib/bundler/man}/index.txt +4 -0
- data/bundler/lib/bundler/match_metadata.rb +13 -0
- data/bundler/lib/bundler/match_platform.rb +0 -1
- data/bundler/lib/bundler/match_remote_metadata.rb +29 -0
- data/bundler/lib/bundler/mirror.rb +2 -2
- data/bundler/lib/bundler/plugin/api/source.rb +25 -9
- data/bundler/lib/bundler/plugin/dsl.rb +1 -1
- data/bundler/lib/bundler/plugin/index.rb +13 -1
- data/bundler/lib/bundler/plugin/installer/git.rb +0 -4
- data/bundler/lib/bundler/plugin/installer/rubygems.rb +1 -5
- data/bundler/lib/bundler/plugin/installer.rb +11 -11
- data/bundler/lib/bundler/plugin/source_list.rb +5 -1
- data/bundler/lib/bundler/plugin.rb +58 -11
- data/bundler/lib/bundler/process_lock.rb +1 -1
- data/bundler/lib/bundler/remote_specification.rb +11 -6
- data/bundler/lib/bundler/resolver/base.rb +50 -0
- data/bundler/lib/bundler/resolver/spec_group.rb +64 -57
- data/bundler/lib/bundler/resolver.rb +234 -230
- data/bundler/lib/bundler/retry.rb +2 -2
- data/bundler/lib/bundler/ruby_dsl.rb +1 -1
- data/bundler/lib/bundler/ruby_version.rb +6 -19
- data/bundler/lib/bundler/rubygems_ext.rb +194 -33
- data/bundler/lib/bundler/rubygems_gem_installer.rb +87 -16
- data/bundler/lib/bundler/rubygems_integration.rb +71 -153
- data/bundler/lib/bundler/runtime.rb +22 -26
- data/bundler/lib/bundler/self_manager.rb +168 -0
- data/bundler/lib/bundler/settings.rb +145 -66
- data/bundler/lib/bundler/setup.rb +2 -2
- data/bundler/lib/bundler/shared_helpers.rb +17 -32
- data/bundler/lib/bundler/similarity_detector.rb +1 -1
- data/bundler/lib/bundler/source/git/git_proxy.rb +88 -84
- data/bundler/lib/bundler/source/git.rb +50 -32
- data/bundler/lib/bundler/source/metadata.rb +3 -7
- data/bundler/lib/bundler/source/path/installer.rb +10 -10
- data/bundler/lib/bundler/source/path.rb +10 -4
- data/bundler/lib/bundler/source/rubygems/remote.rb +1 -1
- data/bundler/lib/bundler/source/rubygems.rb +201 -179
- data/bundler/lib/bundler/source/rubygems_aggregate.rb +68 -0
- data/bundler/lib/bundler/source.rb +25 -5
- data/bundler/lib/bundler/source_list.rb +105 -63
- data/bundler/lib/bundler/source_map.rb +71 -0
- data/bundler/lib/bundler/spec_set.rb +62 -57
- data/bundler/lib/bundler/stub_specification.rb +30 -10
- data/bundler/lib/bundler/templates/Executable +2 -4
- data/bundler/lib/bundler/templates/Executable.bundler +8 -8
- data/bundler/lib/bundler/templates/Executable.standalone +2 -4
- data/bundler/lib/bundler/templates/Gemfile +0 -2
- data/bundler/lib/bundler/templates/gems.rb +0 -3
- 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 +12 -1
- data/bundler/lib/bundler/templates/newgem/README.md.tt +9 -14
- data/bundler/lib/bundler/templates/newgem/Rakefile.tt +32 -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 +27 -0
- data/bundler/lib/bundler/templates/newgem/gitlab-ci.yml.tt +9 -0
- data/bundler/lib/bundler/templates/newgem/lib/newgem/version.rb.tt +2 -0
- data/bundler/lib/bundler/templates/newgem/lib/newgem.rb.tt +4 -2
- data/bundler/lib/bundler/templates/newgem/newgem.gemspec.tt +27 -17
- data/bundler/lib/bundler/templates/newgem/rubocop.yml.tt +13 -0
- data/bundler/lib/bundler/templates/newgem/sig/newgem.rbs.tt +8 -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/standard.yml.tt +3 -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/{newgem_test.rb.tt → minitest/test_newgem.rb.tt} +3 -1
- 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 +6 -6
- data/bundler/lib/bundler/uri_credentials_filter.rb +3 -1
- data/bundler/lib/bundler/vendor/.document +1 -0
- data/bundler/lib/bundler/vendor/connection_pool/LICENSE +20 -0
- data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/timed_stack.rb +19 -21
- data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/version.rb +1 -1
- data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/wrapper.rb +57 -0
- data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool.rb +39 -74
- data/bundler/lib/bundler/vendor/fileutils/LICENSE.txt +22 -0
- data/bundler/lib/bundler/vendor/molinillo/LICENSE +9 -0
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/delegates/specification_provider.rb +7 -0
- 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/dependency_graph.rb +37 -5
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/errors.rb +34 -28
- 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 +12 -1
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/resolution.rb +49 -47
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo.rb +0 -1
- data/bundler/lib/bundler/vendor/net-http-persistent/README.rdoc +82 -0
- data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb +82 -189
- data/bundler/lib/bundler/vendor/thor/LICENSE.md +20 -0
- 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 +9 -7
- data/bundler/lib/bundler/vendor/thor/lib/thor/actions/inject_into_file.rb +1 -2
- data/bundler/lib/bundler/vendor/thor/lib/thor/actions.rb +7 -3
- data/bundler/lib/bundler/vendor/thor/lib/thor/base.rb +9 -0
- data/bundler/lib/bundler/vendor/thor/lib/thor/core_ext/hash_with_indifferent_access.rb +6 -0
- data/bundler/lib/bundler/vendor/thor/lib/thor/error.rb +10 -5
- data/bundler/lib/bundler/vendor/thor/lib/thor/parser/arguments.rb +5 -1
- data/bundler/lib/bundler/vendor/thor/lib/thor/parser/options.rb +28 -9
- data/bundler/lib/bundler/vendor/thor/lib/thor/shell/basic.rb +27 -6
- data/bundler/lib/bundler/vendor/thor/lib/thor/shell/color.rb +5 -1
- data/bundler/lib/bundler/vendor/thor/lib/thor/shell.rb +1 -1
- data/bundler/lib/bundler/vendor/thor/lib/thor/util.rb +1 -1
- data/bundler/lib/bundler/vendor/thor/lib/thor/version.rb +1 -1
- data/bundler/lib/bundler/vendor/thor/lib/thor.rb +5 -13
- data/bundler/lib/bundler/vendor/tmpdir/lib/tmpdir.rb +154 -0
- data/bundler/lib/bundler/vendor/tsort/LICENSE.txt +22 -0
- data/bundler/lib/bundler/vendor/tsort/lib/tsort.rb +452 -0
- data/bundler/lib/bundler/vendor/uri/LICENSE.txt +22 -0
- data/bundler/lib/bundler/vendor/uri/lib/uri/common.rb +17 -80
- data/bundler/lib/bundler/vendor/uri/lib/uri/ftp.rb +0 -1
- data/bundler/lib/bundler/vendor/uri/lib/uri/generic.rb +5 -6
- data/bundler/lib/bundler/vendor/uri/lib/uri/http.rb +0 -1
- data/bundler/lib/bundler/vendor/uri/lib/uri/https.rb +0 -1
- data/bundler/lib/bundler/vendor/uri/lib/uri/ldap.rb +1 -1
- data/bundler/lib/bundler/vendor/uri/lib/uri/mailto.rb +0 -1
- data/bundler/lib/bundler/vendor/uri/lib/uri/rfc2396_parser.rb +1 -14
- data/bundler/lib/bundler/vendor/uri/lib/uri/rfc3986_parser.rb +1 -12
- data/bundler/lib/bundler/vendor/uri/lib/uri/version.rb +1 -1
- data/bundler/lib/bundler/vendor/uri/lib/uri/ws.rb +84 -0
- data/bundler/lib/bundler/vendor/uri/lib/uri/wss.rb +22 -0
- data/bundler/lib/bundler/vendor/uri/lib/uri.rb +0 -1
- data/bundler/lib/bundler/vendored_persistent.rb +0 -7
- data/bundler/lib/bundler/vendored_tmpdir.rb +4 -0
- data/bundler/lib/bundler/vendored_tsort.rb +4 -0
- data/bundler/lib/bundler/version.rb +1 -1
- data/bundler/lib/bundler/worker.rb +20 -5
- data/bundler/lib/bundler/yaml_serializer.rb +1 -1
- data/bundler/lib/bundler.rb +79 -47
- data/hide_lib_for_update/note.txt +0 -4
- data/lib/rubygems/available_set.rb +7 -9
- data/lib/rubygems/basic_specification.rb +23 -21
- data/lib/rubygems/bundler_version_finder.rb +26 -53
- data/lib/rubygems/command.rb +48 -45
- data/lib/rubygems/command_manager.rb +20 -14
- data/lib/rubygems/commands/build_command.rb +47 -27
- data/lib/rubygems/commands/cert_command.rb +78 -75
- data/lib/rubygems/commands/check_command.rb +20 -22
- data/lib/rubygems/commands/cleanup_command.rb +30 -26
- data/lib/rubygems/commands/contents_command.rb +16 -18
- data/lib/rubygems/commands/dependency_command.rb +39 -51
- data/lib/rubygems/commands/environment_command.rb +11 -10
- data/lib/rubygems/commands/fetch_command.rb +33 -16
- data/lib/rubygems/commands/generate_index_command.rb +17 -19
- data/lib/rubygems/commands/help_command.rb +6 -6
- data/lib/rubygems/commands/info_command.rb +10 -7
- data/lib/rubygems/commands/install_command.rb +29 -27
- data/lib/rubygems/commands/list_command.rb +9 -8
- data/lib/rubygems/commands/lock_command.rb +5 -7
- data/lib/rubygems/commands/mirror_command.rb +3 -5
- data/lib/rubygems/commands/open_command.rb +10 -14
- data/lib/rubygems/commands/outdated_command.rb +5 -7
- data/lib/rubygems/commands/owner_command.rb +26 -16
- data/lib/rubygems/commands/pristine_command.rb +61 -49
- data/lib/rubygems/commands/push_command.rb +22 -59
- data/lib/rubygems/commands/query_command.rb +21 -351
- data/lib/rubygems/commands/rdoc_command.rb +23 -25
- data/lib/rubygems/commands/search_command.rb +8 -8
- data/lib/rubygems/commands/server_command.rb +16 -77
- data/lib/rubygems/commands/setup_command.rb +255 -229
- data/lib/rubygems/commands/signin_command.rb +9 -11
- data/lib/rubygems/commands/signout_command.rb +7 -9
- data/lib/rubygems/commands/sources_command.rb +27 -25
- data/lib/rubygems/commands/specification_command.rb +25 -21
- data/lib/rubygems/commands/stale_command.rb +3 -5
- data/lib/rubygems/commands/uninstall_command.rb +41 -43
- data/lib/rubygems/commands/unpack_command.rb +13 -15
- data/lib/rubygems/commands/update_command.rb +132 -74
- data/lib/rubygems/commands/which_command.rb +7 -9
- data/lib/rubygems/commands/yank_command.rb +16 -19
- data/lib/rubygems/compatibility.rb +4 -2
- data/lib/rubygems/config_file.rb +42 -26
- data/lib/rubygems/core_ext/kernel_gem.rb +1 -1
- data/lib/rubygems/core_ext/kernel_require.rb +6 -3
- 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 +108 -32
- data/lib/rubygems/dependency.rb +21 -22
- data/lib/rubygems/dependency_installer.rb +19 -91
- data/lib/rubygems/dependency_list.rb +13 -15
- data/lib/rubygems/deprecate.rb +102 -8
- data/lib/rubygems/doctor.rb +22 -22
- data/lib/rubygems/errors.rb +6 -21
- data/lib/rubygems/exceptions.rb +33 -34
- data/lib/rubygems/ext/build_error.rb +2 -0
- data/lib/rubygems/ext/builder.rb +48 -54
- data/lib/rubygems/ext/cargo_builder/link_flag_converter.rb +23 -0
- data/lib/rubygems/ext/cargo_builder.rb +321 -0
- 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 +42 -66
- data/lib/rubygems/ext/rake_builder.rb +7 -10
- data/lib/rubygems/ext.rb +7 -6
- data/lib/rubygems/gem_runner.rb +15 -26
- data/lib/rubygems/gemcutter_utilities.rb +153 -32
- data/lib/rubygems/indexer.rb +30 -49
- data/lib/rubygems/install_default_message.rb +2 -2
- data/lib/rubygems/install_message.rb +2 -2
- data/lib/rubygems/install_update_options.rb +73 -64
- data/lib/rubygems/installer.rb +194 -151
- data/lib/rubygems/installer_uninstaller_utils.rb +29 -0
- data/lib/rubygems/local_remote_options.rb +22 -24
- data/lib/rubygems/mock_gem_ui.rb +2 -8
- data/lib/rubygems/name_tuple.rb +9 -14
- data/lib/rubygems/openssl.rb +7 -0
- data/lib/rubygems/optparse/.document +1 -0
- data/lib/rubygems/optparse/COPYING +56 -0
- data/lib/rubygems/optparse/lib/optionparser.rb +2 -0
- data/lib/rubygems/optparse/lib/optparse/ac.rb +54 -0
- data/lib/rubygems/optparse/lib/optparse/date.rb +18 -0
- data/lib/rubygems/optparse/lib/optparse/kwargs.rb +22 -0
- data/lib/rubygems/optparse/lib/optparse/shellwords.rb +7 -0
- data/lib/rubygems/optparse/lib/optparse/time.rb +11 -0
- data/lib/rubygems/optparse/lib/optparse/uri.rb +7 -0
- data/lib/rubygems/optparse/lib/optparse/version.rb +71 -0
- data/lib/rubygems/optparse/lib/optparse.rb +2303 -0
- data/lib/rubygems/optparse.rb +3 -0
- data/lib/rubygems/package/digest_io.rb +0 -2
- data/lib/rubygems/package/file_source.rb +2 -4
- data/lib/rubygems/package/io_source.rb +4 -2
- data/lib/rubygems/package/old.rb +9 -11
- data/lib/rubygems/package/tar_header.rb +54 -56
- data/lib/rubygems/package/tar_reader/entry.rb +2 -5
- data/lib/rubygems/package/tar_reader.rb +1 -4
- data/lib/rubygems/package/tar_writer.rb +8 -18
- data/lib/rubygems/package.rb +101 -117
- data/lib/rubygems/package_task.rb +5 -11
- data/lib/rubygems/path_support.rb +2 -9
- data/lib/rubygems/platform.rb +101 -76
- data/lib/rubygems/psych_tree.rb +1 -3
- data/lib/rubygems/query_utils.rb +351 -0
- data/lib/rubygems/rdoc.rb +2 -14
- data/lib/rubygems/remote_fetcher.rb +48 -74
- data/lib/rubygems/request/connection_pools.rb +6 -10
- data/lib/rubygems/request/http_pool.rb +2 -4
- data/lib/rubygems/request/https_pool.rb +0 -2
- data/lib/rubygems/request.rb +26 -31
- data/lib/rubygems/request_set/gem_dependency_api.rb +23 -25
- data/lib/rubygems/request_set/lockfile/parser.rb +26 -28
- data/lib/rubygems/request_set/lockfile/tokenizer.rb +5 -7
- data/lib/rubygems/request_set/lockfile.rb +17 -21
- data/lib/rubygems/request_set.rb +27 -40
- data/lib/rubygems/requirement.rb +28 -48
- data/lib/rubygems/resolver/activation_request.rb +12 -6
- data/lib/rubygems/resolver/api_set/gem_parser.rb +20 -0
- data/lib/rubygems/resolver/api_set.rb +32 -25
- data/lib/rubygems/resolver/api_specification.rb +29 -15
- data/lib/rubygems/resolver/best_set.rb +7 -9
- data/lib/rubygems/resolver/composed_set.rb +3 -5
- data/lib/rubygems/resolver/conflict.rb +12 -14
- data/lib/rubygems/resolver/current_set.rb +0 -2
- data/lib/rubygems/resolver/dependency_request.rb +3 -5
- data/lib/rubygems/resolver/git_set.rb +2 -4
- data/lib/rubygems/resolver/git_specification.rb +6 -8
- data/lib/rubygems/resolver/index_set.rb +4 -6
- data/lib/rubygems/resolver/index_specification.rb +38 -7
- data/lib/rubygems/resolver/installed_specification.rb +4 -6
- data/lib/rubygems/resolver/installer_set.rb +66 -24
- data/lib/rubygems/resolver/local_specification.rb +2 -4
- data/lib/rubygems/resolver/lock_set.rb +6 -8
- data/lib/rubygems/resolver/lock_specification.rb +4 -6
- data/lib/rubygems/resolver/molinillo/LICENSE +9 -0
- 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/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/dependency_graph.rb +41 -8
- 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 +13 -1
- 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/molinillo/lib/molinillo.rb +6 -5
- data/lib/rubygems/resolver/molinillo.rb +1 -1
- data/lib/rubygems/resolver/requirement_list.rb +0 -2
- data/lib/rubygems/resolver/set.rb +0 -3
- data/lib/rubygems/resolver/source_set.rb +0 -2
- data/lib/rubygems/resolver/spec_specification.rb +14 -2
- data/lib/rubygems/resolver/specification.rb +14 -4
- data/lib/rubygems/resolver/stats.rb +0 -2
- data/lib/rubygems/resolver/vendor_set.rb +1 -3
- data/lib/rubygems/resolver/vendor_specification.rb +3 -5
- data/lib/rubygems/resolver.rb +53 -51
- data/lib/rubygems/s3_uri_signer.rb +7 -15
- data/lib/rubygems/safe_yaml.rb +14 -16
- data/lib/rubygems/security/policies.rb +11 -11
- data/lib/rubygems/security/policy.rb +25 -29
- data/lib/rubygems/security/signer.rb +13 -16
- data/lib/rubygems/security/trust_dir.rb +4 -5
- data/lib/rubygems/security.rb +103 -69
- data/lib/rubygems/security_option.rb +7 -7
- data/lib/rubygems/source/git.rb +30 -30
- data/lib/rubygems/source/installed.rb +1 -3
- data/lib/rubygems/source/local.rb +4 -6
- data/lib/rubygems/source/lock.rb +0 -2
- data/lib/rubygems/source/specific_file.rb +1 -3
- data/lib/rubygems/source/vendor.rb +0 -2
- data/lib/rubygems/source.rb +44 -38
- data/lib/rubygems/source_list.rb +9 -16
- data/lib/rubygems/spec_fetcher.rb +49 -48
- data/lib/rubygems/specification.rb +338 -295
- data/lib/rubygems/specification_policy.rb +112 -61
- data/lib/rubygems/stub_specification.rb +21 -28
- data/lib/rubygems/text.rb +21 -20
- data/lib/rubygems/tsort/.document +1 -0
- data/lib/rubygems/tsort/LICENSE.txt +22 -0
- data/lib/rubygems/tsort/lib/tsort.rb +454 -0
- data/lib/rubygems/tsort.rb +3 -0
- data/lib/rubygems/uninstaller.rb +98 -45
- data/lib/rubygems/unknown_command_spell_checker.rb +21 -0
- data/lib/rubygems/uri.rb +126 -0
- data/lib/rubygems/uri_formatter.rb +2 -3
- data/lib/rubygems/user_interaction.rb +43 -54
- data/lib/rubygems/util/licenses.rb +115 -10
- data/lib/rubygems/util/list.rb +0 -2
- data/lib/rubygems/util.rb +18 -12
- data/lib/rubygems/validator.rb +6 -8
- data/lib/rubygems/version.rb +29 -20
- data/lib/rubygems/version_option.rb +11 -5
- data/lib/rubygems.rb +192 -289
- data/rubygems-update.gemspec +4 -4
- data/setup.rb +11 -22
- data/test/rubygems/data/excon-0.7.7.gemspec.rz +0 -0
- 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/data/pry-0.4.7.gemspec.rz +0 -0
- data/test/rubygems/encrypted_private_key.pem +26 -26
- data/{lib/rubygems/test_case.rb → test/rubygems/helper.rb} +380 -314
- data/{lib → test}/rubygems/installer_test_case.rb +38 -24
- data/{lib → test}/rubygems/package/tar_test_case.rb +4 -6
- data/test/rubygems/packages/ascii_binder-0.1.10.1.gem +0 -0
- data/test/rubygems/packages/ill-formatted-platform-1.0.0.10.gem +0 -0
- data/test/rubygems/plugin/exception/rubygems_plugin.rb +1 -1
- data/test/rubygems/plugin/load/rubygems_plugin.rb +0 -2
- data/test/rubygems/plugin/standarderror/rubygems_plugin.rb +1 -1
- data/test/rubygems/private_ec_key.pem +9 -0
- data/test/rubygems/rubygems/commands/crash_command.rb +0 -2
- data/test/rubygems/rubygems_plugin.rb +2 -4
- data/test/rubygems/specifications/bar-0.0.2.gemspec +0 -2
- data/test/rubygems/specifications/rubyforge-0.0.1.gemspec +4 -6
- data/test/rubygems/test_bundled_ca.rb +43 -50
- data/test/rubygems/test_config.rb +5 -7
- data/test/rubygems/test_deprecate.rb +87 -10
- data/test/rubygems/test_exit.rb +11 -0
- data/test/rubygems/test_gem.rb +719 -639
- data/test/rubygems/test_gem_available_set.rb +24 -26
- data/test/rubygems/test_gem_bundler_version_finder.rb +37 -44
- data/test/rubygems/test_gem_command.rb +78 -49
- data/test/rubygems/test_gem_command_manager.rb +98 -35
- data/test/rubygems/test_gem_commands_build_command.rb +275 -57
- data/test/rubygems/test_gem_commands_cert_command.rb +180 -125
- data/test/rubygems/test_gem_commands_check_command.rb +9 -11
- data/test/rubygems/test_gem_commands_cleanup_command.rb +78 -69
- data/test/rubygems/test_gem_commands_contents_command.rb +73 -42
- data/test/rubygems/test_gem_commands_dependency_command.rb +38 -40
- data/test/rubygems/test_gem_commands_environment_command.rb +60 -38
- data/test/rubygems/test_gem_commands_fetch_command.rb +163 -32
- data/test/rubygems/test_gem_commands_generate_index_command.rb +8 -14
- data/test/rubygems/test_gem_commands_help_command.rb +34 -16
- data/test/rubygems/test_gem_commands_info_command.rb +33 -9
- data/test/rubygems/test_gem_commands_install_command.rb +401 -198
- data/test/rubygems/test_gem_commands_list_command.rb +5 -7
- data/test/rubygems/test_gem_commands_lock_command.rb +11 -13
- data/test/rubygems/test_gem_commands_mirror.rb +3 -5
- data/test/rubygems/test_gem_commands_open_command.rb +16 -19
- data/test/rubygems/test_gem_commands_outdated_command.rb +23 -7
- data/test/rubygems/test_gem_commands_owner_command.rb +100 -46
- data/test/rubygems/test_gem_commands_pristine_command.rb +131 -99
- data/test/rubygems/test_gem_commands_push_command.rb +134 -66
- data/test/rubygems/test_gem_commands_query_command.rb +91 -91
- data/test/rubygems/test_gem_commands_search_command.rb +2 -4
- data/test/rubygems/test_gem_commands_server_command.rb +6 -50
- data/test/rubygems/test_gem_commands_setup_command.rb +288 -179
- data/test/rubygems/test_gem_commands_signin_command.rb +162 -28
- data/test/rubygems/test_gem_commands_signout_command.rb +3 -10
- data/test/rubygems/test_gem_commands_sources_command.rb +139 -32
- data/test/rubygems/test_gem_commands_specification_command.rb +81 -55
- data/test/rubygems/test_gem_commands_stale_command.rb +4 -6
- data/test/rubygems/test_gem_commands_uninstall_command.rb +80 -82
- data/test/rubygems/test_gem_commands_unpack_command.rb +32 -34
- data/test/rubygems/test_gem_commands_update_command.rb +335 -88
- data/test/rubygems/test_gem_commands_which_command.rb +12 -14
- data/test/rubygems/test_gem_commands_yank_command.rb +80 -44
- data/test/rubygems/test_gem_config_file.rb +114 -97
- data/test/rubygems/test_gem_dependency.rb +87 -87
- data/test/rubygems/test_gem_dependency_installer.rb +277 -391
- data/test/rubygems/test_gem_dependency_list.rb +57 -59
- data/test/rubygems/test_gem_dependency_resolution_error.rb +5 -7
- data/test/rubygems/test_gem_doctor.rb +73 -47
- data/test/rubygems/test_gem_ext_builder.rb +115 -109
- data/test/rubygems/test_gem_ext_cargo_builder/custom_name/.gitignore +1 -0
- data/test/rubygems/test_gem_ext_cargo_builder/custom_name/Cargo.lock +243 -0
- data/test/rubygems/test_gem_ext_cargo_builder/custom_name/Cargo.toml +10 -0
- data/test/rubygems/test_gem_ext_cargo_builder/custom_name/build.rb +21 -0
- data/test/rubygems/test_gem_ext_cargo_builder/custom_name/custom_name.gemspec +10 -0
- data/test/rubygems/test_gem_ext_cargo_builder/custom_name/src/lib.rs +27 -0
- data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/.gitignore +1 -0
- data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/Cargo.lock +243 -0
- data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/Cargo.toml +10 -0
- data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/build.rb +21 -0
- data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/rust_ruby_example.gemspec +8 -0
- data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/src/lib.rs +39 -0
- data/test/rubygems/test_gem_ext_cargo_builder.rb +178 -0
- data/test/rubygems/test_gem_ext_cargo_builder_link_flag_converter.rb +33 -0
- data/test/rubygems/test_gem_ext_cargo_builder_unit.rb +75 -0
- data/test/rubygems/test_gem_ext_cmake_builder.rb +31 -38
- data/test/rubygems/test_gem_ext_configure_builder.rb +23 -39
- data/test/rubygems/test_gem_ext_ext_conf_builder.rb +66 -82
- data/test/rubygems/test_gem_ext_rake_builder.rb +49 -32
- data/test/rubygems/test_gem_gem_runner.rb +51 -8
- data/test/rubygems/test_gem_gemcutter_utilities.rb +87 -76
- data/test/rubygems/test_gem_impossible_dependencies_error.rb +4 -6
- data/test/rubygems/test_gem_indexer.rb +62 -64
- data/test/rubygems/test_gem_install_update_options.rb +31 -21
- data/test/rubygems/test_gem_installer.rb +798 -491
- data/test/rubygems/test_gem_local_remote_options.rb +11 -13
- data/test/rubygems/test_gem_name_tuple.rb +4 -6
- data/test/rubygems/test_gem_package.rb +318 -283
- data/test/rubygems/test_gem_package_old.rb +18 -20
- data/test/rubygems/test_gem_package_tar_header.rb +64 -47
- data/test/rubygems/test_gem_package_tar_reader.rb +8 -10
- data/test/rubygems/test_gem_package_tar_reader_entry.rb +18 -20
- data/test/rubygems/test_gem_package_tar_writer.rb +96 -100
- data/test/rubygems/test_gem_package_task.rb +58 -25
- data/test/rubygems/test_gem_path_support.rb +15 -21
- data/test/rubygems/test_gem_platform.rb +354 -201
- data/test/rubygems/test_gem_rdoc.rb +19 -21
- data/test/rubygems/test_gem_remote_fetcher.rb +376 -337
- data/test/rubygems/test_gem_request.rb +114 -86
- data/test/rubygems/test_gem_request_connection_pools.rb +30 -34
- data/test/rubygems/test_gem_request_set.rb +123 -124
- data/test/rubygems/test_gem_request_set_gem_dependency_api.rb +222 -226
- data/test/rubygems/test_gem_request_set_lockfile.rb +93 -95
- data/test/rubygems/test_gem_request_set_lockfile_parser.rb +68 -70
- data/test/rubygems/test_gem_request_set_lockfile_tokenizer.rb +136 -138
- data/test/rubygems/test_gem_requirement.rb +133 -54
- data/test/rubygems/test_gem_resolver.rb +149 -117
- data/test/rubygems/test_gem_resolver_activation_request.rb +6 -8
- data/test/rubygems/test_gem_resolver_api_set.rb +79 -78
- data/test/rubygems/test_gem_resolver_api_specification.rb +47 -49
- data/test/rubygems/test_gem_resolver_best_set.rb +43 -22
- data/test/rubygems/test_gem_resolver_composed_set.rb +1 -3
- data/test/rubygems/test_gem_resolver_conflict.rb +12 -14
- data/test/rubygems/test_gem_resolver_dependency_request.rb +15 -17
- data/test/rubygems/test_gem_resolver_git_set.rb +22 -24
- data/test/rubygems/test_gem_resolver_git_specification.rb +22 -23
- data/test/rubygems/test_gem_resolver_index_set.rb +14 -16
- data/test/rubygems/test_gem_resolver_index_specification.rb +16 -18
- data/test/rubygems/test_gem_resolver_installed_specification.rb +5 -7
- data/test/rubygems/test_gem_resolver_installer_set.rb +104 -44
- data/test/rubygems/test_gem_resolver_local_specification.rb +7 -9
- data/test/rubygems/test_gem_resolver_lock_set.rb +15 -17
- data/test/rubygems/test_gem_resolver_lock_specification.rb +17 -19
- data/test/rubygems/test_gem_resolver_requirement_list.rb +1 -3
- data/test/rubygems/test_gem_resolver_specification.rb +8 -12
- data/test/rubygems/test_gem_resolver_vendor_set.rb +9 -11
- data/test/rubygems/test_gem_resolver_vendor_specification.rb +10 -12
- data/test/rubygems/test_gem_security.rb +104 -78
- data/test/rubygems/test_gem_security_policy.rb +92 -97
- data/test/rubygems/test_gem_security_signer.rb +45 -47
- data/test/rubygems/test_gem_security_trust_dir.rb +12 -14
- data/test/rubygems/test_gem_silent_ui.rb +46 -42
- data/test/rubygems/test_gem_source.rb +53 -52
- data/test/rubygems/test_gem_source_fetch_problem.rb +16 -8
- data/test/rubygems/test_gem_source_git.rb +69 -69
- data/test/rubygems/test_gem_source_installed.rb +16 -18
- data/test/rubygems/test_gem_source_list.rb +5 -6
- data/test/rubygems/test_gem_source_local.rb +15 -17
- data/test/rubygems/test_gem_source_lock.rb +31 -33
- data/test/rubygems/test_gem_source_specific_file.rb +18 -20
- data/test/rubygems/test_gem_source_subpath_problem.rb +49 -0
- data/test/rubygems/test_gem_source_vendor.rb +13 -15
- data/test/rubygems/test_gem_spec_fetcher.rb +74 -67
- data/test/rubygems/test_gem_specification.rb +888 -1024
- data/test/rubygems/test_gem_stream_ui.rb +23 -23
- data/test/rubygems/test_gem_stub_specification.rb +39 -57
- data/test/rubygems/test_gem_text.rb +8 -4
- data/test/rubygems/test_gem_uninstaller.rb +233 -104
- data/test/rubygems/test_gem_unsatisfiable_dependency_error.rb +3 -5
- data/test/rubygems/test_gem_uri.rb +39 -0
- data/test/rubygems/test_gem_uri_formatter.rb +14 -16
- data/test/rubygems/test_gem_util.rb +37 -35
- data/test/rubygems/test_gem_validator.rb +10 -12
- data/test/rubygems/test_gem_version.rb +31 -31
- data/test/rubygems/test_gem_version_option.rb +16 -18
- data/test/rubygems/test_kernel.rb +46 -60
- data/test/rubygems/test_project_sanity.rb +8 -3
- data/test/rubygems/test_remote_fetch_error.rb +7 -9
- data/test/rubygems/test_require.rb +240 -167
- data/test/rubygems/test_rubygems.rb +74 -0
- data/{lib/rubygems/test_utilities.rb → test/rubygems/utilities.rb} +30 -39
- data/test/test_changelog_generator.rb +17 -0
- metadata +158 -146
- data/.bundle/config +0 -2
- data/.rubocop.yml +0 -91
- data/Gemfile +0 -8
- data/Gemfile.lock +0 -43
- data/Rakefile +0 -428
- data/bundler/CODE_OF_CONDUCT.md +0 -136
- data/bundler/lib/bundler/gemdeps.rb +0 -29
- data/bundler/lib/bundler/psyched_yaml.rb +0 -37
- data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/monotonic_time.rb +0 -66
- 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/psych_additions.rb +0 -10
- data/lib/rubygems/server.rb +0 -879
- data/lib/rubygems/source_local.rb +0 -7
- data/lib/rubygems/source_specific_file.rb +0 -6
- data/lib/rubygems/syck_hack.rb +0 -79
- data/lib/rubygems/uri_parser.rb +0 -36
- data/lib/rubygems/uri_parsing.rb +0 -23
- data/lib/ubygems.rb +0 -14
- data/test/rubygems/bogussources.rb +0 -9
- data/test/rubygems/data/null-type.gemspec.rz +0 -0
- data/test/rubygems/test_gem_server.rb +0 -612
- 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 -137
- data/util/update_changelog.rb +0 -64
- /data/bundler/{man/bundle-check.ronn → lib/bundler/man/bundle-check.1.ronn} +0 -0
- /data/bundler/{man/bundle-clean.ronn → lib/bundler/man/bundle-clean.1.ronn} +0 -0
- /data/bundler/{man/bundle-doctor.ronn → lib/bundler/man/bundle-doctor.1.ronn} +0 -0
- /data/bundler/{man/bundle-info.ronn → lib/bundler/man/bundle-info.1.ronn} +0 -0
- /data/bundler/{man/bundle-init.ronn → lib/bundler/man/bundle-init.1.ronn} +0 -0
- /data/bundler/{man/bundle-lock.ronn → lib/bundler/man/bundle-lock.1.ronn} +0 -0
- /data/bundler/{man/bundle-open.ronn → lib/bundler/man/bundle-open.1.ronn} +0 -0
- /data/bundler/{man/bundle-pristine.ronn → lib/bundler/man/bundle-pristine.1.ronn} +0 -0
- /data/bundler/{man/bundle-remove.ronn → lib/bundler/man/bundle-remove.1.ronn} +0 -0
- /data/bundler/{man/bundle-show.ronn → lib/bundler/man/bundle-show.1.ronn} +0 -0
@@ -1,19 +1,16 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
-
#
|
2
|
+
#
|
3
3
|
#--
|
4
4
|
# Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others.
|
5
5
|
# All rights reserved.
|
6
6
|
# See LICENSE.txt for permissions.
|
7
7
|
#++
|
8
8
|
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
require 'rubygems/stub_specification'
|
15
|
-
require 'rubygems/specification_policy'
|
16
|
-
require 'rubygems/util/list'
|
9
|
+
require_relative "deprecate"
|
10
|
+
require_relative "basic_specification"
|
11
|
+
require_relative "stub_specification"
|
12
|
+
require_relative "platform"
|
13
|
+
require_relative "util/list"
|
17
14
|
|
18
15
|
##
|
19
16
|
# The Specification class contains the information for a gem. Typically
|
@@ -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
|
@@ -78,21 +74,21 @@ class Gem::Specification < Gem::BasicSpecification
|
|
78
74
|
# key should be equal to the CURRENT_SPECIFICATION_VERSION.
|
79
75
|
|
80
76
|
SPECIFICATION_VERSION_HISTORY = { # :nodoc:
|
81
|
-
-1 => [
|
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
|
-
|
87
|
+
"Added Fixnum validation to the specification_version",
|
92
88
|
],
|
93
89
|
4 => [
|
94
|
-
|
95
|
-
]
|
90
|
+
"Added sandboxed freeform metadata to the specification version.",
|
91
|
+
],
|
96
92
|
}.freeze
|
97
93
|
|
98
94
|
MARSHAL_FIELDS = { # :nodoc:
|
@@ -106,12 +102,8 @@ class Gem::Specification < Gem::BasicSpecification
|
|
106
102
|
today = Time.now.utc
|
107
103
|
TODAY = Time.utc(today.year, today.month, today.day) # :nodoc:
|
108
104
|
|
109
|
-
#
|
110
|
-
|
111
|
-
# rubocop:enable Style/MutableConstant
|
112
|
-
LOAD_CACHE_MUTEX = Mutex.new
|
113
|
-
|
114
|
-
private_constant :LOAD_CACHE if defined? private_constant
|
105
|
+
@load_cache = {} # :nodoc:
|
106
|
+
@load_cache_mutex = Thread::Mutex.new
|
115
107
|
|
116
108
|
VALID_NAME_PATTERN = /\A[a-zA-Z0-9\.\-\_]+\z/.freeze # :nodoc:
|
117
109
|
|
@@ -134,7 +126,7 @@ class Gem::Specification < Gem::BasicSpecification
|
|
134
126
|
@@default_value = {
|
135
127
|
:authors => [],
|
136
128
|
:autorequire => nil,
|
137
|
-
:bindir =>
|
129
|
+
:bindir => "bin",
|
138
130
|
:cert_chain => [],
|
139
131
|
:date => nil,
|
140
132
|
:dependencies => [],
|
@@ -151,7 +143,7 @@ class Gem::Specification < Gem::BasicSpecification
|
|
151
143
|
:platform => Gem::Platform::RUBY,
|
152
144
|
:post_install_message => nil,
|
153
145
|
:rdoc_options => [],
|
154
|
-
:require_paths => [
|
146
|
+
:require_paths => ["lib"],
|
155
147
|
:required_ruby_version => Gem::Requirement.default,
|
156
148
|
:required_rubygems_version => Gem::Requirement.default,
|
157
149
|
:requirements => [],
|
@@ -164,34 +156,41 @@ class Gem::Specification < Gem::BasicSpecification
|
|
164
156
|
}.freeze
|
165
157
|
|
166
158
|
# rubocop:disable Style/MutableConstant
|
167
|
-
INITIALIZE_CODE_FOR_DEFAULTS = {
|
159
|
+
INITIALIZE_CODE_FOR_DEFAULTS = {} # :nodoc:
|
168
160
|
# rubocop:enable Style/MutableConstant
|
169
161
|
|
170
162
|
@@default_value.each do |k,v|
|
171
163
|
INITIALIZE_CODE_FOR_DEFAULTS[k] = case v
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
end
|
182
|
-
|
183
|
-
@@attributes = @@default_value.keys.sort_by {
|
184
|
-
@@array_attributes = @@default_value.reject {
|
164
|
+
when [], {}, true, false, nil, Numeric, Symbol
|
165
|
+
v.inspect
|
166
|
+
when String
|
167
|
+
v.dump
|
168
|
+
when Numeric
|
169
|
+
"default_value(:#{k})"
|
170
|
+
else
|
171
|
+
"default_value(:#{k}).dup"
|
172
|
+
end
|
173
|
+
end
|
174
|
+
|
175
|
+
@@attributes = @@default_value.keys.sort_by {|s| s.to_s }
|
176
|
+
@@array_attributes = @@default_value.reject {|k,v| v != [] }.keys
|
185
177
|
@@nil_attributes, @@non_nil_attributes = @@default_value.keys.partition do |k|
|
186
178
|
@@default_value[k].nil?
|
187
179
|
end
|
188
180
|
|
189
|
-
|
181
|
+
def self.clear_specs # :nodoc:
|
182
|
+
@@all = nil
|
183
|
+
@@stubs = nil
|
184
|
+
@@stubs_by_name = {}
|
185
|
+
@@spec_with_requirable_file = {}
|
186
|
+
@@active_stub_with_requirable_file = {}
|
187
|
+
end
|
188
|
+
private_class_method :clear_specs
|
189
|
+
|
190
|
+
clear_specs
|
190
191
|
|
191
192
|
# Sentinel object to represent "not found" stubs
|
192
193
|
NOT_FOUND = Struct.new(:to_spec, :this).new # :nodoc:
|
193
|
-
@@spec_with_requirable_file = {}
|
194
|
-
@@active_stub_with_requirable_file = {}
|
195
194
|
|
196
195
|
# Tracking removed method calls to warn users during build time.
|
197
196
|
REMOVED_METHODS = [:rubyforge_project=].freeze # :nodoc:
|
@@ -225,7 +224,7 @@ class Gem::Specification < Gem::BasicSpecification
|
|
225
224
|
attr_reader :version
|
226
225
|
|
227
226
|
##
|
228
|
-
# A short summary of this gem's description. Displayed in
|
227
|
+
# A short summary of this gem's description. Displayed in <tt>gem list -d</tt>.
|
229
228
|
#
|
230
229
|
# The #description should be more detailed than the summary.
|
231
230
|
#
|
@@ -249,12 +248,11 @@ class Gem::Specification < Gem::BasicSpecification
|
|
249
248
|
# require 'rake'
|
250
249
|
# spec.files = FileList['lib/**/*.rb',
|
251
250
|
# 'bin/*',
|
252
|
-
# '[A-Z]*'
|
253
|
-
# 'test/**/*'].to_a
|
251
|
+
# '[A-Z]*'].to_a
|
254
252
|
#
|
255
253
|
# # or without Rake...
|
256
254
|
# spec.files = Dir['lib/**/*.rb'] + Dir['bin/*']
|
257
|
-
# spec.files += Dir['[A-Z]*']
|
255
|
+
# spec.files += Dir['[A-Z]*']
|
258
256
|
# spec.files.reject! { |fn| fn.include? "CVS" }
|
259
257
|
|
260
258
|
def files
|
@@ -272,7 +270,7 @@ class Gem::Specification < Gem::BasicSpecification
|
|
272
270
|
# A list of authors for this gem.
|
273
271
|
#
|
274
272
|
# Alternatively, a single author can be specified by assigning a string to
|
275
|
-
#
|
273
|
+
# +spec.author+
|
276
274
|
#
|
277
275
|
# Usage:
|
278
276
|
#
|
@@ -285,6 +283,15 @@ class Gem::Specification < Gem::BasicSpecification
|
|
285
283
|
######################################################################
|
286
284
|
# :section: Recommended gemspec attributes
|
287
285
|
|
286
|
+
##
|
287
|
+
# The version of Ruby required by this gem
|
288
|
+
#
|
289
|
+
# Usage:
|
290
|
+
#
|
291
|
+
# spec.required_ruby_version = '>= 2.7.0'
|
292
|
+
|
293
|
+
attr_reader :required_ruby_version
|
294
|
+
|
288
295
|
##
|
289
296
|
# A long description of this gem
|
290
297
|
#
|
@@ -328,17 +335,21 @@ class Gem::Specification < Gem::BasicSpecification
|
|
328
335
|
# This should just be the name of your license. The full text of the license
|
329
336
|
# should be inside of the gem (at the top level) when you build it.
|
330
337
|
#
|
331
|
-
# The simplest way
|
338
|
+
# The simplest way is to specify the standard SPDX ID
|
332
339
|
# https://spdx.org/licenses/ for the license.
|
333
|
-
# Ideally you should pick one that is OSI (Open Source Initiative)
|
340
|
+
# Ideally, you should pick one that is OSI (Open Source Initiative)
|
334
341
|
# http://opensource.org/licenses/alphabetical approved.
|
335
342
|
#
|
336
|
-
# The most commonly used OSI
|
343
|
+
# The most commonly used OSI-approved licenses are MIT and Apache-2.0.
|
337
344
|
# GitHub also provides a license picker at http://choosealicense.com/.
|
338
345
|
#
|
346
|
+
# You can also use a custom license file along with your gemspec and specify
|
347
|
+
# a LicenseRef-<idstring>, where idstring is the name of the file containing
|
348
|
+
# the license text.
|
349
|
+
#
|
339
350
|
# You should specify a license for your gem so that people know how they are
|
340
|
-
# permitted to use it
|
341
|
-
# specifying a license means all rights are reserved; others have no
|
351
|
+
# permitted to use it and any restrictions you're placing on it. Not
|
352
|
+
# specifying a license means all rights are reserved; others have no right
|
342
353
|
# to use the code for any purpose.
|
343
354
|
#
|
344
355
|
# You can set multiple licenses with #licenses=
|
@@ -390,6 +401,7 @@ class Gem::Specification < Gem::BasicSpecification
|
|
390
401
|
# "mailing_list_uri" => "https://groups.example.com/bestgemever",
|
391
402
|
# "source_code_uri" => "https://example.com/user/bestgemever",
|
392
403
|
# "wiki_uri" => "https://example.com/user/bestgemever/wiki"
|
404
|
+
# "funding_uri" => "https://example.com/donate"
|
393
405
|
# }
|
394
406
|
#
|
395
407
|
# These links will be used on your gem's page on rubygems.org and must pass
|
@@ -461,7 +473,7 @@ class Gem::Specification < Gem::BasicSpecification
|
|
461
473
|
# spec.platform = Gem::Platform.local
|
462
474
|
|
463
475
|
def platform=(platform)
|
464
|
-
if @original_platform.nil?
|
476
|
+
if @original_platform.nil? ||
|
465
477
|
@original_platform == Gem::Platform::RUBY
|
466
478
|
@original_platform = platform
|
467
479
|
end
|
@@ -477,12 +489,12 @@ class Gem::Specification < Gem::BasicSpecification
|
|
477
489
|
# legacy constants
|
478
490
|
when nil, Gem::Platform::RUBY then
|
479
491
|
@new_platform = Gem::Platform::RUBY
|
480
|
-
when
|
481
|
-
@new_platform = Gem::Platform.new
|
482
|
-
when
|
483
|
-
@new_platform = Gem::Platform.new
|
484
|
-
when
|
485
|
-
@new_platform = Gem::Platform.new
|
492
|
+
when "mswin32" then # was Gem::Platform::WIN32
|
493
|
+
@new_platform = Gem::Platform.new "x86-mswin32"
|
494
|
+
when "i586-linux" then # was Gem::Platform::LINUX_586
|
495
|
+
@new_platform = Gem::Platform.new "x86-linux"
|
496
|
+
when "powerpc-darwin" then # was Gem::Platform::DARWIN
|
497
|
+
@new_platform = Gem::Platform.new "ppc-darwin"
|
486
498
|
else
|
487
499
|
@new_platform = Gem::Platform.new platform
|
488
500
|
end
|
@@ -515,11 +527,6 @@ class Gem::Specification < Gem::BasicSpecification
|
|
515
527
|
@require_paths = Array(val)
|
516
528
|
end
|
517
529
|
|
518
|
-
##
|
519
|
-
# The version of Ruby required by this gem
|
520
|
-
|
521
|
-
attr_reader :required_ruby_version
|
522
|
-
|
523
530
|
##
|
524
531
|
# The RubyGems version required by this gem
|
525
532
|
|
@@ -560,6 +567,10 @@ class Gem::Specification < Gem::BasicSpecification
|
|
560
567
|
# spec.add_runtime_dependency 'example', '~> 1.1', '>= 1.1.4'
|
561
568
|
|
562
569
|
def add_runtime_dependency(gem, *requirements)
|
570
|
+
if requirements.uniq.size != requirements.size
|
571
|
+
warn "WARNING: duplicated #{gem} dependency #{requirements}"
|
572
|
+
end
|
573
|
+
|
563
574
|
add_dependency_with_type(gem, :runtime, requirements)
|
564
575
|
end
|
565
576
|
|
@@ -645,6 +656,8 @@ class Gem::Specification < Gem::BasicSpecification
|
|
645
656
|
@rdoc_options ||= []
|
646
657
|
end
|
647
658
|
|
659
|
+
LATEST_RUBY_WITHOUT_PATCH_VERSIONS = Gem::Version.new("2.1")
|
660
|
+
|
648
661
|
##
|
649
662
|
# The version of Ruby required by this gem. The ruby version can be
|
650
663
|
# specified to the patch-level:
|
@@ -665,9 +678,20 @@ class Gem::Specification < Gem::BasicSpecification
|
|
665
678
|
#
|
666
679
|
# # Only prereleases or final releases after 2.6.0.preview2
|
667
680
|
# spec.required_ruby_version = '> 2.6.0.preview2'
|
681
|
+
#
|
682
|
+
# # This gem will work with 2.3.0 or greater, including major version 3, but lesser than 4.0.0
|
683
|
+
# spec.required_ruby_version = '>= 2.3', '< 4'
|
668
684
|
|
669
685
|
def required_ruby_version=(req)
|
670
686
|
@required_ruby_version = Gem::Requirement.create req
|
687
|
+
|
688
|
+
@required_ruby_version.requirements.map! do |op, v|
|
689
|
+
if v >= LATEST_RUBY_WITHOUT_PATCH_VERSIONS && v.release.segments.size == 4
|
690
|
+
[op == "~>" ? "=" : op, Gem::Version.new(v.segments.tap {|s| s.delete_at(3) }.join("."))]
|
691
|
+
else
|
692
|
+
[op, v]
|
693
|
+
end
|
694
|
+
end
|
671
695
|
end
|
672
696
|
|
673
697
|
##
|
@@ -725,7 +749,7 @@ class Gem::Specification < Gem::BasicSpecification
|
|
725
749
|
# Deprecated: You must now specify the executable name to Gem.bin_path.
|
726
750
|
|
727
751
|
attr_writer :default_executable
|
728
|
-
|
752
|
+
rubygems_deprecate :default_executable=
|
729
753
|
|
730
754
|
##
|
731
755
|
# Allows deinstallation of gems with legacy platforms.
|
@@ -740,23 +764,15 @@ class Gem::Specification < Gem::BasicSpecification
|
|
740
764
|
attr_accessor :specification_version
|
741
765
|
|
742
766
|
def self._all # :nodoc:
|
743
|
-
|
744
|
-
@@all = stubs.map(&:to_spec)
|
745
|
-
|
746
|
-
# After a reset, make sure already loaded specs
|
747
|
-
# are still marked as activated.
|
748
|
-
specs = {}
|
749
|
-
Gem.loaded_specs.each_value{|s| specs[s] = true}
|
750
|
-
@@all.each{|s| s.activated = true if specs[s]}
|
751
|
-
end
|
752
|
-
@@all
|
767
|
+
@@all ||= Gem.loaded_specs.values | stubs.map(&:to_spec)
|
753
768
|
end
|
754
769
|
|
755
|
-
def self.
|
756
|
-
|
757
|
-
|
770
|
+
def self.clear_load_cache # :nodoc:
|
771
|
+
@load_cache_mutex.synchronize do
|
772
|
+
@load_cache.clear
|
758
773
|
end
|
759
774
|
end
|
775
|
+
private_class_method :clear_load_cache
|
760
776
|
|
761
777
|
def self.each_gemspec(dirs) # :nodoc:
|
762
778
|
dirs.each do |dir|
|
@@ -767,7 +783,7 @@ class Gem::Specification < Gem::BasicSpecification
|
|
767
783
|
end
|
768
784
|
|
769
785
|
def self.gemspec_stubs_in(dir, pattern)
|
770
|
-
Gem::Util.glob_files_in_dir(pattern, dir).map {
|
786
|
+
Gem::Util.glob_files_in_dir(pattern, dir).map {|path| yield path }.select(&:valid?)
|
771
787
|
end
|
772
788
|
private_class_method :gemspec_stubs_in
|
773
789
|
|
@@ -782,21 +798,11 @@ class Gem::Specification < Gem::BasicSpecification
|
|
782
798
|
dirs.flat_map do |dir|
|
783
799
|
base_dir = File.dirname dir
|
784
800
|
gems_dir = File.join base_dir, "gems"
|
785
|
-
gemspec_stubs_in(dir, pattern) {
|
801
|
+
gemspec_stubs_in(dir, pattern) {|path| yield path, base_dir, gems_dir }
|
786
802
|
end
|
787
803
|
end
|
788
804
|
private_class_method :map_stubs
|
789
805
|
|
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
806
|
def self.each_spec(dirs) # :nodoc:
|
801
807
|
each_gemspec(dirs) do |path|
|
802
808
|
spec = self.load path
|
@@ -810,11 +816,9 @@ class Gem::Specification < Gem::BasicSpecification
|
|
810
816
|
def self.stubs
|
811
817
|
@@stubs ||= begin
|
812
818
|
pattern = "*.gemspec"
|
813
|
-
stubs =
|
814
|
-
stubs = uniq_by(stubs) { |stub| stub.full_name }
|
819
|
+
stubs = stubs_for_pattern(pattern, false)
|
815
820
|
|
816
|
-
|
817
|
-
@@stubs_by_name = stubs.select { |s| Gem::Platform.match s.platform }.group_by(&:name)
|
821
|
+
@@stubs_by_name = stubs.select {|s| Gem::Platform.match_spec? s }.group_by(&:name)
|
818
822
|
stubs
|
819
823
|
end
|
820
824
|
end
|
@@ -830,8 +834,6 @@ class Gem::Specification < Gem::BasicSpecification
|
|
830
834
|
end
|
831
835
|
end
|
832
836
|
|
833
|
-
EMPTY = [].freeze # :nodoc:
|
834
|
-
|
835
837
|
##
|
836
838
|
# Returns a Gem::StubSpecification for installed gem named +name+
|
837
839
|
# only returns stubs that match Gem.platforms
|
@@ -840,23 +842,32 @@ class Gem::Specification < Gem::BasicSpecification
|
|
840
842
|
if @@stubs
|
841
843
|
@@stubs_by_name[name] || []
|
842
844
|
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
|
845
|
+
@@stubs_by_name[name] ||= stubs_for_pattern("#{name}-*.gemspec").select do |s|
|
846
|
+
s.name == name
|
847
|
+
end
|
852
848
|
end
|
853
849
|
end
|
854
850
|
|
851
|
+
##
|
852
|
+
# Finds stub specifications matching a pattern from the standard locations,
|
853
|
+
# optionally filtering out specs not matching the current platform
|
854
|
+
#
|
855
|
+
def self.stubs_for_pattern(pattern, match_platform = true) # :nodoc:
|
856
|
+
installed_stubs = installed_stubs(Gem::Specification.dirs, pattern)
|
857
|
+
installed_stubs.select! {|s| Gem::Platform.match_spec? s } if match_platform
|
858
|
+
stubs = installed_stubs + default_stubs(pattern)
|
859
|
+
stubs = stubs.uniq {|stub| stub.full_name }
|
860
|
+
_resort!(stubs)
|
861
|
+
stubs
|
862
|
+
end
|
863
|
+
|
855
864
|
def self._resort!(specs) # :nodoc:
|
856
865
|
specs.sort! do |a, b|
|
857
866
|
names = a.name <=> b.name
|
858
867
|
next names if names.nonzero?
|
859
|
-
b.version <=> a.version
|
868
|
+
versions = b.version <=> a.version
|
869
|
+
next versions if versions.nonzero?
|
870
|
+
Gem::Platform.sort_priority(b.platform)
|
860
871
|
end
|
861
872
|
end
|
862
873
|
|
@@ -871,6 +882,30 @@ class Gem::Specification < Gem::BasicSpecification
|
|
871
882
|
end
|
872
883
|
end
|
873
884
|
|
885
|
+
##
|
886
|
+
# Adds +spec+ to the known specifications, keeping the collection
|
887
|
+
# properly sorted.
|
888
|
+
|
889
|
+
def self.add_spec(spec)
|
890
|
+
return if _all.include? spec
|
891
|
+
|
892
|
+
_all << spec
|
893
|
+
stubs << spec
|
894
|
+
(@@stubs_by_name[spec.name] ||= []) << spec
|
895
|
+
|
896
|
+
_resort!(@@stubs_by_name[spec.name])
|
897
|
+
_resort!(stubs)
|
898
|
+
end
|
899
|
+
|
900
|
+
##
|
901
|
+
# Removes +spec+ from the known specs.
|
902
|
+
|
903
|
+
def self.remove_spec(spec)
|
904
|
+
_all.delete spec.to_spec
|
905
|
+
stubs.delete spec
|
906
|
+
(@@stubs_by_name[spec.name] || []).delete spec
|
907
|
+
end
|
908
|
+
|
874
909
|
##
|
875
910
|
# Returns all specifications. This method is discouraged from use.
|
876
911
|
# You probably want to use one of the Enumerable methods instead.
|
@@ -939,7 +974,7 @@ class Gem::Specification < Gem::BasicSpecification
|
|
939
974
|
def self.dirs=(dirs)
|
940
975
|
self.reset
|
941
976
|
|
942
|
-
@@dirs = Array(dirs).map {
|
977
|
+
@@dirs = Array(dirs).map {|dir| File.join dir, "specifications" }
|
943
978
|
end
|
944
979
|
|
945
980
|
extend Enumerable
|
@@ -992,7 +1027,6 @@ class Gem::Specification < Gem::BasicSpecification
|
|
992
1027
|
def self.find_by_path(path)
|
993
1028
|
path = path.dup.freeze
|
994
1029
|
spec = @@spec_with_requirable_file[path] ||= (stubs.find do |s|
|
995
|
-
next unless Gem::BundlerVersionFinder.compatible?(s)
|
996
1030
|
s.contains_requirable_file? path
|
997
1031
|
end || NOT_FOUND)
|
998
1032
|
spec.to_spec
|
@@ -1005,7 +1039,6 @@ class Gem::Specification < Gem::BasicSpecification
|
|
1005
1039
|
def self.find_inactive_by_path(path)
|
1006
1040
|
stub = stubs.find do |s|
|
1007
1041
|
next if s.activated?
|
1008
|
-
next unless Gem::BundlerVersionFinder.compatible?(s)
|
1009
1042
|
s.contains_requirable_file? path
|
1010
1043
|
end
|
1011
1044
|
stub && stub.to_spec
|
@@ -1013,7 +1046,7 @@ class Gem::Specification < Gem::BasicSpecification
|
|
1013
1046
|
|
1014
1047
|
def self.find_active_stub_by_path(path)
|
1015
1048
|
stub = @@active_stub_with_requirable_file[path] ||= (stubs.find do |s|
|
1016
|
-
s.activated?
|
1049
|
+
s.activated? && s.contains_requirable_file?(path)
|
1017
1050
|
end || NOT_FOUND)
|
1018
1051
|
stub.this
|
1019
1052
|
end
|
@@ -1022,10 +1055,7 @@ class Gem::Specification < Gem::BasicSpecification
|
|
1022
1055
|
# Return currently unresolved specs that contain the file matching +path+.
|
1023
1056
|
|
1024
1057
|
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 }
|
1058
|
+
unresolved_specs.find_all {|spec| spec.contains_requirable_file? path }
|
1029
1059
|
end
|
1030
1060
|
|
1031
1061
|
##
|
@@ -1033,9 +1063,7 @@ class Gem::Specification < Gem::BasicSpecification
|
|
1033
1063
|
# specs that contain the file matching +path+.
|
1034
1064
|
|
1035
1065
|
def self.find_in_unresolved_tree(path)
|
1036
|
-
|
1037
|
-
|
1038
|
-
specs.each do |spec|
|
1066
|
+
unresolved_specs.each do |spec|
|
1039
1067
|
spec.traverse do |from_spec, dep, to_spec, trail|
|
1040
1068
|
if to_spec.has_conflicts? || to_spec.conficts_when_loaded_with?(trail)
|
1041
1069
|
:next
|
@@ -1048,6 +1076,11 @@ class Gem::Specification < Gem::BasicSpecification
|
|
1048
1076
|
[]
|
1049
1077
|
end
|
1050
1078
|
|
1079
|
+
def self.unresolved_specs
|
1080
|
+
unresolved_deps.values.map {|dep| dep.to_specs }.flatten
|
1081
|
+
end
|
1082
|
+
private_class_method :unresolved_specs
|
1083
|
+
|
1051
1084
|
##
|
1052
1085
|
# Special loader for YAML files. When a Specification object is loaded
|
1053
1086
|
# from a YAML file, it bypasses the normal Ruby object initialization
|
@@ -1072,6 +1105,7 @@ class Gem::Specification < Gem::BasicSpecification
|
|
1072
1105
|
|
1073
1106
|
spec.specification_version ||= NONEXISTENT_SPECIFICATION_VERSION
|
1074
1107
|
spec.reset_nil_attributes_to_default
|
1108
|
+
spec.flatten_require_paths
|
1075
1109
|
|
1076
1110
|
spec
|
1077
1111
|
end
|
@@ -1081,24 +1115,26 @@ class Gem::Specification < Gem::BasicSpecification
|
|
1081
1115
|
# +prerelease+ is true.
|
1082
1116
|
|
1083
1117
|
def self.latest_specs(prerelease = false)
|
1084
|
-
_latest_specs Gem::Specification.
|
1118
|
+
_latest_specs Gem::Specification.stubs, prerelease
|
1119
|
+
end
|
1120
|
+
|
1121
|
+
##
|
1122
|
+
# Return the latest installed spec for gem +name+.
|
1123
|
+
|
1124
|
+
def self.latest_spec_for(name)
|
1125
|
+
latest_specs(true).find {|installed_spec| installed_spec.name == name }
|
1085
1126
|
end
|
1086
1127
|
|
1087
1128
|
def self._latest_specs(specs, prerelease = false) # :nodoc:
|
1088
|
-
result =
|
1089
|
-
native = {}
|
1129
|
+
result = {}
|
1090
1130
|
|
1091
1131
|
specs.reverse_each do |spec|
|
1092
1132
|
next if spec.version.prerelease? unless prerelease
|
1093
1133
|
|
1094
|
-
|
1095
|
-
result[spec.name][spec.platform] = spec
|
1134
|
+
result[spec.name] = spec
|
1096
1135
|
end
|
1097
1136
|
|
1098
|
-
result.map(&:last).
|
1099
|
-
minimum = native[spec.name]
|
1100
|
-
minimum && spec.version < minimum
|
1101
|
-
end.sort_by{ |tup| tup.name }
|
1137
|
+
result.map(&:last).flatten.sort_by {|tup| tup.name }
|
1102
1138
|
end
|
1103
1139
|
|
1104
1140
|
##
|
@@ -1107,13 +1143,13 @@ class Gem::Specification < Gem::BasicSpecification
|
|
1107
1143
|
def self.load(file)
|
1108
1144
|
return unless file
|
1109
1145
|
|
1110
|
-
_spec =
|
1146
|
+
_spec = @load_cache_mutex.synchronize { @load_cache[file] }
|
1111
1147
|
return _spec if _spec
|
1112
1148
|
|
1113
1149
|
file = file.dup.tap(&Gem::UNTAINT)
|
1114
1150
|
return unless File.file?(file)
|
1115
1151
|
|
1116
|
-
code =
|
1152
|
+
code = Gem.open_file(file, "r:UTF-8:-", &:read)
|
1117
1153
|
|
1118
1154
|
code.tap(&Gem::UNTAINT)
|
1119
1155
|
|
@@ -1122,12 +1158,12 @@ class Gem::Specification < Gem::BasicSpecification
|
|
1122
1158
|
|
1123
1159
|
if Gem::Specification === _spec
|
1124
1160
|
_spec.loaded_from = File.expand_path file.to_s
|
1125
|
-
|
1126
|
-
prev =
|
1161
|
+
@load_cache_mutex.synchronize do
|
1162
|
+
prev = @load_cache[file]
|
1127
1163
|
if prev
|
1128
1164
|
_spec = prev
|
1129
1165
|
else
|
1130
|
-
|
1166
|
+
@load_cache[file] = _spec
|
1131
1167
|
end
|
1132
1168
|
end
|
1133
1169
|
return _spec
|
@@ -1155,7 +1191,7 @@ class Gem::Specification < Gem::BasicSpecification
|
|
1155
1191
|
|
1156
1192
|
def self.normalize_yaml_input(input)
|
1157
1193
|
result = input.respond_to?(:read) ? input.read : input
|
1158
|
-
result = "--- " + result unless result
|
1194
|
+
result = "--- " + result unless result.start_with?("--- ")
|
1159
1195
|
result = result.dup
|
1160
1196
|
result.gsub!(/ !!null \n/, " \n")
|
1161
1197
|
# date: 2011-04-26 00:00:00.000000000Z
|
@@ -1172,7 +1208,7 @@ class Gem::Specification < Gem::BasicSpecification
|
|
1172
1208
|
# version as well.
|
1173
1209
|
|
1174
1210
|
def self.outdated
|
1175
|
-
outdated_and_latest_version.map {
|
1211
|
+
outdated_and_latest_version.map {|local, _| local.name }
|
1176
1212
|
end
|
1177
1213
|
|
1178
1214
|
##
|
@@ -1193,12 +1229,12 @@ class Gem::Specification < Gem::BasicSpecification
|
|
1193
1229
|
Gem::Dependency.new local_spec.name, ">= #{local_spec.version}"
|
1194
1230
|
|
1195
1231
|
remotes, = fetcher.search_for_dependency dependency
|
1196
|
-
remotes = remotes.map {
|
1232
|
+
remotes = remotes.map {|n, _| n.version }
|
1197
1233
|
|
1198
1234
|
latest_remote = remotes.sort.last
|
1199
1235
|
|
1200
1236
|
yield [local_spec, latest_remote] if
|
1201
|
-
latest_remote
|
1237
|
+
latest_remote && local_spec.version < latest_remote
|
1202
1238
|
end
|
1203
1239
|
|
1204
1240
|
nil
|
@@ -1224,13 +1260,9 @@ class Gem::Specification < Gem::BasicSpecification
|
|
1224
1260
|
|
1225
1261
|
def self.reset
|
1226
1262
|
@@dirs = nil
|
1227
|
-
Gem.pre_reset_hooks.each {
|
1228
|
-
|
1229
|
-
|
1230
|
-
@@stubs_by_name = {}
|
1231
|
-
@@spec_with_requirable_file = {}
|
1232
|
-
@@active_stub_with_requirable_file = {}
|
1233
|
-
_clear_load_cache
|
1263
|
+
Gem.pre_reset_hooks.each {|hook| hook.call }
|
1264
|
+
clear_specs
|
1265
|
+
clear_load_cache
|
1234
1266
|
unresolved = unresolved_deps
|
1235
1267
|
unless unresolved.empty?
|
1236
1268
|
w = "W" + "ARN"
|
@@ -1241,19 +1273,19 @@ class Gem::Specification < Gem::BasicSpecification
|
|
1241
1273
|
versions = find_all_by_name(dep.name)
|
1242
1274
|
unless versions.empty?
|
1243
1275
|
warn " Available/installed versions of this gem:"
|
1244
|
-
versions.each {
|
1276
|
+
versions.each {|s| warn " - #{s.version}" }
|
1245
1277
|
end
|
1246
1278
|
end
|
1247
1279
|
warn "#{w}: Clearing out unresolved specs. Try 'gem cleanup <gem>'"
|
1248
1280
|
warn "Please report a bug if this causes problems."
|
1249
1281
|
unresolved.clear
|
1250
1282
|
end
|
1251
|
-
Gem.post_reset_hooks.each {
|
1283
|
+
Gem.post_reset_hooks.each {|hook| hook.call }
|
1252
1284
|
end
|
1253
1285
|
|
1254
1286
|
# DOC: This method needs documented or nodoc'd
|
1255
1287
|
def self.unresolved_deps
|
1256
|
-
@unresolved_deps ||= Hash.new {
|
1288
|
+
@unresolved_deps ||= Hash.new {|h, n| h[n] = Gem::Dependency.new n }
|
1257
1289
|
end
|
1258
1290
|
|
1259
1291
|
##
|
@@ -1262,7 +1294,30 @@ class Gem::Specification < Gem::BasicSpecification
|
|
1262
1294
|
def self._load(str)
|
1263
1295
|
Gem.load_yaml
|
1264
1296
|
|
1265
|
-
array =
|
1297
|
+
array = begin
|
1298
|
+
Marshal.load str
|
1299
|
+
rescue ArgumentError => e
|
1300
|
+
#
|
1301
|
+
# Some very old marshaled specs included references to `YAML::PrivateType`
|
1302
|
+
# and `YAML::Syck::DefaultKey` constants due to bugs in the old emitter
|
1303
|
+
# that generated them. Workaround the issue by defining the necessary
|
1304
|
+
# constants and retrying.
|
1305
|
+
#
|
1306
|
+
message = e.message
|
1307
|
+
raise unless message.include?("YAML::")
|
1308
|
+
|
1309
|
+
Object.const_set "YAML", Psych unless Object.const_defined?(:YAML)
|
1310
|
+
|
1311
|
+
if message.include?("YAML::Syck::")
|
1312
|
+
YAML.const_set "Syck", YAML unless YAML.const_defined?(:Syck)
|
1313
|
+
|
1314
|
+
YAML::Syck.const_set "DefaultKey", Class.new if message.include?("YAML::Syck::DefaultKey")
|
1315
|
+
elsif message.include?("YAML::PrivateType")
|
1316
|
+
YAML.const_set "PrivateType", Class.new
|
1317
|
+
end
|
1318
|
+
|
1319
|
+
retry
|
1320
|
+
end
|
1266
1321
|
|
1267
1322
|
spec = Gem::Specification.new
|
1268
1323
|
spec.instance_variable_set :@specification_version, array[1]
|
@@ -1270,22 +1325,17 @@ class Gem::Specification < Gem::BasicSpecification
|
|
1270
1325
|
current_version = CURRENT_SPECIFICATION_VERSION
|
1271
1326
|
|
1272
1327
|
field_count = if spec.specification_version > current_version
|
1273
|
-
|
1274
|
-
|
1275
|
-
|
1276
|
-
|
1277
|
-
|
1278
|
-
|
1328
|
+
spec.instance_variable_set :@specification_version,
|
1329
|
+
current_version
|
1330
|
+
MARSHAL_FIELDS[current_version]
|
1331
|
+
else
|
1332
|
+
MARSHAL_FIELDS[spec.specification_version]
|
1333
|
+
end
|
1279
1334
|
|
1280
1335
|
if array.size < field_count
|
1281
1336
|
raise TypeError, "invalid Gem::Specification format #{array.inspect}"
|
1282
1337
|
end
|
1283
1338
|
|
1284
|
-
# Cleanup any YAML::PrivateType. They only show up for an old bug
|
1285
|
-
# where nil => null, so just convert them to nil based on the type.
|
1286
|
-
|
1287
|
-
array.map! { |e| e.kind_of?(YAML::PrivateType) ? nil : e }
|
1288
|
-
|
1289
1339
|
spec.instance_variable_set :@rubygems_version, array[0]
|
1290
1340
|
# spec version
|
1291
1341
|
spec.instance_variable_set :@name, array[2]
|
@@ -1341,7 +1391,7 @@ class Gem::Specification < Gem::BasicSpecification
|
|
1341
1391
|
@required_rubygems_version,
|
1342
1392
|
@original_platform,
|
1343
1393
|
@dependencies,
|
1344
|
-
|
1394
|
+
"", # rubyforge_project
|
1345
1395
|
@email,
|
1346
1396
|
@authors,
|
1347
1397
|
@description,
|
@@ -1349,7 +1399,7 @@ class Gem::Specification < Gem::BasicSpecification
|
|
1349
1399
|
true, # has_rdoc
|
1350
1400
|
@new_platform,
|
1351
1401
|
@licenses,
|
1352
|
-
@metadata
|
1402
|
+
@metadata,
|
1353
1403
|
]
|
1354
1404
|
end
|
1355
1405
|
|
@@ -1397,7 +1447,11 @@ class Gem::Specification < Gem::BasicSpecification
|
|
1397
1447
|
raise e
|
1398
1448
|
end
|
1399
1449
|
|
1400
|
-
|
1450
|
+
begin
|
1451
|
+
specs = spec_dep.to_specs
|
1452
|
+
rescue Gem::MissingSpecError => e
|
1453
|
+
raise Gem::MissingSpecError.new(e.name, e.requirement, "at: #{self.spec_file}")
|
1454
|
+
end
|
1401
1455
|
|
1402
1456
|
if specs.size == 1
|
1403
1457
|
specs.first.activate
|
@@ -1433,7 +1487,7 @@ class Gem::Specification < Gem::BasicSpecification
|
|
1433
1487
|
self.summary = sanitize_string(summary)
|
1434
1488
|
self.description = sanitize_string(description)
|
1435
1489
|
self.post_install_message = sanitize_string(post_install_message)
|
1436
|
-
self.authors = authors.collect {
|
1490
|
+
self.authors = authors.collect {|a| sanitize_string(a) }
|
1437
1491
|
end
|
1438
1492
|
|
1439
1493
|
##
|
@@ -1445,13 +1499,7 @@ class Gem::Specification < Gem::BasicSpecification
|
|
1445
1499
|
# HACK the #to_s is in here because RSpec has an Array of Arrays of
|
1446
1500
|
# Strings for authors. Need a way to disallow bad values on gemspec
|
1447
1501
|
# 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
|
1502
|
+
string.to_s
|
1455
1503
|
end
|
1456
1504
|
|
1457
1505
|
##
|
@@ -1462,7 +1510,7 @@ class Gem::Specification < Gem::BasicSpecification
|
|
1462
1510
|
return nil if executables.nil?
|
1463
1511
|
|
1464
1512
|
if @bindir
|
1465
|
-
Array(executables).map {
|
1513
|
+
Array(executables).map {|e| File.join(@bindir, e) }
|
1466
1514
|
else
|
1467
1515
|
executables
|
1468
1516
|
end
|
@@ -1477,10 +1525,10 @@ class Gem::Specification < Gem::BasicSpecification
|
|
1477
1525
|
|
1478
1526
|
def add_dependency_with_type(dependency, type, requirements)
|
1479
1527
|
requirements = if requirements.empty?
|
1480
|
-
|
1481
|
-
|
1482
|
-
|
1483
|
-
|
1528
|
+
Gem::Requirement.default
|
1529
|
+
else
|
1530
|
+
requirements.flatten
|
1531
|
+
end
|
1484
1532
|
|
1485
1533
|
unless dependency.respond_to?(:name) &&
|
1486
1534
|
dependency.respond_to?(:requirement)
|
@@ -1509,7 +1557,7 @@ class Gem::Specification < Gem::BasicSpecification
|
|
1509
1557
|
# Singular reader for #authors. Returns the first author in the list
|
1510
1558
|
|
1511
1559
|
def author
|
1512
|
-
val = authors
|
1560
|
+
(val = authors) && val.first
|
1513
1561
|
end
|
1514
1562
|
|
1515
1563
|
##
|
@@ -1544,7 +1592,7 @@ class Gem::Specification < Gem::BasicSpecification
|
|
1544
1592
|
def build_args
|
1545
1593
|
if File.exist? build_info_file
|
1546
1594
|
build_info = File.readlines build_info_file
|
1547
|
-
build_info = build_info.map {
|
1595
|
+
build_info = build_info.map {|x| x.strip }
|
1548
1596
|
build_info.delete ""
|
1549
1597
|
build_info
|
1550
1598
|
else
|
@@ -1557,12 +1605,11 @@ class Gem::Specification < Gem::BasicSpecification
|
|
1557
1605
|
# the gem.build_complete file is missing.
|
1558
1606
|
|
1559
1607
|
def build_extensions # :nodoc:
|
1560
|
-
return if default_gem?
|
1561
1608
|
return if extensions.empty?
|
1562
|
-
return if
|
1609
|
+
return if default_gem?
|
1563
1610
|
return if File.exist? gem_build_complete_path
|
1564
1611
|
return if !File.writable?(base_dir)
|
1565
|
-
return if !File.exist?(File.join(base_dir,
|
1612
|
+
return if !File.exist?(File.join(base_dir, "extensions"))
|
1566
1613
|
|
1567
1614
|
begin
|
1568
1615
|
# We need to require things in $LOAD_PATH without looking for the
|
@@ -1570,9 +1617,9 @@ class Gem::Specification < Gem::BasicSpecification
|
|
1570
1617
|
unresolved_deps = Gem::Specification.unresolved_deps.dup
|
1571
1618
|
Gem::Specification.unresolved_deps.clear
|
1572
1619
|
|
1573
|
-
|
1574
|
-
|
1575
|
-
|
1620
|
+
require_relative "config_file"
|
1621
|
+
require_relative "ext"
|
1622
|
+
require_relative "user_interaction"
|
1576
1623
|
|
1577
1624
|
ui = Gem::SilentUI.new
|
1578
1625
|
Gem::DefaultUserInteraction.use_ui ui do
|
@@ -1622,7 +1669,7 @@ class Gem::Specification < Gem::BasicSpecification
|
|
1622
1669
|
conflicts = {}
|
1623
1670
|
self.runtime_dependencies.each do |dep|
|
1624
1671
|
spec = Gem.loaded_specs[dep.name]
|
1625
|
-
if spec
|
1672
|
+
if spec && !spec.satisfies_requirement?(dep)
|
1626
1673
|
(conflicts[spec] ||= []) << dep
|
1627
1674
|
end
|
1628
1675
|
end
|
@@ -1636,7 +1683,7 @@ class Gem::Specification < Gem::BasicSpecification
|
|
1636
1683
|
|
1637
1684
|
def conficts_when_loaded_with?(list_of_specs) # :nodoc:
|
1638
1685
|
result = list_of_specs.any? do |spec|
|
1639
|
-
spec.dependencies.any? {
|
1686
|
+
spec.dependencies.any? {|dep| dep.runtime? && (dep.name == name) && !satisfies_requirement?(dep) }
|
1640
1687
|
end
|
1641
1688
|
result
|
1642
1689
|
end
|
@@ -1649,7 +1696,7 @@ class Gem::Specification < Gem::BasicSpecification
|
|
1649
1696
|
self.dependencies.any? do |dep|
|
1650
1697
|
if dep.runtime?
|
1651
1698
|
spec = Gem.loaded_specs[dep.name]
|
1652
|
-
spec
|
1699
|
+
spec && !spec.satisfies_requirement?(dep)
|
1653
1700
|
else
|
1654
1701
|
false
|
1655
1702
|
end
|
@@ -1670,7 +1717,7 @@ class Gem::Specification < Gem::BasicSpecification
|
|
1670
1717
|
|
1671
1718
|
DateLike = Object.new # :nodoc:
|
1672
1719
|
def DateLike.===(obj) # :nodoc:
|
1673
|
-
defined?(::Date)
|
1720
|
+
defined?(::Date) && Date === obj
|
1674
1721
|
end
|
1675
1722
|
|
1676
1723
|
DateTimeFormat = # :nodoc:
|
@@ -1689,24 +1736,18 @@ class Gem::Specification < Gem::BasicSpecification
|
|
1689
1736
|
# This is the cleanest, most-readable, faster-than-using-Date
|
1690
1737
|
# way to do it.
|
1691
1738
|
@date = case date
|
1692
|
-
|
1693
|
-
|
1694
|
-
|
1695
|
-
|
1696
|
-
|
1697
|
-
|
1698
|
-
|
1699
|
-
|
1700
|
-
|
1701
|
-
|
1702
|
-
|
1703
|
-
|
1704
|
-
end
|
1705
|
-
when Time, DateLike then
|
1706
|
-
Time.utc(date.year, date.month, date.day)
|
1707
|
-
else
|
1708
|
-
TODAY
|
1709
|
-
end
|
1739
|
+
when String then
|
1740
|
+
if DateTimeFormat =~ date
|
1741
|
+
Time.utc($1.to_i, $2.to_i, $3.to_i)
|
1742
|
+
else
|
1743
|
+
raise(Gem::InvalidSpecificationException,
|
1744
|
+
"invalid date format in specification: #{date.inspect}")
|
1745
|
+
end
|
1746
|
+
when Time, DateLike then
|
1747
|
+
Time.utc(date.year, date.month, date.day)
|
1748
|
+
else
|
1749
|
+
TODAY
|
1750
|
+
end
|
1710
1751
|
end
|
1711
1752
|
|
1712
1753
|
##
|
@@ -1716,16 +1757,16 @@ class Gem::Specification < Gem::BasicSpecification
|
|
1716
1757
|
# executable now. See Gem.bin_path.
|
1717
1758
|
|
1718
1759
|
def default_executable # :nodoc:
|
1719
|
-
if defined?(@default_executable)
|
1760
|
+
if defined?(@default_executable) && @default_executable
|
1720
1761
|
result = @default_executable
|
1721
|
-
elsif @executables
|
1762
|
+
elsif @executables && @executables.size == 1
|
1722
1763
|
result = Array(@executables).first
|
1723
1764
|
else
|
1724
1765
|
result = nil
|
1725
1766
|
end
|
1726
1767
|
result
|
1727
1768
|
end
|
1728
|
-
|
1769
|
+
rubygems_deprecate :default_executable
|
1729
1770
|
|
1730
1771
|
##
|
1731
1772
|
# The default value for specification attribute +name+
|
@@ -1750,10 +1791,11 @@ class Gem::Specification < Gem::BasicSpecification
|
|
1750
1791
|
#
|
1751
1792
|
# [depending_gem, dependency, [list_of_gems_that_satisfy_dependency]]
|
1752
1793
|
|
1753
|
-
def dependent_gems
|
1794
|
+
def dependent_gems(check_dev=true)
|
1754
1795
|
out = []
|
1755
1796
|
Gem::Specification.each do |spec|
|
1756
|
-
spec.dependencies
|
1797
|
+
deps = check_dev ? spec.dependencies : spec.runtime_dependencies
|
1798
|
+
deps.each do |dep|
|
1757
1799
|
if self.satisfies_requirement?(dep)
|
1758
1800
|
sats = []
|
1759
1801
|
find_all_satisfiers(dep) do |sat|
|
@@ -1770,7 +1812,7 @@ class Gem::Specification < Gem::BasicSpecification
|
|
1770
1812
|
# Returns all specs that matches this spec's runtime dependencies.
|
1771
1813
|
|
1772
1814
|
def dependent_specs
|
1773
|
-
runtime_dependencies.map {
|
1815
|
+
runtime_dependencies.map {|dep| dep.to_specs }.flatten
|
1774
1816
|
end
|
1775
1817
|
|
1776
1818
|
##
|
@@ -1784,7 +1826,7 @@ class Gem::Specification < Gem::BasicSpecification
|
|
1784
1826
|
# List of dependencies that are used for development
|
1785
1827
|
|
1786
1828
|
def development_dependencies
|
1787
|
-
dependencies.select {
|
1829
|
+
dependencies.select {|d| d.type == :development }
|
1788
1830
|
end
|
1789
1831
|
|
1790
1832
|
##
|
@@ -1796,7 +1838,7 @@ class Gem::Specification < Gem::BasicSpecification
|
|
1796
1838
|
# spec.doc_dir 'ri' # => "/path/to/gem_repo/doc/a-1/ri"
|
1797
1839
|
|
1798
1840
|
def doc_dir(type = nil)
|
1799
|
-
@doc_dir ||= File.join base_dir,
|
1841
|
+
@doc_dir ||= File.join base_dir, "doc", full_name
|
1800
1842
|
|
1801
1843
|
if type
|
1802
1844
|
File.join @doc_dir, type
|
@@ -1808,17 +1850,17 @@ class Gem::Specification < Gem::BasicSpecification
|
|
1808
1850
|
def encode_with(coder) # :nodoc:
|
1809
1851
|
mark_version
|
1810
1852
|
|
1811
|
-
coder.add
|
1812
|
-
coder.add
|
1853
|
+
coder.add "name", @name
|
1854
|
+
coder.add "version", @version
|
1813
1855
|
platform = case @original_platform
|
1814
|
-
|
1815
|
-
|
1816
|
-
|
1817
|
-
|
1818
|
-
|
1819
|
-
|
1820
|
-
|
1821
|
-
coder.add
|
1856
|
+
when nil, "" then
|
1857
|
+
"ruby"
|
1858
|
+
when String then
|
1859
|
+
@original_platform
|
1860
|
+
else
|
1861
|
+
@original_platform.to_s
|
1862
|
+
end
|
1863
|
+
coder.add "platform", platform
|
1822
1864
|
|
1823
1865
|
attributes = @@attributes.map(&:to_s) - %w[name version platform]
|
1824
1866
|
attributes.each do |name|
|
@@ -1834,7 +1876,7 @@ class Gem::Specification < Gem::BasicSpecification
|
|
1834
1876
|
# Singular accessor for #executables
|
1835
1877
|
|
1836
1878
|
def executable
|
1837
|
-
val = executables
|
1879
|
+
(val = executables) && val.first
|
1838
1880
|
end
|
1839
1881
|
|
1840
1882
|
##
|
@@ -1845,29 +1887,23 @@ class Gem::Specification < Gem::BasicSpecification
|
|
1845
1887
|
end
|
1846
1888
|
|
1847
1889
|
##
|
1848
|
-
# Sets executables to +value+, ensuring it is an array.
|
1849
|
-
# use this, push onto the array instead.
|
1890
|
+
# Sets executables to +value+, ensuring it is an array.
|
1850
1891
|
|
1851
1892
|
def executables=(value)
|
1852
|
-
# TODO: warn about setting instead of pushing
|
1853
1893
|
@executables = Array(value)
|
1854
1894
|
end
|
1855
1895
|
|
1856
1896
|
##
|
1857
|
-
# Sets extensions to +extensions+, ensuring it is an array.
|
1858
|
-
# use this, push onto the array instead.
|
1897
|
+
# Sets extensions to +extensions+, ensuring it is an array.
|
1859
1898
|
|
1860
1899
|
def extensions=(extensions)
|
1861
|
-
# TODO: warn about setting instead of pushing
|
1862
1900
|
@extensions = Array extensions
|
1863
1901
|
end
|
1864
1902
|
|
1865
1903
|
##
|
1866
|
-
# Sets extra_rdoc_files to +files+, ensuring it is an array.
|
1867
|
-
# use this, push onto the array instead.
|
1904
|
+
# Sets extra_rdoc_files to +files+, ensuring it is an array.
|
1868
1905
|
|
1869
1906
|
def extra_rdoc_files=(files)
|
1870
|
-
# TODO: warn about setting instead of pushing
|
1871
1907
|
@extra_rdoc_files = Array files
|
1872
1908
|
end
|
1873
1909
|
|
@@ -1933,7 +1969,7 @@ class Gem::Specification < Gem::BasicSpecification
|
|
1933
1969
|
def has_rdoc # :nodoc:
|
1934
1970
|
true
|
1935
1971
|
end
|
1936
|
-
|
1972
|
+
rubygems_deprecate :has_rdoc
|
1937
1973
|
|
1938
1974
|
##
|
1939
1975
|
# Deprecated and ignored.
|
@@ -1943,16 +1979,16 @@ class Gem::Specification < Gem::BasicSpecification
|
|
1943
1979
|
def has_rdoc=(ignored) # :nodoc:
|
1944
1980
|
@has_rdoc = true
|
1945
1981
|
end
|
1946
|
-
|
1982
|
+
rubygems_deprecate :has_rdoc=
|
1947
1983
|
|
1948
1984
|
alias :has_rdoc? :has_rdoc # :nodoc:
|
1949
|
-
|
1985
|
+
rubygems_deprecate :has_rdoc?
|
1950
1986
|
|
1951
1987
|
##
|
1952
1988
|
# True if this gem has files in test_files
|
1953
1989
|
|
1954
1990
|
def has_unit_tests? # :nodoc:
|
1955
|
-
|
1991
|
+
!test_files.empty?
|
1956
1992
|
end
|
1957
1993
|
|
1958
1994
|
# :stopdoc:
|
@@ -1968,7 +2004,9 @@ class Gem::Specification < Gem::BasicSpecification
|
|
1968
2004
|
yaml_initialize coder.tag, coder.map
|
1969
2005
|
end
|
1970
2006
|
|
1971
|
-
eval <<-
|
2007
|
+
eval <<-RUBY, binding, __FILE__, __LINE__ + 1
|
2008
|
+
# frozen_string_literal: true
|
2009
|
+
|
1972
2010
|
def set_nil_attributes_to_nil
|
1973
2011
|
#{@@nil_attributes.map {|key| "@#{key} = nil" }.join "; "}
|
1974
2012
|
end
|
@@ -1978,7 +2016,7 @@ class Gem::Specification < Gem::BasicSpecification
|
|
1978
2016
|
#{@@non_nil_attributes.map {|key| "@#{key} = #{INITIALIZE_CODE_FOR_DEFAULTS[key]}" }.join ";"}
|
1979
2017
|
end
|
1980
2018
|
private :set_not_nil_attributes_to_default_values
|
1981
|
-
|
2019
|
+
RUBY
|
1982
2020
|
|
1983
2021
|
##
|
1984
2022
|
# Specification constructor. Assigns the default values to the attributes
|
@@ -2003,6 +2041,10 @@ class Gem::Specification < Gem::BasicSpecification
|
|
2003
2041
|
self.name = name if name
|
2004
2042
|
self.version = version if version
|
2005
2043
|
|
2044
|
+
if (platform = Gem.platforms.last) && platform != Gem::Platform::RUBY && platform != Gem::Platform.local
|
2045
|
+
self.platform = platform
|
2046
|
+
end
|
2047
|
+
|
2006
2048
|
yield self if block_given?
|
2007
2049
|
end
|
2008
2050
|
|
@@ -2034,10 +2076,10 @@ class Gem::Specification < Gem::BasicSpecification
|
|
2034
2076
|
def base_dir
|
2035
2077
|
return Gem.dir unless loaded_from
|
2036
2078
|
@base_dir ||= if default_gem?
|
2037
|
-
|
2038
|
-
|
2039
|
-
|
2040
|
-
|
2079
|
+
File.dirname File.dirname File.dirname loaded_from
|
2080
|
+
else
|
2081
|
+
File.dirname File.dirname loaded_from
|
2082
|
+
end
|
2041
2083
|
end
|
2042
2084
|
|
2043
2085
|
##
|
@@ -2114,8 +2156,8 @@ class Gem::Specification < Gem::BasicSpecification
|
|
2114
2156
|
return
|
2115
2157
|
end
|
2116
2158
|
|
2117
|
-
if @specification_version > CURRENT_SPECIFICATION_VERSION
|
2118
|
-
|
2159
|
+
if @specification_version > CURRENT_SPECIFICATION_VERSION &&
|
2160
|
+
sym.to_s.end_with?("=")
|
2119
2161
|
warn "ignoring #{sym} loading #{full_name}" if $DEBUG
|
2120
2162
|
else
|
2121
2163
|
super
|
@@ -2127,9 +2169,8 @@ class Gem::Specification < Gem::BasicSpecification
|
|
2127
2169
|
# probably want to build_extensions
|
2128
2170
|
|
2129
2171
|
def missing_extensions?
|
2130
|
-
return false if default_gem?
|
2131
2172
|
return false if extensions.empty?
|
2132
|
-
return false if
|
2173
|
+
return false if default_gem?
|
2133
2174
|
return false if File.exist? gem_build_complete_path
|
2134
2175
|
|
2135
2176
|
true
|
@@ -2142,7 +2183,7 @@ class Gem::Specification < Gem::BasicSpecification
|
|
2142
2183
|
# file list.
|
2143
2184
|
|
2144
2185
|
def normalize
|
2145
|
-
if defined?(@extra_rdoc_files)
|
2186
|
+
if defined?(@extra_rdoc_files) && @extra_rdoc_files
|
2146
2187
|
@extra_rdoc_files.uniq!
|
2147
2188
|
@files ||= []
|
2148
2189
|
@files.concat(@extra_rdoc_files)
|
@@ -2167,7 +2208,7 @@ class Gem::Specification < Gem::BasicSpecification
|
|
2167
2208
|
# platform. For use with legacy gems.
|
2168
2209
|
|
2169
2210
|
def original_name # :nodoc:
|
2170
|
-
if platform == Gem::Platform::RUBY
|
2211
|
+
if platform == Gem::Platform::RUBY || platform.nil?
|
2171
2212
|
"#{@name}-#{@version}"
|
2172
2213
|
else
|
2173
2214
|
"#{@name}-#{@version}-#{@original_platform}"
|
@@ -2189,7 +2230,7 @@ class Gem::Specification < Gem::BasicSpecification
|
|
2189
2230
|
end
|
2190
2231
|
|
2191
2232
|
def pretty_print(q) # :nodoc:
|
2192
|
-
q.group 2,
|
2233
|
+
q.group 2, "Gem::Specification.new do |s|", "end" do
|
2193
2234
|
q.breakable
|
2194
2235
|
|
2195
2236
|
attributes = @@attributes - [:name, :version]
|
@@ -2199,9 +2240,9 @@ class Gem::Specification < Gem::BasicSpecification
|
|
2199
2240
|
|
2200
2241
|
attributes.each do |attr_name|
|
2201
2242
|
current_value = self.send attr_name
|
2202
|
-
current_value = current_value.sort if %i
|
2203
|
-
if current_value != default_value(attr_name)
|
2204
|
-
self.class.required_attribute?
|
2243
|
+
current_value = current_value.sort if %i[files test_files].include? attr_name
|
2244
|
+
if current_value != default_value(attr_name) ||
|
2245
|
+
self.class.required_attribute?(attr_name)
|
2205
2246
|
|
2206
2247
|
q.text "s.#{attr_name} = "
|
2207
2248
|
|
@@ -2249,11 +2290,9 @@ class Gem::Specification < Gem::BasicSpecification
|
|
2249
2290
|
end
|
2250
2291
|
|
2251
2292
|
##
|
2252
|
-
# Sets rdoc_options to +value+, ensuring it is an array.
|
2253
|
-
# use this, push onto the array instead.
|
2293
|
+
# Sets rdoc_options to +value+, ensuring it is an array.
|
2254
2294
|
|
2255
2295
|
def rdoc_options=(options)
|
2256
|
-
# TODO: warn about setting instead of pushing
|
2257
2296
|
@rdoc_options = Array options
|
2258
2297
|
end
|
2259
2298
|
|
@@ -2261,7 +2300,7 @@ class Gem::Specification < Gem::BasicSpecification
|
|
2261
2300
|
# Singular accessor for #require_paths
|
2262
2301
|
|
2263
2302
|
def require_path
|
2264
|
-
val = require_paths
|
2303
|
+
(val = require_paths) && val.first
|
2265
2304
|
end
|
2266
2305
|
|
2267
2306
|
##
|
@@ -2272,11 +2311,9 @@ class Gem::Specification < Gem::BasicSpecification
|
|
2272
2311
|
end
|
2273
2312
|
|
2274
2313
|
##
|
2275
|
-
# Set requirements to +req+, ensuring it is an array.
|
2276
|
-
# use this, push onto the array instead.
|
2314
|
+
# Set requirements to +req+, ensuring it is an array.
|
2277
2315
|
|
2278
2316
|
def requirements=(req)
|
2279
|
-
# TODO: warn about setting instead of pushing
|
2280
2317
|
@requirements = Array req
|
2281
2318
|
end
|
2282
2319
|
|
@@ -2288,7 +2325,7 @@ class Gem::Specification < Gem::BasicSpecification
|
|
2288
2325
|
# Returns the full path to this spec's ri directory.
|
2289
2326
|
|
2290
2327
|
def ri_dir
|
2291
|
-
@ri_dir ||= File.join base_dir,
|
2328
|
+
@ri_dir ||= File.join base_dir, "ri", full_name
|
2292
2329
|
end
|
2293
2330
|
|
2294
2331
|
##
|
@@ -2298,13 +2335,13 @@ class Gem::Specification < Gem::BasicSpecification
|
|
2298
2335
|
def ruby_code(obj)
|
2299
2336
|
case obj
|
2300
2337
|
when String then obj.dump + ".freeze"
|
2301
|
-
when Array then
|
2338
|
+
when Array then "[" + obj.map {|x| ruby_code x }.join(", ") + "]"
|
2302
2339
|
when Hash then
|
2303
|
-
seg = obj.keys.sort.map {
|
2340
|
+
seg = obj.keys.sort.map {|k| "#{k.to_s.dump} => #{obj[k].to_s.dump}" }
|
2304
2341
|
"{ #{seg.join(', ')} }"
|
2305
2342
|
when Gem::Version then obj.to_s.dump
|
2306
|
-
when DateLike then obj.strftime(
|
2307
|
-
when Time then obj.strftime(
|
2343
|
+
when DateLike then obj.strftime("%Y-%m-%d").dump
|
2344
|
+
when Time then obj.strftime("%Y-%m-%d").dump
|
2308
2345
|
when Numeric then obj.inspect
|
2309
2346
|
when true, false, nil then obj.inspect
|
2310
2347
|
when Gem::Platform then "Gem::Platform.new(#{obj.to_a.inspect})"
|
@@ -2328,7 +2365,7 @@ class Gem::Specification < Gem::BasicSpecification
|
|
2328
2365
|
# True if this gem has the same attributes as +other+.
|
2329
2366
|
|
2330
2367
|
def same_attributes?(spec)
|
2331
|
-
@@attributes.all? {
|
2368
|
+
@@attributes.all? {|name, default| self.send(name) == spec.send(name) }
|
2332
2369
|
end
|
2333
2370
|
|
2334
2371
|
private :same_attributes?
|
@@ -2338,14 +2375,14 @@ class Gem::Specification < Gem::BasicSpecification
|
|
2338
2375
|
|
2339
2376
|
def satisfies_requirement?(dependency)
|
2340
2377
|
return @name == dependency.name &&
|
2341
|
-
|
2378
|
+
dependency.requirement.satisfied_by?(@version)
|
2342
2379
|
end
|
2343
2380
|
|
2344
2381
|
##
|
2345
2382
|
# Returns an object you can use to sort specifications in #sort_by.
|
2346
2383
|
|
2347
2384
|
def sort_obj
|
2348
|
-
[@name, @version,
|
2385
|
+
[@name, @version, Gem::Platform.sort_priority(@new_platform)]
|
2349
2386
|
end
|
2350
2387
|
|
2351
2388
|
##
|
@@ -2392,7 +2429,7 @@ class Gem::Specification < Gem::BasicSpecification
|
|
2392
2429
|
# Singular accessor for #test_files
|
2393
2430
|
|
2394
2431
|
def test_file # :nodoc:
|
2395
|
-
val = test_files
|
2432
|
+
(val = test_files) && val.first
|
2396
2433
|
end
|
2397
2434
|
|
2398
2435
|
##
|
@@ -2414,7 +2451,7 @@ class Gem::Specification < Gem::BasicSpecification
|
|
2414
2451
|
@test_files = [@test_suite_file].flatten
|
2415
2452
|
@test_suite_file = nil
|
2416
2453
|
end
|
2417
|
-
if defined?(@test_files)
|
2454
|
+
if defined?(@test_files) && @test_files
|
2418
2455
|
@test_files
|
2419
2456
|
else
|
2420
2457
|
@test_files = []
|
@@ -2427,7 +2464,6 @@ class Gem::Specification < Gem::BasicSpecification
|
|
2427
2464
|
# still have their default values are omitted.
|
2428
2465
|
|
2429
2466
|
def to_ruby
|
2430
|
-
require 'openssl'
|
2431
2467
|
mark_version
|
2432
2468
|
result = []
|
2433
2469
|
result << "# -*- encoding: utf-8 -*-"
|
@@ -2439,13 +2475,13 @@ class Gem::Specification < Gem::BasicSpecification
|
|
2439
2475
|
|
2440
2476
|
result << " s.name = #{ruby_code name}"
|
2441
2477
|
result << " s.version = #{ruby_code version}"
|
2442
|
-
unless platform.nil?
|
2478
|
+
unless platform.nil? || platform == Gem::Platform::RUBY
|
2443
2479
|
result << " s.platform = #{ruby_code original_platform}"
|
2444
2480
|
end
|
2445
2481
|
result << ""
|
2446
2482
|
result << " s.required_rubygems_version = #{ruby_code required_rubygems_version} if s.respond_to? :required_rubygems_version="
|
2447
2483
|
|
2448
|
-
if metadata
|
2484
|
+
if metadata && !metadata.empty?
|
2449
2485
|
result << " s.metadata = #{ruby_code metadata} if s.respond_to? :metadata="
|
2450
2486
|
end
|
2451
2487
|
result << " s.require_paths = #{ruby_code raw_require_paths}"
|
@@ -2460,17 +2496,22 @@ class Gem::Specification < Gem::BasicSpecification
|
|
2460
2496
|
:version,
|
2461
2497
|
:has_rdoc,
|
2462
2498
|
:default_executable,
|
2463
|
-
:metadata
|
2499
|
+
:metadata,
|
2500
|
+
:signing_key,
|
2464
2501
|
]
|
2465
2502
|
|
2466
2503
|
@@attributes.each do |attr_name|
|
2467
2504
|
next if handled.include? attr_name
|
2468
2505
|
current_value = self.send(attr_name)
|
2469
2506
|
if current_value != default_value(attr_name) || self.class.required_attribute?(attr_name)
|
2470
|
-
result << " s.#{attr_name} = #{ruby_code current_value}"
|
2507
|
+
result << " s.#{attr_name} = #{ruby_code current_value}"
|
2471
2508
|
end
|
2472
2509
|
end
|
2473
2510
|
|
2511
|
+
if String === signing_key
|
2512
|
+
result << " s.signing_key = #{signing_key.dump}.freeze"
|
2513
|
+
end
|
2514
|
+
|
2474
2515
|
if @installed_by_version
|
2475
2516
|
result << nil
|
2476
2517
|
result << " s.installed_by_version = \"#{Gem::VERSION}\" if s.respond_to? :installed_by_version"
|
@@ -2533,14 +2574,14 @@ class Gem::Specification < Gem::BasicSpecification
|
|
2533
2574
|
# back, we have to check again here to make sure that our
|
2534
2575
|
# psych code was properly loaded, and load it if not.
|
2535
2576
|
unless Gem.const_defined?(:NoAliasYAMLTree)
|
2536
|
-
|
2577
|
+
require_relative "psych_tree"
|
2537
2578
|
end
|
2538
2579
|
|
2539
2580
|
builder = Gem::NoAliasYAMLTree.create
|
2540
2581
|
builder << self
|
2541
2582
|
ast = builder.tree
|
2542
2583
|
|
2543
|
-
require
|
2584
|
+
require "stringio"
|
2544
2585
|
io = StringIO.new
|
2545
2586
|
io.set_encoding Encoding::UTF_8
|
2546
2587
|
|
@@ -2558,7 +2599,7 @@ class Gem::Specification < Gem::BasicSpecification
|
|
2558
2599
|
begin
|
2559
2600
|
dependencies.each do |dep|
|
2560
2601
|
next unless dep.runtime?
|
2561
|
-
dep.
|
2602
|
+
dep.matching_specs(true).each do |dep_spec|
|
2562
2603
|
next if visited.has_key?(dep_spec)
|
2563
2604
|
visited[dep_spec] = true
|
2564
2605
|
trail.push(dep_spec)
|
@@ -2570,7 +2611,7 @@ class Gem::Specification < Gem::BasicSpecification
|
|
2570
2611
|
unless result == :next
|
2571
2612
|
spec_name = dep_spec.name
|
2572
2613
|
dep_spec.traverse(trail, visited, &block) unless
|
2573
|
-
trail.any? {
|
2614
|
+
trail.any? {|s| s.name == spec_name }
|
2574
2615
|
end
|
2575
2616
|
end
|
2576
2617
|
end
|
@@ -2595,30 +2636,27 @@ class Gem::Specification < Gem::BasicSpecification
|
|
2595
2636
|
end
|
2596
2637
|
|
2597
2638
|
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 {
|
2639
|
+
@executables.delete_if {|x| File.directory?(File.join(@bindir, x)) }
|
2640
|
+
@extensions.delete_if {|x| File.directory?(x) && !File.symlink?(x) }
|
2641
|
+
@extra_rdoc_files.delete_if {|x| File.directory?(x) && !File.symlink?(x) }
|
2642
|
+
@files.delete_if {|x| File.directory?(x) && !File.symlink?(x) }
|
2643
|
+
@test_files.delete_if {|x| File.directory?(x) && !File.symlink?(x) }
|
2603
2644
|
end
|
2604
2645
|
|
2605
2646
|
def validate_metadata
|
2606
2647
|
Gem::SpecificationPolicy.new(self).validate_metadata
|
2607
2648
|
end
|
2649
|
+
rubygems_deprecate :validate_metadata
|
2608
2650
|
|
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
2651
|
def validate_dependencies
|
2614
2652
|
Gem::SpecificationPolicy.new(self).validate_dependencies
|
2615
2653
|
end
|
2654
|
+
rubygems_deprecate :validate_dependencies
|
2616
2655
|
|
2617
|
-
##
|
2618
|
-
# Checks to see if the files to be packaged are world-readable.
|
2619
2656
|
def validate_permissions
|
2620
2657
|
Gem::SpecificationPolicy.new(self).validate_permissions
|
2621
2658
|
end
|
2659
|
+
rubygems_deprecate :validate_permissions
|
2622
2660
|
|
2623
2661
|
##
|
2624
2662
|
# Set the version to +version+, potentially also setting
|
@@ -2627,10 +2665,12 @@ class Gem::Specification < Gem::BasicSpecification
|
|
2627
2665
|
|
2628
2666
|
def version=(version)
|
2629
2667
|
@version = Gem::Version.create(version)
|
2668
|
+
return if @version.nil?
|
2669
|
+
|
2630
2670
|
# skip to set required_ruby_version when pre-released rubygems.
|
2631
2671
|
# It caused to raise CircularDependencyError
|
2632
2672
|
if @version.prerelease? && (@name.nil? || @name.strip != "rubygems")
|
2633
|
-
self.required_rubygems_version =
|
2673
|
+
self.required_rubygems_version = "> 1.3.1"
|
2634
2674
|
end
|
2635
2675
|
invalidate_memoized_attributes
|
2636
2676
|
|
@@ -2668,9 +2708,9 @@ class Gem::Specification < Gem::BasicSpecification
|
|
2668
2708
|
default = self.default_value attribute
|
2669
2709
|
|
2670
2710
|
value = case default
|
2671
|
-
|
2672
|
-
|
2673
|
-
|
2711
|
+
when Time, Numeric, Symbol, true, false, nil then default
|
2712
|
+
else default.dup
|
2713
|
+
end
|
2674
2714
|
|
2675
2715
|
instance_variable_set "@#{attribute}", value
|
2676
2716
|
end
|
@@ -2678,11 +2718,14 @@ class Gem::Specification < Gem::BasicSpecification
|
|
2678
2718
|
@installed_by_version ||= nil
|
2679
2719
|
end
|
2680
2720
|
|
2721
|
+
def flatten_require_paths # :nodoc:
|
2722
|
+
return unless raw_require_paths.first.is_a?(Array)
|
2723
|
+
|
2724
|
+
warn "#{name} #{version} includes a gemspec with `require_paths` set to an array of arrays. Newer versions of this gem might've already fixed this"
|
2725
|
+
raw_require_paths.flatten!
|
2726
|
+
end
|
2727
|
+
|
2681
2728
|
def raw_require_paths # :nodoc:
|
2682
2729
|
@require_paths
|
2683
2730
|
end
|
2684
|
-
|
2685
2731
|
end
|
2686
|
-
|
2687
|
-
# DOC: What is this and why is it here, randomly, at the end of this file?
|
2688
|
-
Gem.clear_paths
|