rubygems-update 3.0.3 → 3.4.7
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/CHANGELOG.md +5556 -0
- data/CODE_OF_CONDUCT.md +62 -24
- data/CONTRIBUTING.md +111 -21
- data/MAINTAINERS.txt +1 -6
- data/Manifest.txt +209 -101
- data/POLICIES.md +65 -22
- data/README.md +23 -15
- data/UPGRADING.md +5 -81
- data/bin/gem +2 -16
- data/bin/update_rubygems +5 -5
- data/bundler/CHANGELOG.md +2619 -1256
- data/bundler/LICENSE.md +18 -19
- data/bundler/README.md +11 -12
- data/bundler/UPGRADING.md +222 -0
- data/bundler/bundler.gemspec +13 -33
- data/bundler/exe/bundle +26 -11
- data/bundler/exe/bundler +1 -1
- data/bundler/lib/bundler/.document +1 -0
- data/bundler/lib/bundler/build_metadata.rb +5 -13
- data/bundler/lib/bundler/capistrano.rb +4 -4
- data/bundler/lib/bundler/cli/add.rb +28 -16
- data/bundler/lib/bundler/cli/binstubs.rb +11 -3
- data/bundler/lib/bundler/cli/cache.rb +24 -17
- data/bundler/lib/bundler/cli/check.rb +5 -3
- data/bundler/lib/bundler/cli/clean.rb +1 -1
- data/bundler/lib/bundler/cli/common.rb +41 -13
- data/bundler/lib/bundler/cli/config.rb +170 -86
- data/bundler/lib/bundler/cli/console.rb +3 -3
- data/bundler/lib/bundler/cli/doctor.rb +27 -10
- data/bundler/lib/bundler/cli/exec.rb +8 -25
- data/bundler/lib/bundler/cli/fund.rb +36 -0
- data/bundler/lib/bundler/cli/gem.rb +261 -48
- data/bundler/lib/bundler/cli/info.rb +52 -8
- data/bundler/lib/bundler/cli/init.rb +7 -3
- data/bundler/lib/bundler/cli/inject.rb +1 -1
- data/bundler/lib/bundler/cli/install.rb +38 -66
- data/bundler/lib/bundler/cli/issue.rb +8 -7
- data/bundler/lib/bundler/cli/list.rb +19 -11
- data/bundler/lib/bundler/cli/lock.rb +11 -4
- data/bundler/lib/bundler/cli/open.rb +14 -9
- data/bundler/lib/bundler/cli/outdated.rb +152 -121
- data/bundler/lib/bundler/cli/platform.rb +2 -2
- data/bundler/lib/bundler/cli/plugin.rb +19 -2
- data/bundler/lib/bundler/cli/pristine.rb +6 -1
- data/bundler/lib/bundler/cli/remove.rb +1 -2
- data/bundler/lib/bundler/cli/show.rb +3 -3
- data/bundler/lib/bundler/cli/update.rb +49 -18
- data/bundler/lib/bundler/cli/viz.rb +1 -1
- data/bundler/lib/bundler/cli.rb +269 -165
- data/bundler/lib/bundler/compact_index_client/cache.rb +7 -24
- data/bundler/lib/bundler/compact_index_client/gem_parser.rb +28 -0
- data/bundler/lib/bundler/compact_index_client/updater.rb +58 -57
- data/bundler/lib/bundler/compact_index_client.rb +28 -18
- data/bundler/lib/bundler/constants.rb +1 -1
- data/bundler/lib/bundler/current_ruby.rb +26 -11
- data/bundler/lib/bundler/definition.rb +359 -441
- data/bundler/lib/bundler/dependency.rb +29 -71
- data/bundler/lib/bundler/deployment.rb +1 -1
- data/bundler/lib/bundler/digest.rb +71 -0
- data/bundler/lib/bundler/dsl.rb +84 -116
- data/bundler/lib/bundler/endpoint_specification.rb +20 -14
- data/bundler/lib/bundler/env.rb +10 -15
- data/bundler/lib/bundler/environment_preserver.rb +30 -3
- data/bundler/lib/bundler/errors.rb +31 -14
- data/bundler/lib/bundler/feature_flag.rb +13 -33
- data/bundler/lib/bundler/fetcher/base.rb +7 -9
- data/bundler/lib/bundler/fetcher/compact_index.rb +46 -39
- data/bundler/lib/bundler/fetcher/dependency.rb +2 -2
- data/bundler/lib/bundler/fetcher/downloader.rb +15 -12
- data/bundler/lib/bundler/fetcher/index.rb +4 -30
- data/bundler/lib/bundler/fetcher.rb +39 -41
- data/bundler/lib/bundler/force_platform.rb +18 -0
- data/bundler/lib/bundler/friendly_errors.rb +49 -54
- data/bundler/lib/bundler/gem_helper.rb +79 -43
- data/bundler/lib/bundler/gem_helpers.rb +44 -28
- data/bundler/lib/bundler/gem_tasks.rb +1 -1
- data/bundler/lib/bundler/gem_version_promoter.rb +54 -99
- data/bundler/lib/bundler/graph.rb +5 -5
- data/bundler/lib/bundler/index.rb +14 -52
- data/bundler/lib/bundler/injector.rb +50 -16
- data/bundler/lib/bundler/inline.rb +28 -29
- data/bundler/lib/bundler/installer/gem_installer.rb +22 -23
- data/bundler/lib/bundler/installer/parallel_installer.rb +51 -51
- data/bundler/lib/bundler/installer/standalone.rb +62 -12
- data/bundler/lib/bundler/installer.rb +46 -97
- data/bundler/lib/bundler/lazy_specification.rb +88 -48
- data/bundler/lib/bundler/lockfile_generator.rb +3 -3
- data/bundler/lib/bundler/lockfile_parser.rb +30 -62
- data/bundler/{man → lib/bundler/man}/bundle-add.1 +29 -5
- data/bundler/{man/bundle-add.ronn → lib/bundler/man/bundle-add.1.ronn} +22 -4
- data/bundler/{man → lib/bundler/man}/bundle-binstubs.1 +6 -4
- data/bundler/{man/bundle-binstubs.ronn → lib/bundler/man/bundle-binstubs.1.ronn} +3 -5
- data/bundler/lib/bundler/man/bundle-cache.1 +61 -0
- data/bundler/{man/bundle-package.ronn → lib/bundler/man/bundle-cache.1.ronn} +22 -15
- data/bundler/{man → lib/bundler/man}/bundle-check.1 +1 -1
- data/bundler/{man → lib/bundler/man}/bundle-clean.1 +2 -2
- data/bundler/{man/bundle-clean.ronn → lib/bundler/man/bundle-clean.1.ronn} +1 -1
- data/bundler/{man → lib/bundler/man}/bundle-config.1 +78 -60
- data/bundler/{man/bundle-config.ronn → lib/bundler/man/bundle-config.1.ronn} +96 -85
- 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 +6 -6
- data/bundler/{man/bundle-exec.ronn → lib/bundler/man/bundle-exec.1.ronn} +6 -6
- data/bundler/lib/bundler/man/bundle-gem.1 +105 -0
- data/bundler/lib/bundler/man/bundle-gem.1.ronn +117 -0
- 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 +6 -2
- data/bundler/{man/bundle-init.ronn → lib/bundler/man/bundle-init.1.ronn} +3 -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 +42 -37
- data/bundler/{man/bundle-install.ronn → lib/bundler/man/bundle-install.1.ronn} +42 -38
- 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 +22 -2
- data/bundler/{man/bundle-open.ronn → lib/bundler/man/bundle-open.1.ronn} +9 -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 +8 -8
- data/bundler/{man/bundle-update.ronn → lib/bundler/man/bundle-update.1.ronn} +8 -7
- 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 +17 -12
- data/bundler/{man/bundle.ronn → lib/bundler/man/bundle.1.ronn} +14 -9
- data/bundler/lib/bundler/man/gemfile.5 +723 -0
- data/bundler/{man → lib/bundler/man}/gemfile.5.ronn +112 -95
- data/bundler/lib/bundler/man/index.txt +29 -0
- data/bundler/lib/bundler/match_metadata.rb +13 -0
- data/bundler/lib/bundler/match_platform.rb +1 -2
- data/bundler/lib/bundler/match_remote_metadata.rb +29 -0
- data/bundler/lib/bundler/mirror.rb +10 -12
- data/bundler/lib/bundler/plugin/api/source.rb +29 -15
- data/bundler/lib/bundler/plugin/api.rb +1 -1
- data/bundler/lib/bundler/plugin/dsl.rb +1 -1
- data/bundler/lib/bundler/plugin/index.rb +31 -8
- data/bundler/lib/bundler/plugin/installer/git.rb +0 -4
- data/bundler/lib/bundler/plugin/installer/rubygems.rb +1 -9
- data/bundler/lib/bundler/plugin/installer.rb +35 -22
- data/bundler/lib/bundler/plugin/source_list.rb +5 -1
- data/bundler/lib/bundler/plugin.rb +102 -42
- data/bundler/lib/bundler/process_lock.rb +1 -1
- data/bundler/lib/bundler/remote_specification.rb +15 -8
- data/bundler/lib/bundler/resolver/base.rb +77 -0
- data/bundler/lib/bundler/resolver/candidate.rb +94 -0
- data/bundler/lib/bundler/resolver/incompatibility.rb +15 -0
- data/bundler/lib/bundler/resolver/package.rb +72 -0
- data/bundler/lib/bundler/resolver/root.rb +25 -0
- data/bundler/lib/bundler/resolver/spec_group.rb +49 -73
- data/bundler/lib/bundler/resolver.rb +343 -300
- data/bundler/lib/bundler/retry.rb +4 -4
- data/bundler/lib/bundler/ruby_dsl.rb +1 -1
- data/bundler/lib/bundler/ruby_version.rb +9 -37
- data/bundler/lib/bundler/rubygems_ext.rb +235 -92
- data/bundler/lib/bundler/rubygems_gem_installer.rb +87 -21
- data/bundler/lib/bundler/rubygems_integration.rb +179 -515
- data/bundler/lib/bundler/runtime.rb +25 -40
- data/bundler/lib/bundler/self_manager.rb +168 -0
- data/bundler/lib/bundler/settings.rb +162 -118
- data/bundler/lib/bundler/setup.rb +11 -12
- data/bundler/lib/bundler/shared_helpers.rb +61 -102
- data/bundler/lib/bundler/similarity_detector.rb +3 -3
- data/bundler/lib/bundler/source/git/git_proxy.rb +257 -128
- data/bundler/lib/bundler/source/git.rb +84 -61
- data/bundler/lib/bundler/source/metadata.rb +9 -9
- data/bundler/lib/bundler/source/path/installer.rb +11 -32
- data/bundler/lib/bundler/source/path.rb +28 -17
- data/bundler/lib/bundler/source/rubygems/remote.rb +3 -4
- data/bundler/lib/bundler/source/rubygems.rb +171 -197
- data/bundler/lib/bundler/source/rubygems_aggregate.rb +68 -0
- data/bundler/lib/bundler/source.rb +30 -10
- data/bundler/lib/bundler/source_list.rb +112 -67
- data/bundler/lib/bundler/source_map.rb +71 -0
- data/bundler/lib/bundler/spec_set.rb +86 -72
- data/bundler/lib/bundler/stub_specification.rb +45 -37
- data/bundler/lib/bundler/templates/Executable +3 -5
- data/bundler/lib/bundler/templates/Executable.bundler +21 -17
- data/bundler/lib/bundler/templates/Executable.standalone +4 -4
- data/bundler/lib/bundler/templates/Gemfile +0 -2
- 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/Cargo.toml.tt +7 -0
- data/bundler/lib/bundler/templates/newgem/Gemfile.tt +22 -2
- data/bundler/lib/bundler/templates/newgem/README.md.tt +13 -15
- data/bundler/lib/bundler/templates/newgem/Rakefile.tt +33 -5
- data/bundler/lib/bundler/templates/newgem/bin/console.tt +1 -0
- data/bundler/lib/bundler/templates/newgem/circleci/config.yml.tt +25 -0
- data/bundler/lib/bundler/templates/newgem/ext/newgem/Cargo.toml.tt +15 -0
- data/bundler/lib/bundler/templates/newgem/ext/newgem/{extconf.rb.tt → extconf-c.rb.tt} +2 -0
- data/bundler/lib/bundler/templates/newgem/ext/newgem/extconf-rust.rb.tt +6 -0
- data/bundler/lib/bundler/templates/newgem/ext/newgem/src/lib.rs.tt +12 -0
- data/bundler/lib/bundler/templates/newgem/github/workflows/main.yml.tt +37 -0
- data/bundler/lib/bundler/templates/newgem/gitignore.tt +3 -0
- data/bundler/lib/bundler/templates/newgem/gitlab-ci.yml.tt +18 -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 +36 -41
- 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/minitest/test_helper.rb.tt +6 -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/rg_proxy.rb +1 -1
- data/bundler/lib/bundler/ui/shell.rb +39 -20
- data/bundler/lib/bundler/ui/silent.rb +21 -5
- data/bundler/lib/bundler/ui.rb +3 -3
- data/bundler/lib/bundler/uri_credentials_filter.rb +10 -4
- 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 +174 -0
- data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/version.rb +3 -0
- data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/wrapper.rb +56 -0
- data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool.rb +128 -0
- data/bundler/lib/bundler/vendor/fileutils/LICENSE.txt +22 -0
- data/bundler/lib/bundler/vendor/fileutils/lib/fileutils.rb +1493 -425
- data/bundler/lib/bundler/vendor/net-http-persistent/README.rdoc +82 -0
- data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/connection.rb +40 -0
- data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/pool.rb +53 -0
- data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/timed_stack_multi.rb +79 -0
- data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb +302 -462
- data/bundler/lib/bundler/vendor/pub_grub/LICENSE.txt +21 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/assignment.rb +20 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/basic_package_source.rb +189 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/failure_writer.rb +182 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/incompatibility.rb +155 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/package.rb +43 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/partial_solution.rb +121 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/rubygems.rb +45 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/solve_failure.rb +19 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/static_package_source.rb +60 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/term.rb +105 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version.rb +3 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_constraint.rb +129 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_range.rb +411 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_solver.rb +243 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_union.rb +178 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub.rb +31 -0
- data/bundler/lib/bundler/vendor/thor/LICENSE.md +20 -0
- data/bundler/lib/bundler/vendor/thor/lib/thor/actions/create_file.rb +1 -1
- data/bundler/lib/bundler/vendor/thor/lib/thor/actions/create_link.rb +3 -2
- data/bundler/lib/bundler/vendor/thor/lib/thor/actions/directory.rb +7 -17
- data/bundler/lib/bundler/vendor/thor/lib/thor/actions/file_manipulation.rb +25 -14
- data/bundler/lib/bundler/vendor/thor/lib/thor/actions/inject_into_file.rb +20 -10
- data/bundler/lib/bundler/vendor/thor/lib/thor/actions.rb +34 -15
- data/bundler/lib/bundler/vendor/thor/lib/thor/base.rb +63 -43
- data/bundler/lib/bundler/vendor/thor/lib/thor/command.rb +21 -14
- 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 +83 -0
- data/bundler/lib/bundler/vendor/thor/lib/thor/group.rb +3 -3
- data/bundler/lib/bundler/vendor/thor/lib/thor/invocation.rb +1 -0
- data/bundler/lib/bundler/vendor/thor/lib/thor/line_editor/basic.rb +1 -1
- data/bundler/lib/bundler/vendor/thor/lib/thor/line_editor/readline.rb +6 -6
- data/bundler/lib/bundler/vendor/thor/lib/thor/line_editor.rb +2 -2
- data/bundler/lib/bundler/vendor/thor/lib/thor/nested_context.rb +29 -0
- data/bundler/lib/bundler/vendor/thor/lib/thor/parser/arguments.rb +7 -3
- data/bundler/lib/bundler/vendor/thor/lib/thor/parser/option.rb +20 -7
- data/bundler/lib/bundler/vendor/thor/lib/thor/parser/options.rb +40 -6
- data/bundler/lib/bundler/vendor/thor/lib/thor/parser.rb +4 -4
- data/bundler/lib/bundler/vendor/thor/lib/thor/rake_compat.rb +1 -0
- data/bundler/lib/bundler/vendor/thor/lib/thor/runner.rb +15 -14
- data/bundler/lib/bundler/vendor/thor/lib/thor/shell/basic.rb +88 -13
- data/bundler/lib/bundler/vendor/thor/lib/thor/shell/color.rb +10 -2
- data/bundler/lib/bundler/vendor/thor/lib/thor/shell/html.rb +3 -3
- data/bundler/lib/bundler/vendor/thor/lib/thor/shell.rb +5 -5
- data/bundler/lib/bundler/vendor/thor/lib/thor/util.rb +18 -2
- data/bundler/lib/bundler/vendor/thor/lib/thor/version.rb +1 -1
- data/bundler/lib/bundler/vendor/thor/lib/thor.rb +16 -9
- 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 +729 -0
- data/bundler/lib/bundler/vendor/uri/lib/uri/file.rb +100 -0
- data/bundler/lib/bundler/vendor/uri/lib/uri/ftp.rb +267 -0
- data/bundler/lib/bundler/vendor/uri/lib/uri/generic.rb +1587 -0
- data/bundler/lib/bundler/vendor/uri/lib/uri/http.rb +125 -0
- data/bundler/lib/bundler/vendor/uri/lib/uri/https.rb +23 -0
- data/bundler/lib/bundler/vendor/uri/lib/uri/ldap.rb +261 -0
- data/bundler/lib/bundler/vendor/uri/lib/uri/ldaps.rb +22 -0
- data/bundler/lib/bundler/vendor/uri/lib/uri/mailto.rb +293 -0
- data/bundler/lib/bundler/vendor/uri/lib/uri/rfc2396_parser.rb +539 -0
- data/bundler/lib/bundler/vendor/uri/lib/uri/rfc3986_parser.rb +119 -0
- data/bundler/lib/bundler/vendor/uri/lib/uri/version.rb +6 -0
- data/bundler/lib/bundler/vendor/uri/lib/uri/ws.rb +83 -0
- data/bundler/lib/bundler/vendor/uri/lib/uri/wss.rb +23 -0
- data/bundler/lib/bundler/vendor/uri/lib/uri.rb +104 -0
- data/bundler/lib/bundler/vendored_fileutils.rb +1 -6
- data/bundler/lib/bundler/vendored_persistent.rb +2 -39
- data/bundler/lib/bundler/{vendored_molinillo.rb → vendored_pub_grub.rb} +1 -1
- data/bundler/lib/bundler/vendored_thor.rb +2 -2
- data/bundler/lib/bundler/vendored_tsort.rb +4 -0
- data/bundler/lib/bundler/vendored_uri.rb +4 -0
- data/bundler/lib/bundler/version.rb +5 -20
- data/bundler/lib/bundler/vlad.rb +2 -2
- data/bundler/lib/bundler/worker.rb +26 -15
- data/bundler/lib/bundler/yaml_serializer.rb +3 -4
- data/bundler/lib/bundler.rb +285 -183
- data/hide_lib_for_update/note.txt +0 -4
- data/lib/rubygems/available_set.rb +7 -8
- data/lib/rubygems/basic_specification.rb +44 -31
- data/lib/rubygems/bundler_version_finder.rb +28 -50
- data/lib/rubygems/command.rb +104 -46
- data/lib/rubygems/command_manager.rb +35 -16
- data/lib/rubygems/commands/build_command.rb +77 -26
- data/lib/rubygems/commands/cert_command.rb +78 -76
- data/lib/rubygems/commands/check_command.rb +20 -22
- data/lib/rubygems/commands/cleanup_command.rb +36 -32
- data/lib/rubygems/commands/contents_command.rb +16 -18
- data/lib/rubygems/commands/dependency_command.rb +39 -50
- data/lib/rubygems/commands/environment_command.rb +11 -13
- data/lib/rubygems/commands/fetch_command.rb +33 -16
- data/lib/rubygems/commands/generate_index_command.rb +18 -17
- data/lib/rubygems/commands/help_command.rb +7 -7
- data/lib/rubygems/commands/info_command.rb +11 -6
- data/lib/rubygems/commands/install_command.rb +45 -79
- data/lib/rubygems/commands/list_command.rb +9 -8
- data/lib/rubygems/commands/lock_command.rb +7 -9
- data/lib/rubygems/commands/mirror_command.rb +3 -4
- data/lib/rubygems/commands/open_command.rb +11 -14
- data/lib/rubygems/commands/outdated_command.rb +5 -6
- data/lib/rubygems/commands/owner_command.rb +29 -22
- data/lib/rubygems/commands/pristine_command.rb +61 -51
- data/lib/rubygems/commands/push_command.rb +26 -63
- data/lib/rubygems/commands/query_command.rb +21 -337
- data/lib/rubygems/commands/rdoc_command.rb +26 -26
- 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 +282 -241
- data/lib/rubygems/commands/signin_command.rb +9 -10
- data/lib/rubygems/commands/signout_command.rb +7 -9
- data/lib/rubygems/commands/sources_command.rb +42 -26
- data/lib/rubygems/commands/specification_command.rb +25 -20
- data/lib/rubygems/commands/stale_command.rb +3 -3
- data/lib/rubygems/commands/uninstall_command.rb +58 -49
- data/lib/rubygems/commands/unpack_command.rb +15 -44
- data/lib/rubygems/commands/update_command.rb +133 -81
- data/lib/rubygems/commands/which_command.rb +8 -11
- data/lib/rubygems/commands/yank_command.rb +22 -19
- data/lib/rubygems/compatibility.rb +7 -5
- data/lib/rubygems/config_file.rb +101 -47
- data/lib/rubygems/core_ext/kernel_gem.rb +8 -12
- data/lib/rubygems/core_ext/kernel_require.rb +124 -83
- data/lib/rubygems/core_ext/kernel_warn.rb +35 -30
- data/lib/rubygems/core_ext/tcpsocket_init.rb +52 -0
- data/lib/rubygems/defaults.rb +131 -55
- data/lib/rubygems/dependency.rb +44 -27
- data/lib/rubygems/dependency_installer.rb +49 -205
- data/lib/rubygems/dependency_list.rb +24 -25
- data/lib/rubygems/deprecate.rb +106 -12
- data/lib/rubygems/doctor.rb +22 -22
- data/lib/rubygems/errors.rb +8 -14
- data/lib/rubygems/exceptions.rb +35 -33
- data/lib/rubygems/ext/build_error.rb +2 -0
- data/lib/rubygems/ext/builder.rb +71 -95
- data/lib/rubygems/ext/cargo_builder/link_flag_converter.rb +27 -0
- data/lib/rubygems/ext/cargo_builder.rb +360 -0
- data/lib/rubygems/ext/cmake_builder.rb +6 -7
- data/lib/rubygems/ext/configure_builder.rb +5 -8
- data/lib/rubygems/ext/ext_conf_builder.rb +45 -65
- 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 +179 -54
- data/lib/rubygems/indexer.rb +38 -53
- 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 +230 -173
- 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 -5
- data/lib/rubygems/name_tuple.rb +10 -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 +2308 -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 +73 -66
- data/lib/rubygems/package/tar_reader/entry.rb +8 -9
- data/lib/rubygems/package/tar_reader.rb +16 -13
- data/lib/rubygems/package/tar_writer.rb +12 -22
- data/lib/rubygems/package.rb +142 -125
- data/lib/rubygems/package_task.rb +5 -11
- data/lib/rubygems/path_support.rb +3 -8
- data/lib/rubygems/platform.rb +113 -73
- data/lib/rubygems/psych_tree.rb +1 -1
- data/lib/rubygems/query_utils.rb +351 -0
- data/lib/rubygems/rdoc.rb +4 -16
- data/lib/rubygems/remote_fetcher.rb +64 -136
- data/lib/rubygems/request/connection_pools.rb +7 -11
- data/lib/rubygems/request/http_pool.rb +2 -3
- data/lib/rubygems/request.rb +31 -32
- data/lib/rubygems/request_set/gem_dependency_api.rb +135 -136
- data/lib/rubygems/request_set/lockfile/parser.rb +28 -28
- data/lib/rubygems/request_set/lockfile/tokenizer.rb +5 -5
- data/lib/rubygems/request_set/lockfile.rb +21 -20
- data/lib/rubygems/request_set.rb +30 -43
- data/lib/rubygems/requirement.rb +42 -64
- data/lib/rubygems/resolver/activation_request.rb +29 -53
- data/lib/rubygems/resolver/api_set/gem_parser.rb +20 -0
- data/lib/rubygems/resolver/api_set.rb +33 -26
- data/lib/rubygems/resolver/api_specification.rb +30 -16
- data/lib/rubygems/resolver/best_set.rb +9 -11
- data/lib/rubygems/resolver/composed_set.rb +3 -5
- data/lib/rubygems/resolver/conflict.rb +12 -19
- 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 +69 -27
- data/lib/rubygems/resolver/local_specification.rb +2 -4
- data/lib/rubygems/resolver/lock_set.rb +7 -9
- data/lib/rubygems/resolver/lock_specification.rb +6 -8
- 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 +42 -9
- data/lib/rubygems/resolver/molinillo/lib/molinillo/errors.rb +82 -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 -1
- 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 -3
- data/lib/rubygems/resolver/vendor_set.rb +1 -3
- data/lib/rubygems/resolver/vendor_specification.rb +3 -5
- data/lib/rubygems/resolver.rb +58 -54
- data/lib/rubygems/s3_uri_signer.rb +175 -0
- data/lib/rubygems/safe_yaml.rb +14 -16
- data/lib/rubygems/security/policies.rb +47 -47
- data/lib/rubygems/security/policy.rb +25 -29
- data/lib/rubygems/security/signer.rb +16 -18
- data/lib/rubygems/security/trust_dir.rb +5 -6
- data/lib/rubygems/security.rb +90 -69
- data/lib/rubygems/security_option.rb +7 -8
- 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 +50 -38
- data/lib/rubygems/source_list.rb +9 -13
- data/lib/rubygems/spec_fetcher.rb +52 -64
- data/lib/rubygems/specification.rb +432 -463
- data/lib/rubygems/specification_policy.rb +185 -87
- data/lib/rubygems/ssl_certs/rubygems.org/GlobalSignRootCA_R3.pem +21 -0
- data/lib/rubygems/stub_specification.rb +24 -29
- data/lib/rubygems/text.rb +21 -21
- data/lib/rubygems/tsort/.document +1 -0
- data/lib/rubygems/tsort/LICENSE.txt +22 -0
- data/lib/rubygems/tsort/lib/tsort.rb +452 -0
- data/lib/rubygems/tsort.rb +3 -0
- data/lib/rubygems/uninstaller.rb +110 -57
- data/lib/rubygems/unknown_command_spell_checker.rb +21 -0
- data/lib/rubygems/update_suggestion.rb +69 -0
- data/lib/rubygems/uri.rb +126 -0
- data/lib/rubygems/uri_formatter.rb +2 -4
- data/lib/rubygems/user_interaction.rb +46 -49
- data/lib/rubygems/util/licenses.rb +511 -404
- data/lib/rubygems/util.rb +40 -56
- data/lib/rubygems/validator.rb +15 -37
- data/lib/rubygems/version.rb +48 -29
- data/lib/rubygems/version_option.rb +11 -5
- data/lib/rubygems.rb +305 -332
- data/rubygems-update.gemspec +6 -13
- data/setup.rb +11 -22
- data/test/rubygems/alternate_cert.pem +14 -14
- data/test/rubygems/alternate_cert_32.pem +15 -15
- data/test/rubygems/alternate_key.pem +25 -25
- data/test/rubygems/bundler_test_gem.rb +419 -0
- data/test/rubygems/ca_cert.pem +74 -65
- data/test/rubygems/child_cert.pem +15 -16
- data/test/rubygems/child_cert_32.pem +15 -16
- data/test/rubygems/child_key.pem +25 -25
- data/test/rubygems/client.pem +103 -45
- 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/test/rubygems/expired_cert.pem +15 -15
- data/test/rubygems/future_cert.pem +15 -15
- data/test/rubygems/future_cert_32.pem +15 -15
- data/test/rubygems/grandchild_cert.pem +15 -16
- data/test/rubygems/grandchild_cert_32.pem +15 -16
- data/test/rubygems/grandchild_key.pem +25 -25
- data/{lib/rubygems/test_case.rb → test/rubygems/helper.rb} +505 -507
- data/{lib → test}/rubygems/installer_test_case.rb +115 -53
- data/test/rubygems/invalid_issuer_cert.pem +16 -16
- data/test/rubygems/invalid_issuer_cert_32.pem +16 -16
- data/test/rubygems/invalid_key.pem +25 -25
- data/test/rubygems/invalid_signer_cert.pem +15 -15
- data/test/rubygems/invalid_signer_cert_32.pem +15 -15
- data/test/rubygems/invalidchild_cert.pem +15 -16
- data/test/rubygems/invalidchild_cert_32.pem +15 -16
- data/test/rubygems/invalidchild_key.pem +25 -25
- data/{lib → test}/rubygems/package/tar_test_case.rb +4 -6
- data/test/rubygems/packages/Bluebie-legs-0.6.2.gem +0 -0
- 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/standarderror/rubygems_plugin.rb +1 -1
- data/test/rubygems/private_ec_key.pem +9 -0
- data/test/rubygems/private_key.pem +25 -25
- data/test/rubygems/public_cert.pem +16 -16
- data/test/rubygems/public_cert_32.pem +15 -15
- data/test/rubygems/public_key.pem +7 -7
- 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 +12 -0
- data/test/rubygems/ssl_cert.pem +78 -17
- data/test/rubygems/ssl_key.pem +25 -13
- data/test/rubygems/test_bundled_ca.rb +44 -47
- data/test/rubygems/test_config.rb +5 -7
- data/test/rubygems/test_deprecate.rb +90 -10
- data/test/rubygems/test_exit.rb +17 -0
- data/test/rubygems/test_gem.rb +679 -885
- data/test/rubygems/test_gem_available_set.rb +24 -25
- data/test/rubygems/test_gem_bundler_version_finder.rb +42 -42
- data/test/rubygems/test_gem_command.rb +186 -39
- data/test/rubygems/test_gem_command_manager.rb +166 -36
- data/test/rubygems/test_gem_commands_build_command.rb +436 -52
- data/test/rubygems/test_gem_commands_cert_command.rb +193 -124
- data/test/rubygems/test_gem_commands_check_command.rb +9 -11
- data/test/rubygems/test_gem_commands_cleanup_command.rb +87 -62
- data/test/rubygems/test_gem_commands_contents_command.rb +73 -42
- data/test/rubygems/test_gem_commands_dependency_command.rb +39 -41
- data/test/rubygems/test_gem_commands_environment_command.rb +60 -48
- data/test/rubygems/test_gem_commands_fetch_command.rb +163 -32
- data/test/rubygems/test_gem_commands_generate_index_command.rb +39 -9
- data/test/rubygems/test_gem_commands_help_command.rb +34 -19
- data/test/rubygems/test_gem_commands_info_command.rb +34 -9
- data/test/rubygems/test_gem_commands_install_command.rb +600 -173
- 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 -4
- data/test/rubygems/test_gem_commands_open_command.rb +16 -19
- data/test/rubygems/test_gem_commands_outdated_command.rb +24 -7
- data/test/rubygems/test_gem_commands_owner_command.rb +183 -49
- data/test/rubygems/test_gem_commands_pristine_command.rb +222 -89
- data/test/rubygems/test_gem_commands_push_command.rb +178 -69
- data/test/rubygems/test_gem_commands_query_command.rb +114 -89
- data/test/rubygems/test_gem_commands_search_command.rb +2 -4
- data/test/rubygems/test_gem_commands_server_command.rb +6 -46
- data/test/rubygems/test_gem_commands_setup_command.rb +334 -157
- data/test/rubygems/test_gem_commands_signin_command.rb +187 -27
- data/test/rubygems/test_gem_commands_signout_command.rb +3 -10
- data/test/rubygems/test_gem_commands_sources_command.rb +266 -33
- 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 +230 -95
- data/test/rubygems/test_gem_commands_unpack_command.rb +32 -34
- data/test/rubygems/test_gem_commands_update_command.rb +412 -102
- data/test/rubygems/test_gem_commands_which_command.rb +12 -14
- data/test/rubygems/test_gem_commands_yank_command.rb +107 -26
- data/test/rubygems/test_gem_config_file.rb +120 -96
- data/test/rubygems/test_gem_dependency.rb +94 -86
- data/test/rubygems/test_gem_dependency_installer.rb +305 -388
- data/test/rubygems/test_gem_dependency_list.rb +66 -61
- 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 +116 -106
- data/test/rubygems/test_gem_ext_cargo_builder/custom_name/.gitignore +1 -0
- data/test/rubygems/test_gem_ext_cargo_builder/custom_name/custom_name.gemspec +8 -0
- data/test/rubygems/test_gem_ext_cargo_builder/custom_name/ext/custom_name_lib/Cargo.lock +233 -0
- data/test/rubygems/test_gem_ext_cargo_builder/custom_name/ext/custom_name_lib/Cargo.toml +10 -0
- data/test/rubygems/test_gem_ext_cargo_builder/custom_name/ext/custom_name_lib/src/lib.rs +27 -0
- data/test/rubygems/test_gem_ext_cargo_builder/custom_name/lib/custom_name.rb +1 -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 +233 -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/rust_ruby_example.gemspec +8 -0
- data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/src/lib.rs +51 -0
- data/test/rubygems/test_gem_ext_cargo_builder.rb +166 -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 +60 -0
- data/test/rubygems/test_gem_ext_cmake_builder.rb +32 -37
- data/test/rubygems/test_gem_ext_configure_builder.rb +23 -31
- data/test/rubygems/test_gem_ext_ext_conf_builder.rb +75 -79
- data/test/rubygems/test_gem_ext_rake_builder.rb +49 -30
- data/test/rubygems/test_gem_gem_runner.rb +52 -7
- data/test/rubygems/test_gem_gemcutter_utilities.rb +91 -76
- data/test/rubygems/test_gem_impossible_dependencies_error.rb +4 -6
- data/test/rubygems/test_gem_indexer.rb +120 -105
- data/test/rubygems/test_gem_install_update_options.rb +57 -33
- data/test/rubygems/test_gem_installer.rb +1230 -644
- 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 +396 -266
- data/test/rubygems/test_gem_package_old.rb +57 -56
- data/test/rubygems/test_gem_package_tar_header.rb +108 -50
- data/test/rubygems/test_gem_package_tar_reader.rb +8 -10
- data/test/rubygems/test_gem_package_tar_reader_entry.rb +77 -20
- data/test/rubygems/test_gem_package_tar_writer.rb +107 -101
- data/test/rubygems/test_gem_package_task.rb +58 -25
- data/test/rubygems/test_gem_path_support.rb +29 -29
- data/test/rubygems/test_gem_platform.rb +388 -199
- data/test/rubygems/test_gem_rdoc.rb +20 -155
- data/test/rubygems/test_gem_remote_fetcher.rb +474 -303
- data/test/rubygems/test_gem_request.rb +128 -85
- data/test/rubygems/test_gem_request_connection_pools.rb +32 -32
- data/test/rubygems/test_gem_request_set.rb +186 -110
- data/test/rubygems/test_gem_request_set_gem_dependency_api.rb +280 -261
- data/test/rubygems/test_gem_request_set_lockfile.rb +93 -94
- data/test/rubygems/test_gem_request_set_lockfile_parser.rb +68 -69
- data/test/rubygems/test_gem_request_set_lockfile_tokenizer.rb +136 -136
- data/test/rubygems/test_gem_requirement.rb +140 -55
- data/test/rubygems/test_gem_resolver.rb +224 -115
- data/test/rubygems/test_gem_resolver_activation_request.rb +9 -40
- 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 -18
- 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 -22
- data/test/rubygems/test_gem_resolver_index_set.rb +14 -16
- data/test/rubygems/test_gem_resolver_index_specification.rb +21 -18
- data/test/rubygems/test_gem_resolver_installed_specification.rb +5 -8
- data/test/rubygems/test_gem_resolver_installer_set.rb +106 -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 -10
- 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 +109 -79
- data/test/rubygems/test_gem_security_policy.rb +102 -107
- data/test/rubygems/test_gem_security_signer.rb +51 -52
- data/test/rubygems/test_gem_security_trust_dir.rb +14 -16
- data/test/rubygems/test_gem_silent_ui.rb +47 -42
- data/test/rubygems/test_gem_source.rb +66 -51
- data/test/rubygems/test_gem_source_fetch_problem.rb +17 -8
- data/test/rubygems/test_gem_source_git.rb +74 -74
- data/test/rubygems/test_gem_source_installed.rb +16 -18
- data/test/rubygems/test_gem_source_list.rb +5 -5
- data/test/rubygems/test_gem_source_local.rb +15 -16
- data/test/rubygems/test_gem_source_lock.rb +31 -33
- data/test/rubygems/test_gem_source_specific_file.rb +18 -19
- 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 +1051 -1071
- data/test/rubygems/test_gem_stream_ui.rb +25 -23
- data/test/rubygems/test_gem_stub_specification.rb +39 -56
- data/test/rubygems/test_gem_text.rb +8 -3
- data/test/rubygems/test_gem_uninstaller.rb +269 -100
- data/test/rubygems/test_gem_unsatisfiable_dependency_error.rb +3 -5
- data/test/rubygems/test_gem_update_suggestion.rb +208 -0
- 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 +46 -34
- data/test/rubygems/test_gem_validator.rb +12 -15
- data/test/rubygems/test_gem_version.rb +49 -34
- data/test/rubygems/test_gem_version_option.rb +16 -18
- data/test/rubygems/test_kernel.rb +61 -53
- data/test/rubygems/test_project_sanity.rb +20 -0
- data/test/rubygems/test_remote_fetch_error.rb +7 -8
- data/test/rubygems/test_require.rb +415 -121
- data/test/rubygems/test_rubygems.rb +74 -0
- data/{lib/rubygems/test_utilities.rb → test/rubygems/utilities.rb} +74 -50
- data/test/rubygems/wrong_key_cert.pem +15 -15
- data/test/rubygems/wrong_key_cert_32.pem +15 -15
- data/test/test_changelog_generator.rb +17 -0
- metadata +218 -244
- data/.rubocop.yml +0 -66
- data/.travis.yml +0 -38
- data/History.txt +0 -3965
- data/Rakefile +0 -372
- data/appveyor.yml +0 -43
- data/bundler/CODE_OF_CONDUCT.md +0 -42
- data/bundler/CONTRIBUTING.md +0 -17
- data/bundler/exe/bundle_ruby +0 -60
- data/bundler/lib/bundler/cli/package.rb +0 -49
- data/bundler/lib/bundler/compatibility_guard.rb +0 -14
- data/bundler/lib/bundler/dep_proxy.rb +0 -48
- data/bundler/lib/bundler/gem_remote_fetcher.rb +0 -43
- data/bundler/lib/bundler/gemdeps.rb +0 -29
- data/bundler/lib/bundler/psyched_yaml.rb +0 -37
- data/bundler/lib/bundler/ssl_certs/certificate_manager.rb +0 -66
- data/bundler/lib/bundler/ssl_certs/rubygems.global.ssl.fastly.net/DigiCertHighAssuranceEVRootCA.pem +0 -23
- data/bundler/lib/bundler/ssl_certs/rubygems.org/AddTrustExternalCARoot.pem +0 -25
- data/bundler/lib/bundler/templates/gems.rb +0 -8
- data/bundler/lib/bundler/templates/newgem/test/test_helper.rb.tt +0 -4
- data/bundler/lib/bundler/templates/newgem/travis.yml.tt +0 -7
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/compatibility.rb +0 -26
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/delegates/resolution_state.rb +0 -57
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/delegates/specification_provider.rb +0 -81
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/action.rb +0 -36
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/add_edge_no_circular.rb +0 -66
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/add_vertex.rb +0 -62
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/delete_edge.rb +0 -63
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/detach_vertex_named.rb +0 -61
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/log.rb +0 -126
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/set_payload.rb +0 -46
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/tag.rb +0 -36
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/vertex.rb +0 -136
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph.rb +0 -223
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/errors.rb +0 -143
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/gem_metadata.rb +0 -6
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/modules/specification_provider.rb +0 -101
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/modules/ui.rb +0 -67
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/resolution.rb +0 -837
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/resolver.rb +0 -46
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/state.rb +0 -58
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo.rb +0 -12
- data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/faster.rb +0 -27
- data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/ssl_reuse.rb +0 -129
- data/bundler/lib/bundler/vendor/thor/lib/thor/core_ext/io_binary_read.rb +0 -12
- data/bundler/lib/bundler/vendor/thor/lib/thor/core_ext/ordered_hash.rb +0 -129
- data/bundler/lib/bundler/version_ranges.rb +0 -76
- data/bundler/man/bundle-gem.1 +0 -80
- data/bundler/man/bundle-gem.ronn +0 -78
- data/bundler/man/bundle-package.1 +0 -55
- data/lib/rubygems/psych_additions.rb +0 -10
- data/lib/rubygems/server.rb +0 -878
- data/lib/rubygems/source_local.rb +0 -7
- data/lib/rubygems/source_specific_file.rb +0 -6
- data/lib/rubygems/ssl_certs/index.rubygems.org/GlobalSignRootCA.pem +0 -21
- data/lib/rubygems/ssl_certs/rubygems.global.ssl.fastly.net/DigiCertHighAssuranceEVRootCA.pem +0 -23
- data/lib/rubygems/ssl_certs/rubygems.org/AddTrustExternalCARoot.pem +0 -25
- data/lib/rubygems/syck_hack.rb +0 -77
- 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 -607
- data/util/CL2notes +0 -55
- data/util/ci +0 -77
- data/util/create_certs.rb +0 -171
- data/util/create_encrypted_key.rb +0 -16
- data/util/generate_spdx_license_list.rb +0 -61
- data/util/patch_with_prs.rb +0 -77
- data/util/rubocop +0 -8
- data/util/update_bundled_ca_certificates.rb +0 -139
- data/util/update_changelog.rb +0 -67
- /data/bundler/lib/bundler/{ssl_certs → man}/.document +0 -0
- /data/bundler/{man/bundle-check.ronn → lib/bundler/man/bundle-check.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-lock.ronn → lib/bundler/man/bundle-lock.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
- /data/{bundler/lib/bundler/ssl_certs/index.rubygems.org → lib/rubygems/ssl_certs/rubygems.org}/GlobalSignRootCA.pem +0 -0
data/lib/rubygems.rb
CHANGED
@@ -1,23 +1,22 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
-
# -*- ruby -*-
|
3
2
|
#--
|
4
3
|
# Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others.
|
5
4
|
# All rights reserved.
|
6
5
|
# See LICENSE.txt for permissions.
|
7
6
|
#++
|
8
7
|
|
9
|
-
require
|
8
|
+
require "rbconfig"
|
10
9
|
|
11
10
|
module Gem
|
12
|
-
VERSION = "3.
|
11
|
+
VERSION = "3.4.7".freeze
|
13
12
|
end
|
14
13
|
|
15
14
|
# Must be first since it unloads the prelude from 1.9.2
|
16
|
-
|
15
|
+
require_relative "rubygems/compatibility"
|
17
16
|
|
18
|
-
|
19
|
-
|
20
|
-
|
17
|
+
require_relative "rubygems/defaults"
|
18
|
+
require_relative "rubygems/deprecate"
|
19
|
+
require_relative "rubygems/errors"
|
21
20
|
|
22
21
|
##
|
23
22
|
# RubyGems is the Ruby standard for publishing and managing third party
|
@@ -26,30 +25,30 @@ require 'rubygems/errors'
|
|
26
25
|
# For user documentation, see:
|
27
26
|
#
|
28
27
|
# * <tt>gem help</tt> and <tt>gem help [command]</tt>
|
29
|
-
# * {RubyGems User Guide}[
|
30
|
-
# * {Frequently Asked Questions}[
|
28
|
+
# * {RubyGems User Guide}[https://guides.rubygems.org/]
|
29
|
+
# * {Frequently Asked Questions}[https://guides.rubygems.org/faqs]
|
31
30
|
#
|
32
31
|
# For gem developer documentation see:
|
33
32
|
#
|
34
|
-
# * {Creating Gems}[
|
33
|
+
# * {Creating Gems}[https://guides.rubygems.org/make-your-own-gem]
|
35
34
|
# * Gem::Specification
|
36
35
|
# * Gem::Version for version dependency notes
|
37
36
|
#
|
38
37
|
# Further RubyGems documentation can be found at:
|
39
38
|
#
|
40
|
-
# * {RubyGems Guides}[
|
41
|
-
# * {RubyGems API}[
|
39
|
+
# * {RubyGems Guides}[https://guides.rubygems.org]
|
40
|
+
# * {RubyGems API}[https://www.rubydoc.info/github/rubygems/rubygems] (also available from
|
42
41
|
# <tt>gem server</tt>)
|
43
42
|
#
|
44
43
|
# == RubyGems Plugins
|
45
44
|
#
|
46
|
-
#
|
45
|
+
# RubyGems will load plugins in the latest version of each installed gem or
|
47
46
|
# $LOAD_PATH. Plugins must be named 'rubygems_plugin' (.rb, .so, etc) and
|
48
|
-
# placed at the root of your gem's #require_path. Plugins are
|
49
|
-
#
|
47
|
+
# placed at the root of your gem's #require_path. Plugins are installed at a
|
48
|
+
# special location and loaded on boot.
|
50
49
|
#
|
51
50
|
# For an example plugin, see the {Graph gem}[https://github.com/seattlerb/graph]
|
52
|
-
# which adds a
|
51
|
+
# which adds a <tt>gem graph</tt> command.
|
53
52
|
#
|
54
53
|
# == RubyGems Defaults, Packaging
|
55
54
|
#
|
@@ -112,9 +111,13 @@ require 'rubygems/errors'
|
|
112
111
|
#
|
113
112
|
# -The RubyGems Team
|
114
113
|
|
115
|
-
|
116
114
|
module Gem
|
117
|
-
RUBYGEMS_DIR =
|
115
|
+
RUBYGEMS_DIR = __dir__
|
116
|
+
|
117
|
+
# Taint support is deprecated in Ruby 2.7.
|
118
|
+
# This allows switching ".untaint" to ".tap(&Gem::UNTAINT)",
|
119
|
+
# to avoid deprecation warnings in Ruby 2.7.
|
120
|
+
UNTAINT = RUBY_VERSION < "2.7" ? :untaint.to_sym : proc {}
|
118
121
|
|
119
122
|
##
|
120
123
|
# An Array of Regexps that match windows Ruby platforms.
|
@@ -144,6 +147,7 @@ module Gem
|
|
144
147
|
doc
|
145
148
|
extensions
|
146
149
|
gems
|
150
|
+
plugins
|
147
151
|
specifications
|
148
152
|
].freeze
|
149
153
|
|
@@ -155,34 +159,12 @@ module Gem
|
|
155
159
|
specifications/default
|
156
160
|
].freeze
|
157
161
|
|
158
|
-
##
|
159
|
-
# Exception classes used in a Gem.read_binary +rescue+ statement. Not all of
|
160
|
-
# these are defined in Ruby 1.8.7, hence the need for this convoluted setup.
|
161
|
-
|
162
|
-
READ_BINARY_ERRORS = begin
|
163
|
-
read_binary_errors = [Errno::EACCES, Errno::EROFS, Errno::ENOSYS]
|
164
|
-
read_binary_errors << Errno::ENOTSUP if Errno.const_defined?(:ENOTSUP)
|
165
|
-
read_binary_errors
|
166
|
-
end.freeze
|
167
|
-
|
168
|
-
##
|
169
|
-
# Exception classes used in Gem.write_binary +rescue+ statement. Not all of
|
170
|
-
# these are defined in Ruby 1.8.7.
|
171
|
-
|
172
|
-
WRITE_BINARY_ERRORS = begin
|
173
|
-
write_binary_errors = [Errno::ENOSYS]
|
174
|
-
write_binary_errors << Errno::ENOTSUP if Errno.const_defined?(:ENOTSUP)
|
175
|
-
write_binary_errors
|
176
|
-
end.freeze
|
177
|
-
|
178
|
-
USE_BUNDLER_FOR_GEMDEPS = !ENV['DONT_USE_BUNDLER_FOR_GEMDEPS'] # :nodoc:
|
179
|
-
|
180
162
|
@@win_platform = nil
|
181
163
|
|
182
164
|
@configuration = nil
|
183
165
|
@gemdeps = nil
|
184
166
|
@loaded_specs = {}
|
185
|
-
LOADED_SPECS_MUTEX = Mutex.new
|
167
|
+
LOADED_SPECS_MUTEX = Thread::Mutex.new
|
186
168
|
@path_to_default_spec_map = {}
|
187
169
|
@platforms = []
|
188
170
|
@ruby = nil
|
@@ -197,6 +179,10 @@ module Gem
|
|
197
179
|
@pre_reset_hooks ||= []
|
198
180
|
@post_reset_hooks ||= []
|
199
181
|
|
182
|
+
@default_source_date_epoch = nil
|
183
|
+
|
184
|
+
@discover_gems_on_require = true
|
185
|
+
|
200
186
|
##
|
201
187
|
# Try to activate a gem containing +path+. Returns true if
|
202
188
|
# activation succeeded or wasn't needed because it was already
|
@@ -251,11 +237,6 @@ module Gem
|
|
251
237
|
# you to specify specific gem versions.
|
252
238
|
|
253
239
|
def self.bin_path(name, exec_name = nil, *requirements)
|
254
|
-
# TODO: fails test_self_bin_path_bin_file_gone_in_latest
|
255
|
-
# Gem::Specification.find_by_name(name, *requirements).bin_file exec_name
|
256
|
-
|
257
|
-
raise ArgumentError, "you must supply exec_name" unless exec_name
|
258
|
-
|
259
240
|
requirements = Gem::Requirement.default if
|
260
241
|
requirements.empty?
|
261
242
|
|
@@ -263,6 +244,8 @@ module Gem
|
|
263
244
|
end
|
264
245
|
|
265
246
|
def self.find_spec_for_exe(name, exec_name, requirements)
|
247
|
+
raise ArgumentError, "you must supply exec_name" unless exec_name
|
248
|
+
|
266
249
|
dep = Gem::Dependency.new name, requirements
|
267
250
|
|
268
251
|
loaded = Gem.loaded_specs[name]
|
@@ -271,15 +254,12 @@ module Gem
|
|
271
254
|
|
272
255
|
specs = dep.matching_specs(true)
|
273
256
|
|
274
|
-
specs = specs.find_all
|
257
|
+
specs = specs.find_all do |spec|
|
275
258
|
spec.executables.include? exec_name
|
276
|
-
|
259
|
+
end if exec_name
|
277
260
|
|
278
261
|
unless spec = specs.first
|
279
262
|
msg = "can't find gem #{dep} with executable #{exec_name}"
|
280
|
-
if name == "bundler" && bundler_message = Gem::BundlerVersionFinder.missing_version_message
|
281
|
-
msg = bundler_message
|
282
|
-
end
|
283
263
|
raise Gem::GemNotFoundException, msg
|
284
264
|
end
|
285
265
|
|
@@ -298,8 +278,8 @@ module Gem
|
|
298
278
|
#
|
299
279
|
# This method should *only* be used in bin stub files.
|
300
280
|
|
301
|
-
def self.activate_bin_path(name, exec_name,
|
302
|
-
spec = find_spec_for_exe name, exec_name,
|
281
|
+
def self.activate_bin_path(name, exec_name = nil, *requirements) # :nodoc:
|
282
|
+
spec = find_spec_for_exe name, exec_name, requirements
|
303
283
|
Gem::LOADED_SPECS_MUTEX.synchronize do
|
304
284
|
spec.activate
|
305
285
|
finish_resolve
|
@@ -311,18 +291,25 @@ module Gem
|
|
311
291
|
# The mode needed to read a file as straight binary.
|
312
292
|
|
313
293
|
def self.binary_mode
|
314
|
-
|
294
|
+
"rb"
|
315
295
|
end
|
316
296
|
|
317
297
|
##
|
318
298
|
# The path where gem executables are to be installed.
|
319
299
|
|
320
300
|
def self.bindir(install_dir=Gem.dir)
|
321
|
-
return File.join install_dir,
|
301
|
+
return File.join install_dir, "bin" unless
|
322
302
|
install_dir.to_s == Gem.default_dir.to_s
|
323
303
|
Gem.default_bindir
|
324
304
|
end
|
325
305
|
|
306
|
+
##
|
307
|
+
# The path were rubygems plugins are to be installed.
|
308
|
+
|
309
|
+
def self.plugindir(install_dir=Gem.dir)
|
310
|
+
File.join install_dir, "plugins"
|
311
|
+
end
|
312
|
+
|
326
313
|
##
|
327
314
|
# Reset the +dir+ and +path+ values. The next time +dir+ or +path+
|
328
315
|
# is requested, the values will be calculated from scratch. This is
|
@@ -335,13 +322,6 @@ module Gem
|
|
335
322
|
Gem::Security.reset if defined?(Gem::Security)
|
336
323
|
end
|
337
324
|
|
338
|
-
##
|
339
|
-
# The path to standard location of the user's .gemrc file.
|
340
|
-
|
341
|
-
def self.config_file
|
342
|
-
@config_file ||= File.join Gem.user_home, '.gemrc'
|
343
|
-
end
|
344
|
-
|
345
325
|
##
|
346
326
|
# The standard configuration object for gems.
|
347
327
|
|
@@ -371,7 +351,7 @@ module Gem
|
|
371
351
|
# A Zlib::Deflate.deflate wrapper
|
372
352
|
|
373
353
|
def self.deflate(data)
|
374
|
-
require
|
354
|
+
require "zlib"
|
375
355
|
Zlib::Deflate.deflate data
|
376
356
|
end
|
377
357
|
|
@@ -393,17 +373,17 @@ module Gem
|
|
393
373
|
target = {}
|
394
374
|
env.each_pair do |k,v|
|
395
375
|
case k
|
396
|
-
when
|
376
|
+
when "GEM_HOME", "GEM_PATH", "GEM_SPEC_CACHE"
|
397
377
|
case v
|
398
378
|
when nil, String
|
399
379
|
target[k] = v
|
400
380
|
when Array
|
401
381
|
unless Gem::Deprecate.skip
|
402
|
-
warn <<-
|
382
|
+
warn <<-EOWARN
|
403
383
|
Array values in the parameter to `Gem.paths=` are deprecated.
|
404
384
|
Please use a String or nil.
|
405
385
|
An Array (#{env.inspect}) was passed in from #{caller[3]}
|
406
|
-
|
386
|
+
EOWARN
|
407
387
|
end
|
408
388
|
target[k] = v.join File::PATH_SEPARATOR
|
409
389
|
end
|
@@ -417,8 +397,6 @@ An Array (#{env.inspect}) was passed in from #{caller[3]}
|
|
417
397
|
|
418
398
|
##
|
419
399
|
# The path where gems are to be installed.
|
420
|
-
#--
|
421
|
-
# FIXME deprecate these once everything else has been done -ebh
|
422
400
|
|
423
401
|
def self.dir
|
424
402
|
paths.home
|
@@ -462,8 +440,6 @@ An Array (#{env.inspect}) was passed in from #{caller[3]}
|
|
462
440
|
old_umask = File.umask
|
463
441
|
File.umask old_umask | 002
|
464
442
|
|
465
|
-
require 'fileutils'
|
466
|
-
|
467
443
|
options = {}
|
468
444
|
|
469
445
|
options[:mode] = mode if mode
|
@@ -471,7 +447,13 @@ An Array (#{env.inspect}) was passed in from #{caller[3]}
|
|
471
447
|
subdirs.each do |name|
|
472
448
|
subdir = File.join dir, name
|
473
449
|
next if File.exist? subdir
|
474
|
-
|
450
|
+
|
451
|
+
require "fileutils"
|
452
|
+
|
453
|
+
begin
|
454
|
+
FileUtils.mkdir_p subdir, **options
|
455
|
+
rescue SystemCallError
|
456
|
+
end
|
475
457
|
end
|
476
458
|
ensure
|
477
459
|
File.umask old_umask
|
@@ -482,7 +464,7 @@ An Array (#{env.inspect}) was passed in from #{caller[3]}
|
|
482
464
|
# distinction as extensions cannot be shared between the two.
|
483
465
|
|
484
466
|
def self.extension_api_version # :nodoc:
|
485
|
-
if
|
467
|
+
if "no" == RbConfig::CONFIG["ENABLE_SHARED"]
|
486
468
|
"#{ruby_api_version}-static"
|
487
469
|
else
|
488
470
|
ruby_api_version
|
@@ -508,7 +490,7 @@ An Array (#{env.inspect}) was passed in from #{caller[3]}
|
|
508
490
|
|
509
491
|
gem_specifications = @gemdeps ? Gem.loaded_specs.values : Gem::Specification.stubs
|
510
492
|
|
511
|
-
files.concat gem_specifications.map {
|
493
|
+
files.concat gem_specifications.map {|spec|
|
512
494
|
spec.matches_for_glob("#{glob}#{Gem.suffix_pattern}")
|
513
495
|
}.flatten
|
514
496
|
|
@@ -521,9 +503,9 @@ An Array (#{env.inspect}) was passed in from #{caller[3]}
|
|
521
503
|
|
522
504
|
def self.find_files_from_load_path(glob) # :nodoc:
|
523
505
|
glob_with_suffixes = "#{glob}#{Gem.suffix_pattern}"
|
524
|
-
$LOAD_PATH.map
|
506
|
+
$LOAD_PATH.map do |load_path|
|
525
507
|
Gem::Util.glob_files_in_dir(glob_with_suffixes, load_path)
|
526
|
-
|
508
|
+
end.flatten.select {|file| File.file? file.tap(&Gem::UNTAINT) }
|
527
509
|
end
|
528
510
|
|
529
511
|
##
|
@@ -543,7 +525,7 @@ An Array (#{env.inspect}) was passed in from #{caller[3]}
|
|
543
525
|
|
544
526
|
files = find_files_from_load_path glob if check_load_path
|
545
527
|
|
546
|
-
files.concat Gem::Specification.latest_specs(true).map {
|
528
|
+
files.concat Gem::Specification.latest_specs(true).map {|spec|
|
547
529
|
spec.matches_for_glob("#{glob}#{Gem.suffix_pattern}")
|
548
530
|
}.flatten
|
549
531
|
|
@@ -554,83 +536,16 @@ An Array (#{env.inspect}) was passed in from #{caller[3]}
|
|
554
536
|
return files
|
555
537
|
end
|
556
538
|
|
557
|
-
##
|
558
|
-
# Finds the user's home directory.
|
559
|
-
#--
|
560
|
-
# Some comments from the ruby-talk list regarding finding the home
|
561
|
-
# directory:
|
562
|
-
#
|
563
|
-
# I have HOME, USERPROFILE and HOMEDRIVE + HOMEPATH. Ruby seems
|
564
|
-
# to be depending on HOME in those code samples. I propose that
|
565
|
-
# it should fallback to USERPROFILE and HOMEDRIVE + HOMEPATH (at
|
566
|
-
# least on Win32).
|
567
|
-
#++
|
568
|
-
#--
|
569
|
-
#
|
570
|
-
# FIXME move to pathsupport
|
571
|
-
#
|
572
|
-
#++
|
573
|
-
|
574
|
-
def self.find_home
|
575
|
-
Dir.home.dup
|
576
|
-
rescue
|
577
|
-
if Gem.win_platform?
|
578
|
-
File.expand_path File.join(ENV['HOMEDRIVE'] || ENV['SystemDrive'], '/')
|
579
|
-
else
|
580
|
-
File.expand_path "/"
|
581
|
-
end
|
582
|
-
end
|
583
|
-
|
584
|
-
private_class_method :find_home
|
585
|
-
|
586
|
-
# TODO: remove in RubyGems 4.0
|
587
|
-
|
588
|
-
##
|
589
|
-
# Zlib::GzipReader wrapper that unzips +data+.
|
590
|
-
|
591
|
-
def self.gunzip(data)
|
592
|
-
Gem::Util.gunzip data
|
593
|
-
end
|
594
|
-
|
595
|
-
class << self
|
596
|
-
extend Gem::Deprecate
|
597
|
-
deprecate :gunzip, "Gem::Util.gunzip", 2018, 12
|
598
|
-
end
|
599
|
-
|
600
|
-
##
|
601
|
-
# Zlib::GzipWriter wrapper that zips +data+.
|
602
|
-
|
603
|
-
def self.gzip(data)
|
604
|
-
Gem::Util.gzip data
|
605
|
-
end
|
606
|
-
|
607
|
-
class << self
|
608
|
-
extend Gem::Deprecate
|
609
|
-
deprecate :gzip, "Gem::Util.gzip", 2018, 12
|
610
|
-
end
|
611
|
-
|
612
|
-
##
|
613
|
-
# A Zlib::Inflate#inflate wrapper
|
614
|
-
|
615
|
-
def self.inflate(data)
|
616
|
-
Gem::Util.inflate data
|
617
|
-
end
|
618
|
-
|
619
|
-
class << self
|
620
|
-
extend Gem::Deprecate
|
621
|
-
deprecate :inflate, "Gem::Util.inflate", 2018, 12
|
622
|
-
end
|
623
|
-
|
624
539
|
##
|
625
540
|
# Top level install helper method. Allows you to install gems interactively:
|
626
541
|
#
|
627
542
|
# % irb
|
628
543
|
# >> Gem.install "minitest"
|
629
|
-
# Fetching: minitest-
|
544
|
+
# Fetching: minitest-5.14.0.gem (100%)
|
630
545
|
# => [#<Gem::Specification:0x1013b4528 @name="minitest", ...>]
|
631
546
|
|
632
547
|
def self.install(name, version = Gem::Requirement.default, *options)
|
633
|
-
|
548
|
+
require_relative "rubygems/dependency_installer"
|
634
549
|
inst = Gem::DependencyInstaller.new(*options)
|
635
550
|
inst.install name, version
|
636
551
|
inst.installed_gems
|
@@ -641,14 +556,12 @@ An Array (#{env.inspect}) was passed in from #{caller[3]}
|
|
641
556
|
# <tt>https://rubygems.org</tt>.
|
642
557
|
|
643
558
|
def self.host
|
644
|
-
# TODO: move to utils
|
645
559
|
@host ||= Gem::DEFAULT_HOST
|
646
560
|
end
|
647
561
|
|
648
562
|
## Set the default RubyGems API host.
|
649
563
|
|
650
564
|
def self.host=(host)
|
651
|
-
# TODO: move to utils
|
652
565
|
@host = host
|
653
566
|
end
|
654
567
|
|
@@ -661,9 +574,27 @@ An Array (#{env.inspect}) was passed in from #{caller[3]}
|
|
661
574
|
return i if path.instance_variable_defined?(:@gem_prelude_index)
|
662
575
|
end
|
663
576
|
|
664
|
-
index = $LOAD_PATH.index RbConfig::CONFIG[
|
577
|
+
index = $LOAD_PATH.index RbConfig::CONFIG["sitelibdir"]
|
665
578
|
|
666
|
-
index
|
579
|
+
index || 0
|
580
|
+
end
|
581
|
+
|
582
|
+
##
|
583
|
+
# The number of paths in the +$LOAD_PATH+ from activated gems. Used to
|
584
|
+
# prioritize +-I+ and +ENV['RUBYLIB']+ entries during +require+.
|
585
|
+
|
586
|
+
def self.activated_gem_paths
|
587
|
+
@activated_gem_paths ||= 0
|
588
|
+
end
|
589
|
+
|
590
|
+
##
|
591
|
+
# Add a list of paths to the $LOAD_PATH at the proper place.
|
592
|
+
|
593
|
+
def self.add_to_load_path(*paths)
|
594
|
+
@activated_gem_paths = activated_gem_paths + paths.size
|
595
|
+
|
596
|
+
# gem directories must come after -I and ENV['RUBYLIB']
|
597
|
+
$LOAD_PATH.insert(Gem.load_path_insert_index, *paths)
|
667
598
|
end
|
668
599
|
|
669
600
|
@yaml_loaded = false
|
@@ -673,37 +604,11 @@ An Array (#{env.inspect}) was passed in from #{caller[3]}
|
|
673
604
|
|
674
605
|
def self.load_yaml
|
675
606
|
return if @yaml_loaded
|
676
|
-
return unless defined?(gem)
|
677
|
-
|
678
|
-
begin
|
679
|
-
gem 'psych', '>= 2.0.0'
|
680
|
-
rescue Gem::LoadError
|
681
|
-
# It's OK if the user does not have the psych gem installed. We will
|
682
|
-
# attempt to require the stdlib version
|
683
|
-
end
|
684
|
-
|
685
|
-
begin
|
686
|
-
# Try requiring the gem version *or* stdlib version of psych.
|
687
|
-
require 'psych'
|
688
|
-
rescue ::LoadError
|
689
|
-
# If we can't load psych, thats fine, go on.
|
690
|
-
else
|
691
|
-
# If 'yaml' has already been required, then we have to
|
692
|
-
# be sure to switch it over to the newly loaded psych.
|
693
|
-
if defined?(YAML::ENGINE) && YAML::ENGINE.yamler != "psych"
|
694
|
-
YAML::ENGINE.yamler = "psych"
|
695
|
-
end
|
696
|
-
|
697
|
-
require 'rubygems/psych_additions'
|
698
|
-
require 'rubygems/psych_tree'
|
699
|
-
end
|
700
607
|
|
701
|
-
require
|
702
|
-
|
608
|
+
require "psych"
|
609
|
+
require_relative "rubygems/psych_tree"
|
703
610
|
|
704
|
-
|
705
|
-
# in our hack to deal with Syck's DefaultKey ugliness.
|
706
|
-
require 'rubygems/syck_hack'
|
611
|
+
require_relative "rubygems/safe_yaml"
|
707
612
|
|
708
613
|
@yaml_loaded = true
|
709
614
|
end
|
@@ -834,9 +739,9 @@ An Array (#{env.inspect}) was passed in from #{caller[3]}
|
|
834
739
|
def self.prefix
|
835
740
|
prefix = File.dirname RUBYGEMS_DIR
|
836
741
|
|
837
|
-
if prefix != File.expand_path(RbConfig::CONFIG[
|
838
|
-
prefix != File.expand_path(RbConfig::CONFIG[
|
839
|
-
|
742
|
+
if prefix != File.expand_path(RbConfig::CONFIG["sitelibdir"]) &&
|
743
|
+
prefix != File.expand_path(RbConfig::CONFIG["libdir"]) &&
|
744
|
+
"lib" == File.basename(RUBYGEMS_DIR)
|
840
745
|
prefix
|
841
746
|
end
|
842
747
|
end
|
@@ -852,40 +757,46 @@ An Array (#{env.inspect}) was passed in from #{caller[3]}
|
|
852
757
|
# Safely read a file in binary mode on all platforms.
|
853
758
|
|
854
759
|
def self.read_binary(path)
|
855
|
-
|
856
|
-
|
857
|
-
f.read
|
760
|
+
open_file(path, "rb+") do |io|
|
761
|
+
io.read
|
858
762
|
end
|
859
|
-
rescue
|
860
|
-
|
861
|
-
|
862
|
-
end
|
863
|
-
rescue Errno::ENOLCK # NFS
|
864
|
-
if Thread.main != Thread.current
|
865
|
-
raise
|
866
|
-
else
|
867
|
-
File.open path, 'rb' do |f|
|
868
|
-
f.read
|
869
|
-
end
|
763
|
+
rescue Errno::EACCES, Errno::EROFS
|
764
|
+
open_file(path, "rb") do |io|
|
765
|
+
io.read
|
870
766
|
end
|
871
767
|
end
|
872
768
|
|
873
769
|
##
|
874
770
|
# Safely write a file in binary mode on all platforms.
|
875
771
|
def self.write_binary(path, data)
|
876
|
-
|
877
|
-
begin
|
878
|
-
io.flock(File::LOCK_EX)
|
879
|
-
rescue *WRITE_BINARY_ERRORS
|
880
|
-
end
|
772
|
+
open_file(path, "wb") do |io|
|
881
773
|
io.write data
|
882
774
|
end
|
775
|
+
rescue Errno::ENOSPC
|
776
|
+
# If we ran out of space but the file exists, it's *guaranteed* to be corrupted.
|
777
|
+
File.delete(path) if File.exist?(path)
|
778
|
+
raise
|
779
|
+
end
|
780
|
+
|
781
|
+
##
|
782
|
+
# Open a file with given flags, and on Windows protect access with flock
|
783
|
+
|
784
|
+
def self.open_file(path, flags, &block)
|
785
|
+
File.open(path, flags) do |io|
|
786
|
+
if !java_platform? && win_platform?
|
787
|
+
begin
|
788
|
+
io.flock(File::LOCK_EX)
|
789
|
+
rescue Errno::ENOSYS, Errno::ENOTSUP
|
790
|
+
end
|
791
|
+
end
|
792
|
+
yield io
|
793
|
+
end
|
883
794
|
rescue Errno::ENOLCK # NFS
|
884
795
|
if Thread.main != Thread.current
|
885
796
|
raise
|
886
797
|
else
|
887
|
-
open(path,
|
888
|
-
io
|
798
|
+
File.open(path, flags) do |io|
|
799
|
+
yield io
|
889
800
|
end
|
890
801
|
end
|
891
802
|
end
|
@@ -895,8 +806,7 @@ An Array (#{env.inspect}) was passed in from #{caller[3]}
|
|
895
806
|
|
896
807
|
def self.ruby
|
897
808
|
if @ruby.nil?
|
898
|
-
@ruby =
|
899
|
-
"#{RbConfig::CONFIG['ruby_install_name']}#{RbConfig::CONFIG['EXEEXT']}")
|
809
|
+
@ruby = RbConfig.ruby
|
900
810
|
|
901
811
|
@ruby = "\"#{@ruby}\"" if @ruby =~ /\s/
|
902
812
|
end
|
@@ -908,13 +818,13 @@ An Array (#{env.inspect}) was passed in from #{caller[3]}
|
|
908
818
|
# Returns a String containing the API compatibility version of Ruby
|
909
819
|
|
910
820
|
def self.ruby_api_version
|
911
|
-
@ruby_api_version ||= RbConfig::CONFIG[
|
821
|
+
@ruby_api_version ||= RbConfig::CONFIG["ruby_version"].dup
|
912
822
|
end
|
913
823
|
|
914
824
|
def self.env_requirement(gem_name)
|
915
825
|
@env_requirements_by_name ||= {}
|
916
826
|
@env_requirements_by_name[gem_name] ||= begin
|
917
|
-
req = ENV["GEM_REQUIREMENT_#{gem_name.upcase}"] ||
|
827
|
+
req = ENV["GEM_REQUIREMENT_#{gem_name.upcase}"] || ">= 0".freeze
|
918
828
|
Gem::Requirement.create(req)
|
919
829
|
end
|
920
830
|
end
|
@@ -928,7 +838,7 @@ An Array (#{env.inspect}) was passed in from #{caller[3]}
|
|
928
838
|
fetcher = Gem::SpecFetcher.fetcher
|
929
839
|
spec_tuples, = fetcher.spec_for_dependency dependency
|
930
840
|
|
931
|
-
spec, = spec_tuples.
|
841
|
+
spec, = spec_tuples.last
|
932
842
|
|
933
843
|
spec
|
934
844
|
end
|
@@ -937,8 +847,8 @@ An Array (#{env.inspect}) was passed in from #{caller[3]}
|
|
937
847
|
# Returns the latest release version of RubyGems.
|
938
848
|
|
939
849
|
def self.latest_rubygems_version
|
940
|
-
latest_version_for(
|
941
|
-
raise
|
850
|
+
latest_version_for("rubygems-update") ||
|
851
|
+
raise("Can't find 'rubygems-update' in any repo. Check `gem source list`.")
|
942
852
|
end
|
943
853
|
|
944
854
|
##
|
@@ -946,7 +856,7 @@ An Array (#{env.inspect}) was passed in from #{caller[3]}
|
|
946
856
|
|
947
857
|
def self.latest_version_for(name)
|
948
858
|
spec = latest_spec_for name
|
949
|
-
spec
|
859
|
+
spec && spec.version
|
950
860
|
end
|
951
861
|
|
952
862
|
##
|
@@ -956,9 +866,7 @@ An Array (#{env.inspect}) was passed in from #{caller[3]}
|
|
956
866
|
return @ruby_version if defined? @ruby_version
|
957
867
|
version = RUBY_VERSION.dup
|
958
868
|
|
959
|
-
|
960
|
-
version << ".#{RUBY_PATCHLEVEL}"
|
961
|
-
elsif defined?(RUBY_DESCRIPTION)
|
869
|
+
unless defined?(RUBY_PATCHLEVEL) && RUBY_PATCHLEVEL != -1
|
962
870
|
if RUBY_ENGINE == "ruby"
|
963
871
|
desc = RUBY_DESCRIPTION[/\Aruby #{Regexp.quote(RUBY_VERSION)}([^ ]+) /, 1]
|
964
872
|
else
|
@@ -1009,17 +917,38 @@ An Array (#{env.inspect}) was passed in from #{caller[3]}
|
|
1009
917
|
@suffix_pattern ||= "{#{suffixes.join(',')}}"
|
1010
918
|
end
|
1011
919
|
|
920
|
+
##
|
921
|
+
# Regexp for require-able path suffixes.
|
922
|
+
|
923
|
+
def self.suffix_regexp
|
924
|
+
@suffix_regexp ||= /#{Regexp.union(suffixes)}\z/
|
925
|
+
end
|
926
|
+
|
927
|
+
##
|
928
|
+
# Glob pattern for require-able plugin suffixes.
|
929
|
+
|
930
|
+
def self.plugin_suffix_pattern
|
931
|
+
@plugin_suffix_pattern ||= "_plugin#{suffix_pattern}"
|
932
|
+
end
|
933
|
+
|
934
|
+
##
|
935
|
+
# Regexp for require-able plugin suffixes.
|
936
|
+
|
937
|
+
def self.plugin_suffix_regexp
|
938
|
+
@plugin_suffix_regexp ||= /_plugin#{suffix_regexp}\z/
|
939
|
+
end
|
940
|
+
|
1012
941
|
##
|
1013
942
|
# Suffixes for require-able paths.
|
1014
943
|
|
1015
944
|
def self.suffixes
|
1016
|
-
@suffixes ||= [
|
1017
|
-
|
1018
|
-
*%w
|
945
|
+
@suffixes ||= ["",
|
946
|
+
".rb",
|
947
|
+
*%w[DLEXT DLEXT2].map do |key|
|
1019
948
|
val = RbConfig::CONFIG[key]
|
1020
|
-
next unless val
|
949
|
+
next unless val && !val.empty?
|
1021
950
|
".#{val}"
|
1022
|
-
|
951
|
+
end,
|
1023
952
|
].compact.uniq
|
1024
953
|
end
|
1025
954
|
|
@@ -1043,7 +972,7 @@ An Array (#{env.inspect}) was passed in from #{caller[3]}
|
|
1043
972
|
# Lazily loads DefaultUserInteraction and returns the default UI.
|
1044
973
|
|
1045
974
|
def self.ui
|
1046
|
-
|
975
|
+
require_relative "rubygems/user_interaction"
|
1047
976
|
|
1048
977
|
Gem::DefaultUserInteraction.ui
|
1049
978
|
end
|
@@ -1056,35 +985,41 @@ An Array (#{env.inspect}) was passed in from #{caller[3]}
|
|
1056
985
|
paths.flatten!
|
1057
986
|
paths.compact!
|
1058
987
|
hash = { "GEM_HOME" => home, "GEM_PATH" => paths.empty? ? home : paths.join(File::PATH_SEPARATOR) }
|
1059
|
-
hash.delete_if {
|
988
|
+
hash.delete_if {|_, v| v.nil? }
|
1060
989
|
self.paths = hash
|
1061
990
|
end
|
1062
991
|
|
1063
|
-
##
|
1064
|
-
# The home directory for the user.
|
1065
|
-
|
1066
|
-
def self.user_home
|
1067
|
-
@user_home ||= find_home.untaint
|
1068
|
-
end
|
1069
|
-
|
1070
992
|
##
|
1071
993
|
# Is this a windows platform?
|
1072
994
|
|
1073
995
|
def self.win_platform?
|
1074
996
|
if @@win_platform.nil?
|
1075
|
-
ruby_platform = RbConfig::CONFIG[
|
1076
|
-
@@win_platform = !!WIN_PATTERNS.find {
|
997
|
+
ruby_platform = RbConfig::CONFIG["host_os"]
|
998
|
+
@@win_platform = !!WIN_PATTERNS.find {|r| ruby_platform =~ r }
|
1077
999
|
end
|
1078
1000
|
|
1079
1001
|
@@win_platform
|
1080
1002
|
end
|
1081
1003
|
|
1004
|
+
##
|
1005
|
+
# Is this a java platform?
|
1006
|
+
|
1007
|
+
def self.java_platform?
|
1008
|
+
RUBY_PLATFORM == "java"
|
1009
|
+
end
|
1010
|
+
|
1011
|
+
##
|
1012
|
+
# Is this platform Solaris?
|
1013
|
+
|
1014
|
+
def self.solaris_platform?
|
1015
|
+
RUBY_PLATFORM.include?("solaris")
|
1016
|
+
end
|
1017
|
+
|
1082
1018
|
##
|
1083
1019
|
# Load +plugins+ as Ruby files
|
1084
1020
|
|
1085
1021
|
def self.load_plugin_files(plugins) # :nodoc:
|
1086
1022
|
plugins.each do |plugin|
|
1087
|
-
|
1088
1023
|
# Skip older versions of the GemCutter plugin: Its commands are in
|
1089
1024
|
# RubyGems proper now.
|
1090
1025
|
|
@@ -1100,15 +1035,11 @@ An Array (#{env.inspect}) was passed in from #{caller[3]}
|
|
1100
1035
|
end
|
1101
1036
|
|
1102
1037
|
##
|
1103
|
-
# Find
|
1104
|
-
# them
|
1038
|
+
# Find rubygems plugin files in the standard location and load them
|
1105
1039
|
|
1106
1040
|
def self.load_plugins
|
1107
|
-
|
1108
|
-
|
1109
|
-
load_plugin_files find_files('rubygems_plugin', false)
|
1110
|
-
else
|
1111
|
-
load_plugin_files find_latest_files('rubygems_plugin', false)
|
1041
|
+
Gem.path.each do |gem_path|
|
1042
|
+
load_plugin_files Gem::Util.glob_files_in_dir("*#{Gem.plugin_suffix_pattern}", plugindir(gem_path))
|
1112
1043
|
end
|
1113
1044
|
end
|
1114
1045
|
|
@@ -1116,19 +1047,7 @@ An Array (#{env.inspect}) was passed in from #{caller[3]}
|
|
1116
1047
|
# Find all 'rubygems_plugin' files in $LOAD_PATH and load them
|
1117
1048
|
|
1118
1049
|
def self.load_env_plugins
|
1119
|
-
|
1120
|
-
|
1121
|
-
files = []
|
1122
|
-
glob = "#{path}#{Gem.suffix_pattern}"
|
1123
|
-
$LOAD_PATH.each do |load_path|
|
1124
|
-
globbed = Gem::Util.glob_files_in_dir(glob, load_path)
|
1125
|
-
|
1126
|
-
globbed.each do |load_path_file|
|
1127
|
-
files << load_path_file if File.file?(load_path_file.untaint)
|
1128
|
-
end
|
1129
|
-
end
|
1130
|
-
|
1131
|
-
load_plugin_files files
|
1050
|
+
load_plugin_files find_files_from_load_path("rubygems_plugin")
|
1132
1051
|
end
|
1133
1052
|
|
1134
1053
|
##
|
@@ -1154,14 +1073,14 @@ An Array (#{env.inspect}) was passed in from #{caller[3]}
|
|
1154
1073
|
def self.use_gemdeps(path = nil)
|
1155
1074
|
raise_exception = path
|
1156
1075
|
|
1157
|
-
path ||= ENV[
|
1076
|
+
path ||= ENV["RUBYGEMS_GEMDEPS"]
|
1158
1077
|
return unless path
|
1159
1078
|
|
1160
1079
|
path = path.dup
|
1161
1080
|
|
1162
1081
|
if path == "-"
|
1163
1082
|
Gem::Util.traverse_parents Dir.pwd do |directory|
|
1164
|
-
dep_file = GEM_DEP_FILES.find {
|
1083
|
+
dep_file = GEM_DEP_FILES.find {|f| File.file?(f) }
|
1165
1084
|
|
1166
1085
|
next unless dep_file
|
1167
1086
|
|
@@ -1170,7 +1089,7 @@ An Array (#{env.inspect}) was passed in from #{caller[3]}
|
|
1170
1089
|
end
|
1171
1090
|
end
|
1172
1091
|
|
1173
|
-
path.
|
1092
|
+
path.tap(&Gem::UNTAINT)
|
1174
1093
|
|
1175
1094
|
unless File.file? path
|
1176
1095
|
return unless raise_exception
|
@@ -1178,52 +1097,83 @@ An Array (#{env.inspect}) was passed in from #{caller[3]}
|
|
1178
1097
|
raise ArgumentError, "Unable to find gem dependencies file at #{path}"
|
1179
1098
|
end
|
1180
1099
|
|
1181
|
-
|
1182
|
-
|
1183
|
-
|
1184
|
-
|
1100
|
+
ENV["BUNDLE_GEMFILE"] ||= File.expand_path(path)
|
1101
|
+
require_relative "rubygems/user_interaction"
|
1102
|
+
require "bundler"
|
1103
|
+
begin
|
1185
1104
|
Gem::DefaultUserInteraction.use_ui(ui) do
|
1186
|
-
|
1187
|
-
|
1188
|
-
|
1189
|
-
|
1190
|
-
|
1191
|
-
|
1192
|
-
|
1193
|
-
|
1194
|
-
rs = Gem::RequestSet.new
|
1195
|
-
@gemdeps = rs.load_gemdeps path
|
1196
|
-
|
1197
|
-
rs.resolve_current.map do |s|
|
1198
|
-
s.full_spec.tap(&:activate)
|
1105
|
+
begin
|
1106
|
+
Bundler.ui.silence do
|
1107
|
+
@gemdeps = Bundler.setup
|
1108
|
+
end
|
1109
|
+
ensure
|
1110
|
+
Gem::DefaultUserInteraction.ui.close
|
1111
|
+
end
|
1199
1112
|
end
|
1200
|
-
|
1201
|
-
end
|
1202
|
-
rescue => e
|
1203
|
-
case e
|
1204
|
-
when Gem::LoadError, Gem::UnsatisfiableDependencyError, (defined?(Bundler::GemNotFound) ? Bundler::GemNotFound : Gem::LoadError)
|
1113
|
+
rescue Bundler::BundlerError => e
|
1205
1114
|
warn e.message
|
1206
|
-
warn "You may need to `
|
1115
|
+
warn "You may need to `bundle install` to install missing gems"
|
1207
1116
|
warn ""
|
1208
|
-
else
|
1209
|
-
raise
|
1210
1117
|
end
|
1211
1118
|
end
|
1212
1119
|
|
1213
|
-
|
1214
|
-
|
1215
|
-
|
1120
|
+
##
|
1121
|
+
# If the SOURCE_DATE_EPOCH environment variable is set, returns it's value.
|
1122
|
+
# Otherwise, returns the time that +Gem.source_date_epoch_string+ was
|
1123
|
+
# first called in the same format as SOURCE_DATE_EPOCH.
|
1124
|
+
#
|
1125
|
+
# NOTE(@duckinator): The implementation is a tad weird because we want to:
|
1126
|
+
# 1. Make builds reproducible by default, by having this function always
|
1127
|
+
# return the same result during a given run.
|
1128
|
+
# 2. Allow changing ENV['SOURCE_DATE_EPOCH'] at runtime, since multiple
|
1129
|
+
# tests that set this variable will be run in a single process.
|
1130
|
+
#
|
1131
|
+
# If you simplify this function and a lot of tests fail, that is likely
|
1132
|
+
# due to #2 above.
|
1133
|
+
#
|
1134
|
+
# Details on SOURCE_DATE_EPOCH:
|
1135
|
+
# https://reproducible-builds.org/specs/source-date-epoch/
|
1136
|
+
|
1137
|
+
def self.source_date_epoch_string
|
1138
|
+
# The value used if $SOURCE_DATE_EPOCH is not set.
|
1139
|
+
@default_source_date_epoch ||= Time.now.to_i.to_s
|
1140
|
+
|
1141
|
+
specified_epoch = ENV["SOURCE_DATE_EPOCH"]
|
1142
|
+
|
1143
|
+
# If it's empty or just whitespace, treat it like it wasn't set at all.
|
1144
|
+
specified_epoch = nil if !specified_epoch.nil? && specified_epoch.strip.empty?
|
1216
1145
|
|
1217
|
-
|
1146
|
+
epoch = specified_epoch || @default_source_date_epoch
|
1218
1147
|
|
1219
|
-
|
1220
|
-
|
1148
|
+
epoch.strip
|
1149
|
+
end
|
1150
|
+
|
1151
|
+
##
|
1152
|
+
# Returns the value of Gem.source_date_epoch_string, as a Time object.
|
1153
|
+
#
|
1154
|
+
# This is used throughout RubyGems for enabling reproducible builds.
|
1155
|
+
|
1156
|
+
def self.source_date_epoch
|
1157
|
+
Time.at(self.source_date_epoch_string.to_i).utc.freeze
|
1221
1158
|
end
|
1222
1159
|
|
1223
1160
|
# FIX: Almost everywhere else we use the `def self.` way of defining class
|
1224
1161
|
# methods, and then we switch over to `class << self` here. Pick one or the
|
1225
1162
|
# other.
|
1226
1163
|
class << self
|
1164
|
+
##
|
1165
|
+
# RubyGems distributors (like operating system package managers) can
|
1166
|
+
# disable RubyGems update by setting this to error message printed to
|
1167
|
+
# end-users on gem update --system instead of actual update.
|
1168
|
+
|
1169
|
+
attr_accessor :disable_system_update_message
|
1170
|
+
|
1171
|
+
##
|
1172
|
+
# Whether RubyGems should enhance builtin `require` to automatically
|
1173
|
+
# check whether the path required is present in installed gems, and
|
1174
|
+
# automatically activate them and add them to `$LOAD_PATH`.
|
1175
|
+
|
1176
|
+
attr_accessor :discover_gems_on_require
|
1227
1177
|
|
1228
1178
|
##
|
1229
1179
|
# Hash of loaded Gem::Specification keyed by name
|
@@ -1249,23 +1199,24 @@ An Array (#{env.inspect}) was passed in from #{caller[3]}
|
|
1249
1199
|
#
|
1250
1200
|
|
1251
1201
|
def register_default_spec(spec)
|
1252
|
-
|
1202
|
+
extended_require_paths = spec.require_paths.map {|f| f + "/" }
|
1203
|
+
new_format = extended_require_paths.any? {|path| spec.files.any? {|f| f.start_with? path } }
|
1253
1204
|
|
1254
1205
|
if new_format
|
1255
|
-
prefix_group =
|
1206
|
+
prefix_group = extended_require_paths.join("|")
|
1256
1207
|
prefix_pattern = /^(#{prefix_group})/
|
1257
1208
|
end
|
1258
1209
|
|
1259
|
-
suffix_pattern = /#{Regexp.union(Gem.suffixes)}\z/
|
1260
|
-
|
1261
1210
|
spec.files.each do |file|
|
1262
1211
|
if new_format
|
1263
1212
|
file = file.sub(prefix_pattern, "")
|
1264
1213
|
next unless $~
|
1265
1214
|
end
|
1266
1215
|
|
1216
|
+
spec.activate if already_loaded?(file)
|
1217
|
+
|
1267
1218
|
@path_to_default_spec_map[file] = spec
|
1268
|
-
@path_to_default_spec_map[file.sub(
|
1219
|
+
@path_to_default_spec_map[file.sub(suffix_regexp, "")] = spec
|
1269
1220
|
end
|
1270
1221
|
end
|
1271
1222
|
|
@@ -1273,17 +1224,8 @@ An Array (#{env.inspect}) was passed in from #{caller[3]}
|
|
1273
1224
|
# Find a Gem::Specification of default gem from +path+
|
1274
1225
|
|
1275
1226
|
def find_unresolved_default_spec(path)
|
1276
|
-
@path_to_default_spec_map[path]
|
1277
|
-
|
1278
|
-
|
1279
|
-
##
|
1280
|
-
# Remove needless Gem::Specification of default gem from
|
1281
|
-
# unresolved default gem list
|
1282
|
-
|
1283
|
-
def remove_unresolved_default_spec(spec)
|
1284
|
-
spec.files.each do |file|
|
1285
|
-
@path_to_default_spec_map.delete(file)
|
1286
|
-
end
|
1227
|
+
default_spec = @path_to_default_spec_map[path]
|
1228
|
+
return default_spec if default_spec && loaded_specs[default_spec.name] != default_spec
|
1287
1229
|
end
|
1288
1230
|
|
1289
1231
|
##
|
@@ -1337,6 +1279,23 @@ An Array (#{env.inspect}) was passed in from #{caller[3]}
|
|
1337
1279
|
# work
|
1338
1280
|
|
1339
1281
|
attr_reader :pre_uninstall_hooks
|
1282
|
+
|
1283
|
+
private
|
1284
|
+
|
1285
|
+
def already_loaded?(file)
|
1286
|
+
$LOADED_FEATURES.any? do |feature_path|
|
1287
|
+
feature_path.end_with?(file) && default_gem_load_paths.any? {|load_path_entry| feature_path == "#{load_path_entry}/#{file}" }
|
1288
|
+
end
|
1289
|
+
end
|
1290
|
+
|
1291
|
+
def default_gem_load_paths
|
1292
|
+
@default_gem_load_paths ||= $LOAD_PATH[load_path_insert_index..-1].map do |lp|
|
1293
|
+
expanded = File.expand_path(lp)
|
1294
|
+
next expanded unless File.exist?(expanded)
|
1295
|
+
|
1296
|
+
File.realpath(expanded)
|
1297
|
+
end
|
1298
|
+
end
|
1340
1299
|
end
|
1341
1300
|
|
1342
1301
|
##
|
@@ -1344,54 +1303,68 @@ An Array (#{env.inspect}) was passed in from #{caller[3]}
|
|
1344
1303
|
|
1345
1304
|
MARSHAL_SPEC_DIR = "quick/Marshal.#{Gem.marshal_version}/".freeze
|
1346
1305
|
|
1347
|
-
autoload :
|
1348
|
-
autoload :
|
1349
|
-
autoload :
|
1350
|
-
autoload :
|
1351
|
-
autoload :
|
1352
|
-
autoload :
|
1353
|
-
autoload :PathSupport,
|
1354
|
-
autoload :
|
1355
|
-
autoload :
|
1356
|
-
autoload :
|
1357
|
-
autoload :
|
1358
|
-
autoload :
|
1359
|
-
autoload :
|
1360
|
-
autoload :
|
1361
|
-
autoload :
|
1362
|
-
autoload :
|
1363
|
-
autoload :Version, 'rubygems/version'
|
1364
|
-
|
1365
|
-
require "rubygems/specification"
|
1306
|
+
autoload :ConfigFile, File.expand_path("rubygems/config_file", __dir__)
|
1307
|
+
autoload :Dependency, File.expand_path("rubygems/dependency", __dir__)
|
1308
|
+
autoload :DependencyList, File.expand_path("rubygems/dependency_list", __dir__)
|
1309
|
+
autoload :Installer, File.expand_path("rubygems/installer", __dir__)
|
1310
|
+
autoload :Licenses, File.expand_path("rubygems/util/licenses", __dir__)
|
1311
|
+
autoload :NameTuple, File.expand_path("rubygems/name_tuple", __dir__)
|
1312
|
+
autoload :PathSupport, File.expand_path("rubygems/path_support", __dir__)
|
1313
|
+
autoload :RequestSet, File.expand_path("rubygems/request_set", __dir__)
|
1314
|
+
autoload :Requirement, File.expand_path("rubygems/requirement", __dir__)
|
1315
|
+
autoload :Resolver, File.expand_path("rubygems/resolver", __dir__)
|
1316
|
+
autoload :Source, File.expand_path("rubygems/source", __dir__)
|
1317
|
+
autoload :SourceList, File.expand_path("rubygems/source_list", __dir__)
|
1318
|
+
autoload :SpecFetcher, File.expand_path("rubygems/spec_fetcher", __dir__)
|
1319
|
+
autoload :SpecificationPolicy, File.expand_path("rubygems/specification_policy", __dir__)
|
1320
|
+
autoload :Util, File.expand_path("rubygems/util", __dir__)
|
1321
|
+
autoload :Version, File.expand_path("rubygems/version", __dir__)
|
1366
1322
|
end
|
1367
1323
|
|
1368
|
-
|
1324
|
+
require_relative "rubygems/exceptions"
|
1325
|
+
require_relative "rubygems/specification"
|
1369
1326
|
|
1370
1327
|
# REFACTOR: This should be pulled out into some kind of hacks file.
|
1371
1328
|
begin
|
1372
1329
|
##
|
1373
1330
|
# Defaults the operating system (or packager) wants to provide for RubyGems.
|
1374
1331
|
|
1375
|
-
require
|
1332
|
+
require "rubygems/defaults/operating_system"
|
1376
1333
|
rescue LoadError
|
1334
|
+
# Ignored
|
1335
|
+
rescue StandardError => e
|
1336
|
+
path = e.backtrace_locations.reverse.find {|l| l.path.end_with?("rubygems/defaults/operating_system.rb") }.path
|
1337
|
+
msg = "#{e.message}\n" \
|
1338
|
+
"Loading the #{path} file caused an error. " \
|
1339
|
+
"This file is owned by your OS, not by rubygems upstream. " \
|
1340
|
+
"Please find out which OS package this file belongs to and follow the guidelines from your OS to report " \
|
1341
|
+
"the problem and ask for help."
|
1342
|
+
raise e.class, msg
|
1377
1343
|
end
|
1378
1344
|
|
1379
|
-
|
1380
|
-
|
1381
|
-
|
1382
|
-
# Defaults the Ruby implementation wants to provide for RubyGems
|
1345
|
+
begin
|
1346
|
+
##
|
1347
|
+
# Defaults the Ruby implementation wants to provide for RubyGems
|
1383
1348
|
|
1384
|
-
|
1385
|
-
|
1386
|
-
end
|
1349
|
+
require "rubygems/defaults/#{RUBY_ENGINE}"
|
1350
|
+
rescue LoadError
|
1387
1351
|
end
|
1388
1352
|
|
1389
1353
|
##
|
1390
1354
|
# Loads the default specs.
|
1391
1355
|
Gem::Specification.load_defaults
|
1392
1356
|
|
1393
|
-
|
1394
|
-
|
1395
|
-
|
1357
|
+
require_relative "rubygems/core_ext/kernel_gem"
|
1358
|
+
|
1359
|
+
path = File.join(__dir__, "rubygems/core_ext/kernel_require.rb")
|
1360
|
+
# When https://bugs.ruby-lang.org/issues/17259 is available, there is no need to override Kernel#warn
|
1361
|
+
if RUBY_ENGINE == "truffleruby" ||
|
1362
|
+
(RUBY_ENGINE == "ruby" && RUBY_VERSION >= "3.0")
|
1363
|
+
file = "<internal:#{path}>"
|
1364
|
+
else
|
1365
|
+
require_relative "rubygems/core_ext/kernel_warn"
|
1366
|
+
file = path
|
1367
|
+
end
|
1368
|
+
eval File.read(path), nil, file
|
1396
1369
|
|
1397
|
-
|
1370
|
+
require ENV["BUNDLER_SETUP"] if ENV["BUNDLER_SETUP"] && !defined?(Bundler)
|