rubygems-update 2.6.0 → 3.5.4
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 +5 -5
- data/CHANGELOG.md +5941 -0
- data/CODE_OF_CONDUCT.md +76 -35
- data/CONTRIBUTING.md +231 -0
- data/MAINTAINERS.txt +8 -0
- data/Manifest.txt +439 -216
- data/POLICIES.md +135 -0
- data/README.md +112 -0
- data/UPGRADING.md +15 -0
- data/bundler/CHANGELOG.md +4753 -0
- data/bundler/LICENSE.md +22 -0
- data/bundler/README.md +58 -0
- data/bundler/UPGRADING.md +222 -0
- data/bundler/bundler.gemspec +46 -0
- data/bundler/exe/bundle +29 -0
- data/bundler/exe/bundler +4 -0
- data/bundler/lib/bundler/.document +1 -0
- data/bundler/lib/bundler/build_metadata.rb +45 -0
- data/bundler/lib/bundler/capistrano.rb +22 -0
- data/bundler/lib/bundler/checksum.rb +254 -0
- data/bundler/lib/bundler/ci_detector.rb +75 -0
- data/bundler/lib/bundler/cli/add.rb +47 -0
- data/bundler/lib/bundler/cli/binstubs.rb +57 -0
- data/bundler/lib/bundler/cli/cache.rb +43 -0
- data/bundler/lib/bundler/cli/check.rb +40 -0
- data/bundler/lib/bundler/cli/clean.rb +25 -0
- data/bundler/lib/bundler/cli/common.rb +138 -0
- data/bundler/lib/bundler/cli/config.rb +204 -0
- data/bundler/lib/bundler/cli/console.rb +44 -0
- data/bundler/lib/bundler/cli/doctor.rb +157 -0
- data/bundler/lib/bundler/cli/exec.rb +88 -0
- data/bundler/lib/bundler/cli/fund.rb +36 -0
- data/bundler/lib/bundler/cli/gem.rb +471 -0
- data/bundler/lib/bundler/cli/info.rb +83 -0
- data/bundler/lib/bundler/cli/init.rb +51 -0
- data/bundler/lib/bundler/cli/inject.rb +60 -0
- data/bundler/lib/bundler/cli/install.rb +190 -0
- data/bundler/lib/bundler/cli/issue.rb +41 -0
- data/bundler/lib/bundler/cli/list.rb +66 -0
- data/bundler/lib/bundler/cli/lock.rb +73 -0
- data/bundler/lib/bundler/cli/open.rb +29 -0
- data/bundler/lib/bundler/cli/outdated.rb +297 -0
- data/bundler/lib/bundler/cli/platform.rb +48 -0
- data/bundler/lib/bundler/cli/plugin.rb +34 -0
- data/bundler/lib/bundler/cli/pristine.rb +60 -0
- data/bundler/lib/bundler/cli/remove.rb +17 -0
- data/bundler/lib/bundler/cli/show.rb +75 -0
- data/bundler/lib/bundler/cli/update.rb +123 -0
- data/bundler/lib/bundler/cli/viz.rb +31 -0
- data/bundler/lib/bundler/cli.rb +846 -0
- data/bundler/lib/bundler/compact_index_client/cache.rb +121 -0
- data/bundler/lib/bundler/compact_index_client/cache_file.rb +153 -0
- data/bundler/lib/bundler/compact_index_client/gem_parser.rb +32 -0
- data/bundler/lib/bundler/compact_index_client/updater.rb +115 -0
- data/bundler/lib/bundler/compact_index_client.rb +126 -0
- data/bundler/lib/bundler/constants.rb +7 -0
- data/bundler/lib/bundler/current_ruby.rb +92 -0
- data/bundler/lib/bundler/definition.rb +1015 -0
- data/bundler/lib/bundler/dependency.rb +105 -0
- data/bundler/lib/bundler/deployment.rb +69 -0
- data/bundler/lib/bundler/deprecate.rb +44 -0
- data/bundler/lib/bundler/digest.rb +71 -0
- data/bundler/lib/bundler/dsl.rb +604 -0
- data/bundler/lib/bundler/endpoint_specification.rb +147 -0
- data/bundler/lib/bundler/env.rb +148 -0
- data/bundler/lib/bundler/environment_preserver.rb +86 -0
- data/bundler/lib/bundler/errors.rb +233 -0
- data/bundler/lib/bundler/feature_flag.rb +53 -0
- data/bundler/lib/bundler/fetcher/base.rb +52 -0
- data/bundler/lib/bundler/fetcher/compact_index.rb +129 -0
- data/bundler/lib/bundler/fetcher/dependency.rb +78 -0
- data/bundler/lib/bundler/fetcher/downloader.rb +91 -0
- data/bundler/lib/bundler/fetcher/gem_remote_fetcher.rb +16 -0
- data/bundler/lib/bundler/fetcher/index.rb +25 -0
- data/bundler/lib/bundler/fetcher.rb +324 -0
- data/bundler/lib/bundler/force_platform.rb +18 -0
- data/bundler/lib/bundler/friendly_errors.rb +126 -0
- data/bundler/lib/bundler/gem_helper.rb +237 -0
- data/bundler/lib/bundler/gem_helpers.rb +127 -0
- data/bundler/lib/bundler/gem_tasks.rb +7 -0
- data/bundler/lib/bundler/gem_version_promoter.rb +145 -0
- data/bundler/lib/bundler/graph.rb +152 -0
- data/bundler/lib/bundler/index.rb +205 -0
- data/bundler/lib/bundler/injector.rb +287 -0
- data/bundler/lib/bundler/inline.rb +73 -0
- data/bundler/lib/bundler/installer/gem_installer.rb +84 -0
- data/bundler/lib/bundler/installer/parallel_installer.rb +202 -0
- data/bundler/lib/bundler/installer/standalone.rb +116 -0
- data/bundler/lib/bundler/installer.rb +267 -0
- data/bundler/lib/bundler/lazy_specification.rb +172 -0
- data/bundler/lib/bundler/lockfile_generator.rb +104 -0
- data/bundler/lib/bundler/lockfile_parser.rb +289 -0
- data/bundler/lib/bundler/man/.document +1 -0
- data/bundler/lib/bundler/man/bundle-add.1 +59 -0
- data/bundler/lib/bundler/man/bundle-add.1.ronn +58 -0
- data/bundler/lib/bundler/man/bundle-binstubs.1 +30 -0
- data/bundler/lib/bundler/man/bundle-binstubs.1.ronn +41 -0
- data/bundler/lib/bundler/man/bundle-cache.1 +40 -0
- data/bundler/lib/bundler/man/bundle-cache.1.ronn +79 -0
- data/bundler/lib/bundler/man/bundle-check.1 +22 -0
- data/bundler/lib/bundler/man/bundle-check.1.ronn +26 -0
- data/bundler/lib/bundler/man/bundle-clean.1 +17 -0
- data/bundler/lib/bundler/man/bundle-clean.1.ronn +18 -0
- data/bundler/lib/bundler/man/bundle-config.1 +321 -0
- data/bundler/lib/bundler/man/bundle-config.1.ronn +411 -0
- data/bundler/lib/bundler/man/bundle-console.1 +35 -0
- data/bundler/lib/bundler/man/bundle-console.1.ronn +44 -0
- data/bundler/lib/bundler/man/bundle-doctor.1 +30 -0
- data/bundler/lib/bundler/man/bundle-doctor.1.ronn +33 -0
- data/bundler/lib/bundler/man/bundle-exec.1 +104 -0
- data/bundler/lib/bundler/man/bundle-exec.1.ronn +151 -0
- data/bundler/lib/bundler/man/bundle-gem.1 +69 -0
- data/bundler/lib/bundler/man/bundle-gem.1.ronn +117 -0
- data/bundler/lib/bundler/man/bundle-help.1 +9 -0
- data/bundler/lib/bundler/man/bundle-help.1.ronn +12 -0
- data/bundler/lib/bundler/man/bundle-info.1 +14 -0
- data/bundler/lib/bundler/man/bundle-info.1.ronn +17 -0
- data/bundler/lib/bundler/man/bundle-init.1 +20 -0
- data/bundler/lib/bundler/man/bundle-init.1.ronn +31 -0
- data/bundler/lib/bundler/man/bundle-inject.1 +23 -0
- data/bundler/lib/bundler/man/bundle-inject.1.ronn +24 -0
- data/bundler/lib/bundler/man/bundle-install.1 +215 -0
- data/bundler/lib/bundler/man/bundle-install.1.ronn +383 -0
- data/bundler/lib/bundler/man/bundle-list.1 +35 -0
- data/bundler/lib/bundler/man/bundle-list.1.ronn +33 -0
- data/bundler/lib/bundler/man/bundle-lock.1 +60 -0
- data/bundler/lib/bundler/man/bundle-lock.1.ronn +94 -0
- data/bundler/lib/bundler/man/bundle-open.1 +32 -0
- data/bundler/lib/bundler/man/bundle-open.1.ronn +27 -0
- data/bundler/lib/bundler/man/bundle-outdated.1 +100 -0
- data/bundler/lib/bundler/man/bundle-outdated.1.ronn +106 -0
- data/bundler/lib/bundler/man/bundle-platform.1 +49 -0
- data/bundler/lib/bundler/man/bundle-platform.1.ronn +49 -0
- data/bundler/lib/bundler/man/bundle-plugin.1 +55 -0
- data/bundler/lib/bundler/man/bundle-plugin.1.ronn +59 -0
- data/bundler/lib/bundler/man/bundle-pristine.1 +23 -0
- data/bundler/lib/bundler/man/bundle-pristine.1.ronn +34 -0
- data/bundler/lib/bundler/man/bundle-remove.1 +21 -0
- data/bundler/lib/bundler/man/bundle-remove.1.ronn +23 -0
- data/bundler/lib/bundler/man/bundle-show.1 +16 -0
- data/bundler/lib/bundler/man/bundle-show.1.ronn +21 -0
- data/bundler/lib/bundler/man/bundle-update.1 +275 -0
- data/bundler/lib/bundler/man/bundle-update.1.ronn +351 -0
- data/bundler/lib/bundler/man/bundle-version.1 +22 -0
- data/bundler/lib/bundler/man/bundle-version.1.ronn +24 -0
- data/bundler/lib/bundler/man/bundle-viz.1 +30 -0
- data/bundler/lib/bundler/man/bundle-viz.1.ronn +32 -0
- data/bundler/lib/bundler/man/bundle.1 +102 -0
- data/bundler/lib/bundler/man/bundle.1.ronn +116 -0
- data/bundler/lib/bundler/man/gemfile.5 +470 -0
- data/bundler/lib/bundler/man/gemfile.5.ronn +552 -0
- data/bundler/lib/bundler/man/index.txt +29 -0
- data/bundler/lib/bundler/match_metadata.rb +17 -0
- data/bundler/lib/bundler/match_platform.rb +23 -0
- data/bundler/lib/bundler/match_remote_metadata.rb +29 -0
- data/bundler/lib/bundler/mirror.rb +221 -0
- data/bundler/lib/bundler/plugin/api/source.rb +321 -0
- data/bundler/lib/bundler/plugin/api.rb +81 -0
- data/bundler/lib/bundler/plugin/dsl.rb +53 -0
- data/bundler/lib/bundler/plugin/events.rb +61 -0
- data/bundler/lib/bundler/plugin/index.rb +193 -0
- data/bundler/lib/bundler/plugin/installer/git.rb +34 -0
- data/bundler/lib/bundler/plugin/installer/rubygems.rb +19 -0
- data/bundler/lib/bundler/plugin/installer.rb +112 -0
- data/bundler/lib/bundler/plugin/source_list.rb +31 -0
- data/bundler/lib/bundler/plugin.rb +359 -0
- data/bundler/lib/bundler/process_lock.rb +24 -0
- data/bundler/lib/bundler/remote_specification.rb +121 -0
- data/bundler/lib/bundler/resolver/base.rb +107 -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 +77 -0
- data/bundler/lib/bundler/resolver/root.rb +25 -0
- data/bundler/lib/bundler/resolver/spec_group.rb +79 -0
- data/bundler/lib/bundler/resolver.rb +462 -0
- data/bundler/lib/bundler/retry.rb +66 -0
- data/bundler/lib/bundler/ruby_dsl.rb +53 -0
- data/bundler/lib/bundler/ruby_version.rb +131 -0
- data/bundler/lib/bundler/rubygems_ext.rb +328 -0
- data/bundler/lib/bundler/rubygems_gem_installer.rb +137 -0
- data/bundler/lib/bundler/rubygems_integration.rb +493 -0
- data/bundler/lib/bundler/runtime.rb +307 -0
- data/bundler/lib/bundler/safe_marshal.rb +31 -0
- data/bundler/lib/bundler/self_manager.rb +186 -0
- data/bundler/lib/bundler/settings/validator.rb +102 -0
- data/bundler/lib/bundler/settings.rb +588 -0
- data/bundler/lib/bundler/setup.rb +33 -0
- data/bundler/lib/bundler/shared_helpers.rb +380 -0
- data/bundler/lib/bundler/similarity_detector.rb +63 -0
- data/bundler/lib/bundler/source/gemspec.rb +18 -0
- data/bundler/lib/bundler/source/git/git_proxy.rb +455 -0
- data/bundler/lib/bundler/source/git.rb +380 -0
- data/bundler/lib/bundler/source/metadata.rb +62 -0
- data/bundler/lib/bundler/source/path/installer.rb +53 -0
- data/bundler/lib/bundler/source/path.rb +261 -0
- data/bundler/lib/bundler/source/rubygems/remote.rb +68 -0
- data/bundler/lib/bundler/source/rubygems.rb +516 -0
- data/bundler/lib/bundler/source/rubygems_aggregate.rb +68 -0
- data/bundler/lib/bundler/source.rb +116 -0
- data/bundler/lib/bundler/source_list.rb +227 -0
- data/bundler/lib/bundler/source_map.rb +71 -0
- data/bundler/lib/bundler/spec_set.rb +296 -0
- data/bundler/lib/bundler/stub_specification.rb +119 -0
- data/bundler/lib/bundler/templates/.document +1 -0
- data/bundler/lib/bundler/templates/Executable +27 -0
- data/bundler/lib/bundler/templates/Executable.bundler +109 -0
- data/bundler/lib/bundler/templates/Executable.standalone +14 -0
- data/bundler/lib/bundler/templates/Gemfile +5 -0
- data/bundler/lib/bundler/templates/newgem/CHANGELOG.md.tt +5 -0
- data/bundler/lib/bundler/templates/newgem/CODE_OF_CONDUCT.md.tt +84 -0
- data/bundler/lib/bundler/templates/newgem/Cargo.toml.tt +7 -0
- data/bundler/lib/bundler/templates/newgem/Gemfile.tt +26 -0
- data/bundler/lib/bundler/templates/newgem/LICENSE.txt.tt +21 -0
- data/bundler/lib/bundler/templates/newgem/README.md.tt +45 -0
- data/bundler/lib/bundler/templates/newgem/Rakefile.tt +67 -0
- data/bundler/lib/bundler/templates/newgem/bin/console.tt +11 -0
- data/bundler/lib/bundler/templates/newgem/bin/setup.tt +8 -0
- data/bundler/lib/bundler/templates/newgem/circleci/config.yml.tt +25 -0
- data/bundler/lib/bundler/templates/newgem/exe/newgem.tt +3 -0
- data/bundler/lib/bundler/templates/newgem/ext/newgem/Cargo.toml.tt +15 -0
- data/bundler/lib/bundler/templates/newgem/ext/newgem/extconf-c.rb.tt +10 -0
- data/bundler/lib/bundler/templates/newgem/ext/newgem/extconf-rust.rb.tt +6 -0
- data/bundler/lib/bundler/templates/newgem/ext/newgem/newgem.c.tt +9 -0
- data/bundler/lib/bundler/templates/newgem/ext/newgem/newgem.h.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 +23 -0
- data/bundler/lib/bundler/templates/newgem/gitlab-ci.yml.tt +18 -0
- data/bundler/lib/bundler/templates/newgem/lib/newgem/version.rb.tt +9 -0
- data/bundler/lib/bundler/templates/newgem/lib/newgem.rb.tt +15 -0
- data/bundler/lib/bundler/templates/newgem/newgem.gemspec.tt +51 -0
- data/bundler/lib/bundler/templates/newgem/rspec.tt +3 -0
- 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 +11 -0
- data/bundler/lib/bundler/templates/newgem/spec/spec_helper.rb.tt +15 -0
- 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/minitest/test_newgem.rb.tt +13 -0
- data/bundler/lib/bundler/templates/newgem/test/test-unit/newgem_test.rb.tt +15 -0
- data/bundler/lib/bundler/templates/newgem/test/test-unit/test_helper.rb.tt +6 -0
- data/bundler/lib/bundler/ui/rg_proxy.rb +19 -0
- data/bundler/lib/bundler/ui/shell.rb +165 -0
- data/bundler/lib/bundler/ui/silent.rb +85 -0
- data/bundler/lib/bundler/ui.rb +9 -0
- data/bundler/lib/bundler/uri_credentials_filter.rb +43 -0
- data/bundler/lib/bundler/uri_normalizer.rb +23 -0
- data/bundler/lib/bundler/vendor/.document +1 -0
- data/bundler/lib/bundler/vendor/connection_pool/.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 +175 -0
- data/bundler/lib/bundler/vendor/fileutils/.document +1 -0
- data/bundler/lib/bundler/vendor/fileutils/LICENSE.txt +22 -0
- data/bundler/lib/bundler/vendor/fileutils/lib/fileutils.rb +2694 -0
- data/bundler/lib/bundler/vendor/net-http-persistent/.document +1 -0
- 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 +41 -0
- data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/pool.rb +65 -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 +1073 -0
- data/bundler/lib/bundler/vendor/pub_grub/.document +1 -0
- 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 +150 -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 +248 -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/.document +1 -0
- data/bundler/lib/bundler/vendor/thor/LICENSE.md +20 -0
- data/bundler/lib/bundler/vendor/thor/lib/thor/actions/create_file.rb +105 -0
- data/bundler/lib/bundler/vendor/thor/lib/thor/actions/create_link.rb +61 -0
- data/bundler/lib/bundler/vendor/thor/lib/thor/actions/directory.rb +108 -0
- data/bundler/lib/bundler/vendor/thor/lib/thor/actions/empty_directory.rb +143 -0
- data/bundler/lib/bundler/vendor/thor/lib/thor/actions/file_manipulation.rb +373 -0
- data/bundler/lib/bundler/vendor/thor/lib/thor/actions/inject_into_file.rb +130 -0
- data/bundler/lib/bundler/vendor/thor/lib/thor/actions.rb +340 -0
- data/bundler/lib/bundler/vendor/thor/lib/thor/base.rb +825 -0
- data/bundler/lib/bundler/vendor/thor/lib/thor/command.rb +151 -0
- data/bundler/lib/bundler/vendor/thor/lib/thor/core_ext/hash_with_indifferent_access.rb +107 -0
- data/bundler/lib/bundler/vendor/thor/lib/thor/error.rb +106 -0
- data/bundler/lib/bundler/vendor/thor/lib/thor/group.rb +281 -0
- data/bundler/lib/bundler/vendor/thor/lib/thor/invocation.rb +178 -0
- data/bundler/lib/bundler/vendor/thor/lib/thor/line_editor/basic.rb +37 -0
- data/bundler/lib/bundler/vendor/thor/lib/thor/line_editor/readline.rb +88 -0
- data/bundler/lib/bundler/vendor/thor/lib/thor/line_editor.rb +17 -0
- data/bundler/lib/bundler/vendor/thor/lib/thor/nested_context.rb +29 -0
- data/bundler/lib/bundler/vendor/thor/lib/thor/parser/argument.rb +89 -0
- data/bundler/lib/bundler/vendor/thor/lib/thor/parser/arguments.rb +195 -0
- data/bundler/lib/bundler/vendor/thor/lib/thor/parser/option.rb +178 -0
- data/bundler/lib/bundler/vendor/thor/lib/thor/parser/options.rb +293 -0
- data/bundler/lib/bundler/vendor/thor/lib/thor/parser.rb +4 -0
- data/bundler/lib/bundler/vendor/thor/lib/thor/rake_compat.rb +72 -0
- data/bundler/lib/bundler/vendor/thor/lib/thor/runner.rb +335 -0
- data/bundler/lib/bundler/vendor/thor/lib/thor/shell/basic.rb +388 -0
- data/bundler/lib/bundler/vendor/thor/lib/thor/shell/color.rb +112 -0
- data/bundler/lib/bundler/vendor/thor/lib/thor/shell/column_printer.rb +29 -0
- data/bundler/lib/bundler/vendor/thor/lib/thor/shell/html.rb +81 -0
- data/bundler/lib/bundler/vendor/thor/lib/thor/shell/table_printer.rb +134 -0
- data/bundler/lib/bundler/vendor/thor/lib/thor/shell/terminal.rb +42 -0
- data/bundler/lib/bundler/vendor/thor/lib/thor/shell/wrapped_printer.rb +38 -0
- data/bundler/lib/bundler/vendor/thor/lib/thor/shell.rb +81 -0
- data/bundler/lib/bundler/vendor/thor/lib/thor/util.rb +285 -0
- data/bundler/lib/bundler/vendor/thor/lib/thor/version.rb +3 -0
- data/bundler/lib/bundler/vendor/thor/lib/thor.rb +663 -0
- data/bundler/lib/bundler/vendor/tsort/.document +1 -0
- data/bundler/lib/bundler/vendor/tsort/LICENSE.txt +22 -0
- data/bundler/lib/bundler/vendor/tsort/lib/tsort.rb +455 -0
- data/bundler/lib/bundler/vendor/uri/.document +1 -0
- data/bundler/lib/bundler/vendor/uri/LICENSE.txt +22 -0
- data/bundler/lib/bundler/vendor/uri/lib/uri/common.rb +853 -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 +1588 -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 +183 -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 +4 -0
- data/bundler/lib/bundler/vendored_net_http.rb +8 -0
- data/bundler/lib/bundler/vendored_persistent.rb +11 -0
- data/bundler/lib/bundler/vendored_pub_grub.rb +4 -0
- data/bundler/lib/bundler/vendored_thor.rb +8 -0
- data/bundler/lib/bundler/vendored_timeout.rb +8 -0
- data/bundler/lib/bundler/vendored_tsort.rb +4 -0
- data/bundler/lib/bundler/vendored_uri.rb +4 -0
- data/bundler/lib/bundler/version.rb +13 -0
- data/bundler/lib/bundler/vlad.rb +17 -0
- data/bundler/lib/bundler/worker.rb +117 -0
- data/bundler/lib/bundler/yaml_serializer.rb +93 -0
- data/bundler/lib/bundler.rb +663 -0
- data/{test/rubygems/bogussources.rb → exe/gem} +5 -2
- data/exe/update_rubygems +38 -0
- data/hide_lib_for_update/note.txt +0 -4
- data/lib/rubygems/available_set.rb +12 -12
- data/lib/rubygems/basic_specification.rb +82 -59
- data/lib/rubygems/bundler_version_finder.rb +77 -0
- data/lib/rubygems/ci_detector.rb +75 -0
- data/lib/rubygems/command.rb +144 -71
- data/lib/rubygems/command_manager.rb +64 -27
- data/lib/rubygems/commands/build_command.rb +88 -17
- data/lib/rubygems/commands/cert_command.rb +131 -83
- data/lib/rubygems/commands/check_command.rb +30 -27
- data/lib/rubygems/commands/cleanup_command.rb +57 -40
- data/lib/rubygems/commands/contents_command.rb +37 -39
- data/lib/rubygems/commands/dependency_command.rb +53 -65
- data/lib/rubygems/commands/environment_command.rb +32 -16
- data/lib/rubygems/commands/exec_command.rb +249 -0
- data/lib/rubygems/commands/fetch_command.rb +36 -19
- data/lib/rubygems/commands/generate_index_command.rb +40 -74
- data/lib/rubygems/commands/help_command.rb +22 -22
- data/lib/rubygems/commands/info_command.rb +38 -0
- data/lib/rubygems/commands/install_command.rb +67 -143
- data/lib/rubygems/commands/list_command.rb +10 -9
- data/lib/rubygems/commands/lock_command.rb +12 -14
- data/lib/rubygems/commands/mirror_command.rb +4 -4
- data/lib/rubygems/commands/open_command.rb +28 -26
- data/lib/rubygems/commands/outdated_command.rb +6 -6
- data/lib/rubygems/commands/owner_command.rb +51 -27
- data/lib/rubygems/commands/pristine_command.rb +99 -71
- data/lib/rubygems/commands/push_command.rb +53 -46
- data/lib/rubygems/commands/query_command.rb +21 -328
- data/lib/rubygems/commands/rdoc_command.rb +33 -33
- data/lib/rubygems/commands/search_command.rb +9 -9
- data/lib/rubygems/commands/server_command.rb +15 -76
- data/lib/rubygems/commands/setup_command.rb +370 -186
- data/lib/rubygems/commands/signin_command.rb +34 -0
- data/lib/rubygems/commands/signout_command.rb +32 -0
- data/lib/rubygems/commands/sources_command.rb +57 -41
- data/lib/rubygems/commands/specification_command.rb +38 -28
- data/lib/rubygems/commands/stale_command.rb +6 -5
- data/lib/rubygems/commands/uninstall_command.rb +96 -62
- data/lib/rubygems/commands/unpack_command.rb +44 -53
- data/lib/rubygems/commands/update_command.rb +153 -99
- data/lib/rubygems/commands/which_command.rb +14 -17
- data/lib/rubygems/commands/yank_command.rb +28 -32
- data/lib/rubygems/compatibility.rb +13 -32
- data/lib/rubygems/config_file.rb +214 -119
- data/lib/rubygems/core_ext/kernel_gem.rb +10 -16
- data/lib/rubygems/core_ext/kernel_require.rb +92 -90
- data/lib/rubygems/core_ext/kernel_warn.rb +49 -0
- data/lib/rubygems/core_ext/tcpsocket_init.rb +54 -0
- data/lib/rubygems/defaults.rb +184 -54
- data/lib/rubygems/dependency.rb +75 -62
- data/lib/rubygems/dependency_installer.rb +74 -230
- data/lib/rubygems/dependency_list.rb +32 -33
- data/lib/rubygems/deprecate.rb +113 -17
- data/lib/rubygems/doctor.rb +31 -31
- data/lib/rubygems/errors.rb +51 -13
- data/lib/rubygems/exceptions.rb +65 -35
- data/lib/rubygems/ext/build_error.rb +3 -1
- data/lib/rubygems/ext/builder.rb +103 -77
- 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 +6 -9
- data/lib/rubygems/ext/ext_conf_builder.rb +40 -61
- data/lib/rubygems/ext/rake_builder.rb +18 -21
- data/lib/rubygems/ext.rb +8 -7
- data/lib/rubygems/gem_runner.rb +19 -21
- data/lib/rubygems/gemcutter_utilities/webauthn_listener/response.rb +163 -0
- data/lib/rubygems/gemcutter_utilities/webauthn_listener.rb +105 -0
- data/lib/rubygems/gemcutter_utilities/webauthn_poller.rb +78 -0
- data/lib/rubygems/gemcutter_utilities.rb +246 -43
- data/lib/rubygems/install_default_message.rb +3 -3
- data/lib/rubygems/install_message.rb +3 -3
- data/lib/rubygems/install_update_options.rb +104 -98
- data/lib/rubygems/installer.rb +407 -225
- data/lib/rubygems/installer_uninstaller_utils.rb +27 -0
- data/lib/rubygems/local_remote_options.rb +29 -32
- data/lib/rubygems/name_tuple.rb +18 -23
- data/lib/rubygems/net/http.rb +3 -0
- data/lib/rubygems/net-http/.document +1 -0
- data/lib/rubygems/net-http/LICENSE.txt +22 -0
- data/lib/rubygems/net-http/lib/net/http/backward.rb +40 -0
- data/lib/rubygems/net-http/lib/net/http/exceptions.rb +34 -0
- data/lib/rubygems/net-http/lib/net/http/generic_request.rb +414 -0
- data/lib/rubygems/net-http/lib/net/http/header.rb +981 -0
- data/lib/rubygems/net-http/lib/net/http/proxy_delta.rb +17 -0
- data/lib/rubygems/net-http/lib/net/http/request.rb +88 -0
- data/lib/rubygems/net-http/lib/net/http/requests.rb +425 -0
- data/lib/rubygems/net-http/lib/net/http/response.rb +738 -0
- data/lib/rubygems/net-http/lib/net/http/responses.rb +1174 -0
- data/lib/rubygems/net-http/lib/net/http/status.rb +84 -0
- data/lib/rubygems/net-http/lib/net/http.rb +2496 -0
- data/lib/rubygems/net-http/lib/net/https.rb +23 -0
- data/lib/rubygems/net-protocol/.document +1 -0
- data/lib/rubygems/net-protocol/LICENSE.txt +22 -0
- data/lib/rubygems/net-protocol/lib/net/protocol.rb +544 -0
- 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 +2330 -0
- data/lib/rubygems/optparse.rb +3 -0
- data/lib/rubygems/package/digest_io.rb +5 -7
- data/lib/rubygems/package/file_source.rb +6 -8
- data/lib/rubygems/package/io_source.rb +6 -4
- data/lib/rubygems/package/old.rb +19 -28
- data/lib/rubygems/package/source.rb +1 -1
- data/lib/rubygems/package/tar_header.rb +114 -93
- data/lib/rubygems/package/tar_reader/entry.rb +116 -22
- data/lib/rubygems/package/tar_reader.rb +18 -40
- data/lib/rubygems/package/tar_writer.rb +42 -56
- data/lib/rubygems/package.rb +254 -144
- data/lib/rubygems/package_task.rb +8 -14
- data/lib/rubygems/path_support.rb +21 -16
- data/lib/rubygems/platform.rb +135 -74
- data/lib/rubygems/psych_tree.rb +3 -2
- data/lib/rubygems/query_utils.rb +349 -0
- data/lib/rubygems/rdoc.rb +4 -326
- data/lib/rubygems/remote_fetcher.rb +99 -181
- data/lib/rubygems/request/connection_pools.rb +31 -24
- data/lib/rubygems/request/http_pool.rb +6 -7
- data/lib/rubygems/request/https_pool.rb +2 -3
- data/lib/rubygems/request.rb +107 -57
- data/lib/rubygems/request_set/gem_dependency_api.rb +182 -190
- data/lib/rubygems/request_set/lockfile/parser.rb +42 -52
- data/lib/rubygems/request_set/lockfile/tokenizer.rb +34 -24
- data/lib/rubygems/request_set/lockfile.rb +32 -35
- data/lib/rubygems/request_set.rb +115 -71
- data/lib/rubygems/requirement.rb +77 -68
- data/lib/rubygems/resolv/.document +1 -0
- data/lib/rubygems/resolv/LICENSE.txt +22 -0
- data/lib/rubygems/resolv/lib/resolv.rb +3387 -0
- data/lib/rubygems/resolver/activation_request.rb +34 -61
- data/lib/rubygems/resolver/api_set/gem_parser.rb +24 -0
- data/lib/rubygems/resolver/api_set.rb +40 -32
- data/lib/rubygems/resolver/api_specification.rb +37 -18
- data/lib/rubygems/resolver/best_set.rb +15 -17
- data/lib/rubygems/resolver/composed_set.rb +9 -11
- data/lib/rubygems/resolver/conflict.rb +19 -33
- data/lib/rubygems/resolver/current_set.rb +2 -4
- data/lib/rubygems/resolver/dependency_request.rb +8 -9
- data/lib/rubygems/resolver/git_set.rb +8 -10
- data/lib/rubygems/resolver/git_specification.rb +11 -13
- data/lib/rubygems/resolver/index_set.rb +13 -15
- data/lib/rubygems/resolver/index_specification.rb +42 -11
- data/lib/rubygems/resolver/installed_specification.rb +9 -11
- data/lib/rubygems/resolver/installer_set.rb +93 -47
- data/lib/rubygems/resolver/local_specification.rb +5 -7
- data/lib/rubygems/resolver/lock_set.rb +13 -15
- data/lib/rubygems/resolver/lock_specification.rb +13 -15
- data/lib/rubygems/resolver/molinillo/.document +1 -0
- data/lib/rubygems/resolver/molinillo/LICENSE +9 -0
- data/lib/rubygems/resolver/molinillo/lib/molinillo/delegates/resolution_state.rb +57 -0
- data/lib/rubygems/resolver/molinillo/lib/molinillo/delegates/specification_provider.rb +88 -0
- data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/action.rb +36 -0
- data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/add_edge_no_circular.rb +66 -0
- data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/add_vertex.rb +62 -0
- data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/delete_edge.rb +63 -0
- data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/detach_vertex_named.rb +61 -0
- data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/log.rb +126 -0
- data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/set_payload.rb +46 -0
- data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/tag.rb +36 -0
- data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/vertex.rb +164 -0
- data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph.rb +110 -146
- data/lib/rubygems/resolver/molinillo/lib/molinillo/errors.rb +83 -9
- 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 +552 -172
- data/lib/rubygems/resolver/molinillo/lib/molinillo/resolver.rb +3 -2
- data/lib/rubygems/resolver/molinillo/lib/molinillo/state.rb +12 -6
- data/lib/rubygems/resolver/molinillo/lib/molinillo.rb +6 -5
- data/lib/rubygems/resolver/molinillo.rb +2 -1
- data/lib/rubygems/resolver/requirement_list.rb +2 -2
- data/lib/rubygems/resolver/set.rb +3 -5
- data/lib/rubygems/resolver/source_set.rb +6 -7
- data/lib/rubygems/resolver/spec_specification.rb +16 -4
- data/lib/rubygems/resolver/specification.rb +25 -10
- data/lib/rubygems/resolver/stats.rb +1 -0
- data/lib/rubygems/resolver/vendor_set.rb +6 -8
- data/lib/rubygems/resolver/vendor_specification.rb +6 -8
- data/lib/rubygems/resolver.rb +121 -72
- data/lib/rubygems/s3_uri_signer.rb +177 -0
- data/lib/rubygems/safe_marshal/elements.rb +146 -0
- data/lib/rubygems/safe_marshal/reader.rb +308 -0
- data/lib/rubygems/safe_marshal/visitors/stream_printer.rb +31 -0
- data/lib/rubygems/safe_marshal/visitors/to_ruby.rb +415 -0
- data/lib/rubygems/safe_marshal/visitors/visitor.rb +74 -0
- data/lib/rubygems/safe_marshal.rb +74 -0
- data/lib/rubygems/safe_yaml.rb +36 -0
- data/lib/rubygems/security/policies.rb +49 -51
- data/lib/rubygems/security/policy.rb +46 -53
- data/lib/rubygems/security/signer.rb +86 -29
- data/lib/rubygems/security/trust_dir.rb +22 -24
- data/lib/rubygems/security.rb +101 -82
- data/lib/rubygems/security_option.rb +43 -0
- data/lib/rubygems/shellwords.rb +3 -0
- data/lib/rubygems/source/git.rb +40 -42
- data/lib/rubygems/source/installed.rb +5 -9
- data/lib/rubygems/source/local.rb +30 -33
- data/lib/rubygems/source/lock.rb +10 -10
- data/lib/rubygems/source/specific_file.rb +7 -9
- data/lib/rubygems/source/vendor.rb +3 -7
- data/lib/rubygems/source.rb +78 -68
- data/lib/rubygems/source_list.rb +11 -15
- data/lib/rubygems/spec_fetcher.rb +71 -83
- data/lib/rubygems/specification.rb +833 -1115
- data/lib/rubygems/specification_policy.rb +538 -0
- data/lib/rubygems/ssl_certs/rubygems.org/GlobalSignRootCA.pem +21 -0
- data/lib/rubygems/ssl_certs/rubygems.org/GlobalSignRootCA_R3.pem +21 -0
- data/lib/rubygems/stub_specification.rb +55 -57
- data/lib/rubygems/text.rb +39 -27
- data/lib/rubygems/timeout/.document +1 -0
- data/lib/rubygems/timeout/LICENSE.txt +22 -0
- data/lib/rubygems/timeout/lib/timeout.rb +199 -0
- data/lib/rubygems/timeout.rb +3 -0
- data/lib/rubygems/tsort/.document +1 -0
- data/lib/rubygems/tsort/LICENSE.txt +22 -0
- data/lib/rubygems/tsort/lib/tsort.rb +455 -0
- data/lib/rubygems/tsort.rb +3 -0
- data/lib/rubygems/uninstaller.rb +150 -87
- data/lib/rubygems/unknown_command_spell_checker.rb +21 -0
- data/lib/rubygems/update_suggestion.rb +56 -0
- data/lib/rubygems/uri.rb +126 -0
- data/lib/rubygems/uri_formatter.rb +4 -7
- data/lib/rubygems/user_interaction.rb +92 -146
- data/lib/rubygems/util/licenses.rb +712 -317
- data/lib/rubygems/util/list.rb +5 -2
- data/lib/rubygems/util.rb +58 -75
- data/lib/rubygems/validator.rb +26 -48
- data/lib/rubygems/version.rb +106 -56
- data/lib/rubygems/version_option.rb +22 -14
- data/lib/rubygems/yaml_serializer.rb +93 -0
- data/lib/rubygems.rb +453 -358
- data/rubygems-update.gemspec +38 -0
- data/setup.rb +13 -27
- metadata +511 -363
- data/.autotest +0 -71
- data/.document +0 -5
- data/.travis.yml +0 -46
- data/CONTRIBUTING.rdoc +0 -129
- data/CVE-2013-4287.txt +0 -35
- data/CVE-2013-4363.txt +0 -45
- data/CVE-2015-3900.txt +0 -40
- data/History.txt +0 -3094
- data/MAINTAINERS.md +0 -5
- data/POLICIES.rdoc +0 -61
- data/README.rdoc +0 -54
- data/Rakefile +0 -449
- data/UPGRADING.rdoc +0 -92
- data/appveyor.yml +0 -36
- data/bin/gem +0 -25
- data/bin/update_rubygems +0 -37
- data/lib/gauntlet_rubygems.rb +0 -51
- data/lib/rubygems/indexer.rb +0 -434
- data/lib/rubygems/installer_test_case.rb +0 -194
- data/lib/rubygems/mock_gem_ui.rb +0 -89
- data/lib/rubygems/package/tar_test_case.rb +0 -147
- data/lib/rubygems/psych_additions.rb +0 -10
- data/lib/rubygems/server.rb +0 -869
- data/lib/rubygems/source_local.rb +0 -6
- data/lib/rubygems/source_specific_file.rb +0 -5
- data/lib/rubygems/ssl_certs/AddTrustExternalCARoot-2048.pem +0 -25
- data/lib/rubygems/ssl_certs/AddTrustExternalCARoot.pem +0 -32
- data/lib/rubygems/ssl_certs/Class3PublicPrimaryCertificationAuthority.pem +0 -14
- data/lib/rubygems/ssl_certs/DigiCertHighAssuranceEVRootCA.pem +0 -23
- data/lib/rubygems/ssl_certs/EntrustnetSecureServerCertificationAuthority.pem +0 -28
- data/lib/rubygems/ssl_certs/GeoTrustGlobalCA.pem +0 -20
- data/lib/rubygems/syck_hack.rb +0 -77
- data/lib/rubygems/test_case.rb +0 -1496
- data/lib/rubygems/test_utilities.rb +0 -384
- data/lib/ubygems.rb +0 -11
- data/test/rubygems/alternate_cert.pem +0 -18
- data/test/rubygems/alternate_cert_32.pem +0 -18
- data/test/rubygems/alternate_key.pem +0 -27
- data/test/rubygems/bad_rake.rb +0 -2
- data/test/rubygems/ca_cert.pem +0 -68
- data/test/rubygems/child_cert.pem +0 -18
- data/test/rubygems/child_cert_32.pem +0 -18
- data/test/rubygems/child_key.pem +0 -27
- data/test/rubygems/client.pem +0 -49
- data/test/rubygems/data/gem-private_key.pem +0 -27
- data/test/rubygems/data/gem-public_cert.pem +0 -20
- data/test/rubygems/data/null-type.gemspec.rz +0 -0
- data/test/rubygems/encrypted_private_key.pem +0 -30
- data/test/rubygems/expired_cert.pem +0 -18
- data/test/rubygems/fake_certlib/openssl.rb +0 -8
- data/test/rubygems/fix_openssl_warnings.rb +0 -13
- data/test/rubygems/foo/discover.rb +0 -1
- data/test/rubygems/future_cert.pem +0 -18
- data/test/rubygems/future_cert_32.pem +0 -18
- data/test/rubygems/good_rake.rb +0 -2
- data/test/rubygems/grandchild_cert.pem +0 -18
- data/test/rubygems/grandchild_cert_32.pem +0 -18
- data/test/rubygems/grandchild_key.pem +0 -27
- data/test/rubygems/invalid_client.pem +0 -49
- data/test/rubygems/invalid_issuer_cert.pem +0 -18
- data/test/rubygems/invalid_issuer_cert_32.pem +0 -18
- data/test/rubygems/invalid_key.pem +0 -27
- data/test/rubygems/invalid_signer_cert.pem +0 -18
- data/test/rubygems/invalid_signer_cert_32.pem +0 -18
- data/test/rubygems/invalidchild_cert.pem +0 -18
- data/test/rubygems/invalidchild_cert_32.pem +0 -18
- data/test/rubygems/invalidchild_key.pem +0 -27
- data/test/rubygems/plugin/exception/rubygems_plugin.rb +0 -3
- data/test/rubygems/plugin/load/rubygems_plugin.rb +0 -4
- data/test/rubygems/plugin/standarderror/rubygems_plugin.rb +0 -3
- data/test/rubygems/private_key.pem +0 -27
- data/test/rubygems/public_cert.pem +0 -18
- data/test/rubygems/public_cert_32.pem +0 -18
- data/test/rubygems/public_key.pem +0 -9
- data/test/rubygems/rubygems/commands/crash_command.rb +0 -6
- data/test/rubygems/rubygems_plugin.rb +0 -22
- data/test/rubygems/sff/discover.rb +0 -1
- data/test/rubygems/simple_gem.rb +0 -67
- data/test/rubygems/specifications/bar-0.0.2.gemspec +0 -9
- data/test/rubygems/specifications/foo-0.0.1-x86-mswin32.gemspec +0 -0
- data/test/rubygems/ssl_cert.pem +0 -19
- data/test/rubygems/ssl_key.pem +0 -15
- data/test/rubygems/test_bundled_ca.rb +0 -59
- data/test/rubygems/test_config.rb +0 -24
- data/test/rubygems/test_deprecate.rb +0 -77
- data/test/rubygems/test_gem.rb +0 -1679
- data/test/rubygems/test_gem_available_set.rb +0 -130
- data/test/rubygems/test_gem_command.rb +0 -248
- data/test/rubygems/test_gem_command_manager.rb +0 -264
- data/test/rubygems/test_gem_commands_build_command.rb +0 -121
- data/test/rubygems/test_gem_commands_cert_command.rb +0 -671
- data/test/rubygems/test_gem_commands_check_command.rb +0 -69
- data/test/rubygems/test_gem_commands_cleanup_command.rb +0 -197
- data/test/rubygems/test_gem_commands_contents_command.rb +0 -240
- data/test/rubygems/test_gem_commands_dependency_command.rb +0 -230
- data/test/rubygems/test_gem_commands_environment_command.rb +0 -154
- data/test/rubygems/test_gem_commands_fetch_command.rb +0 -127
- data/test/rubygems/test_gem_commands_generate_index_command.rb +0 -51
- data/test/rubygems/test_gem_commands_help_command.rb +0 -75
- data/test/rubygems/test_gem_commands_install_command.rb +0 -987
- data/test/rubygems/test_gem_commands_list_command.rb +0 -34
- data/test/rubygems/test_gem_commands_lock_command.rb +0 -69
- data/test/rubygems/test_gem_commands_mirror.rb +0 -20
- data/test/rubygems/test_gem_commands_open_command.rb +0 -70
- data/test/rubygems/test_gem_commands_outdated_command.rb +0 -33
- data/test/rubygems/test_gem_commands_owner_command.rb +0 -205
- data/test/rubygems/test_gem_commands_pristine_command.rb +0 -491
- data/test/rubygems/test_gem_commands_push_command.rb +0 -330
- data/test/rubygems/test_gem_commands_query_command.rb +0 -657
- data/test/rubygems/test_gem_commands_search_command.rb +0 -18
- data/test/rubygems/test_gem_commands_server_command.rb +0 -60
- data/test/rubygems/test_gem_commands_setup_command.rb +0 -136
- data/test/rubygems/test_gem_commands_sources_command.rb +0 -249
- data/test/rubygems/test_gem_commands_specification_command.rb +0 -251
- data/test/rubygems/test_gem_commands_stale_command.rb +0 -43
- data/test/rubygems/test_gem_commands_uninstall_command.rb +0 -283
- data/test/rubygems/test_gem_commands_unpack_command.rb +0 -209
- data/test/rubygems/test_gem_commands_update_command.rb +0 -514
- data/test/rubygems/test_gem_commands_which_command.rb +0 -87
- data/test/rubygems/test_gem_commands_yank_command.rb +0 -100
- data/test/rubygems/test_gem_config_file.rb +0 -491
- data/test/rubygems/test_gem_dependency.rb +0 -362
- data/test/rubygems/test_gem_dependency_installer.rb +0 -1235
- data/test/rubygems/test_gem_dependency_list.rb +0 -260
- data/test/rubygems/test_gem_dependency_resolution_error.rb +0 -29
- data/test/rubygems/test_gem_doctor.rb +0 -169
- data/test/rubygems/test_gem_ext_builder.rb +0 -341
- data/test/rubygems/test_gem_ext_cmake_builder.rb +0 -87
- data/test/rubygems/test_gem_ext_configure_builder.rb +0 -87
- data/test/rubygems/test_gem_ext_ext_conf_builder.rb +0 -211
- data/test/rubygems/test_gem_ext_rake_builder.rb +0 -65
- data/test/rubygems/test_gem_gem_runner.rb +0 -69
- data/test/rubygems/test_gem_gemcutter_utilities.rb +0 -235
- data/test/rubygems/test_gem_impossible_dependencies_error.rb +0 -62
- data/test/rubygems/test_gem_indexer.rb +0 -367
- data/test/rubygems/test_gem_install_update_options.rb +0 -197
- data/test/rubygems/test_gem_installer.rb +0 -1552
- data/test/rubygems/test_gem_local_remote_options.rb +0 -134
- data/test/rubygems/test_gem_name_tuple.rb +0 -45
- data/test/rubygems/test_gem_package.rb +0 -876
- data/test/rubygems/test_gem_package_old.rb +0 -90
- data/test/rubygems/test_gem_package_tar_header.rb +0 -147
- data/test/rubygems/test_gem_package_tar_reader.rb +0 -90
- data/test/rubygems/test_gem_package_tar_reader_entry.rb +0 -142
- data/test/rubygems/test_gem_package_tar_writer.rb +0 -264
- data/test/rubygems/test_gem_package_task.rb +0 -84
- data/test/rubygems/test_gem_path_support.rb +0 -121
- data/test/rubygems/test_gem_platform.rb +0 -308
- data/test/rubygems/test_gem_rdoc.rb +0 -270
- data/test/rubygems/test_gem_remote_fetcher.rb +0 -1051
- data/test/rubygems/test_gem_request.rb +0 -363
- data/test/rubygems/test_gem_request_connection_pools.rb +0 -130
- data/test/rubygems/test_gem_request_set.rb +0 -595
- data/test/rubygems/test_gem_request_set_gem_dependency_api.rb +0 -831
- data/test/rubygems/test_gem_request_set_lockfile.rb +0 -470
- data/test/rubygems/test_gem_request_set_lockfile_parser.rb +0 -549
- data/test/rubygems/test_gem_request_set_lockfile_tokenizer.rb +0 -306
- data/test/rubygems/test_gem_requirement.rb +0 -387
- data/test/rubygems/test_gem_resolver.rb +0 -715
- data/test/rubygems/test_gem_resolver_activation_request.rb +0 -74
- data/test/rubygems/test_gem_resolver_api_set.rb +0 -209
- data/test/rubygems/test_gem_resolver_api_specification.rb +0 -145
- data/test/rubygems/test_gem_resolver_best_set.rb +0 -138
- data/test/rubygems/test_gem_resolver_composed_set.rb +0 -46
- data/test/rubygems/test_gem_resolver_conflict.rb +0 -88
- data/test/rubygems/test_gem_resolver_dependency_request.rb +0 -85
- data/test/rubygems/test_gem_resolver_git_set.rb +0 -190
- data/test/rubygems/test_gem_resolver_git_specification.rb +0 -114
- data/test/rubygems/test_gem_resolver_index_set.rb +0 -90
- data/test/rubygems/test_gem_resolver_index_specification.rb +0 -90
- data/test/rubygems/test_gem_resolver_installed_specification.rb +0 -50
- data/test/rubygems/test_gem_resolver_installer_set.rb +0 -258
- data/test/rubygems/test_gem_resolver_local_specification.rb +0 -46
- data/test/rubygems/test_gem_resolver_lock_set.rb +0 -64
- data/test/rubygems/test_gem_resolver_lock_specification.rb +0 -100
- data/test/rubygems/test_gem_resolver_requirement_list.rb +0 -21
- data/test/rubygems/test_gem_resolver_specification.rb +0 -65
- data/test/rubygems/test_gem_resolver_vendor_set.rb +0 -84
- data/test/rubygems/test_gem_resolver_vendor_specification.rb +0 -84
- data/test/rubygems/test_gem_security.rb +0 -307
- data/test/rubygems/test_gem_security_policy.rb +0 -541
- data/test/rubygems/test_gem_security_signer.rb +0 -209
- data/test/rubygems/test_gem_security_trust_dir.rb +0 -101
- data/test/rubygems/test_gem_server.rb +0 -409
- data/test/rubygems/test_gem_silent_ui.rb +0 -117
- data/test/rubygems/test_gem_source.rb +0 -242
- data/test/rubygems/test_gem_source_fetch_problem.rb +0 -20
- data/test/rubygems/test_gem_source_git.rb +0 -309
- data/test/rubygems/test_gem_source_installed.rb +0 -37
- data/test/rubygems/test_gem_source_list.rb +0 -118
- data/test/rubygems/test_gem_source_local.rb +0 -107
- data/test/rubygems/test_gem_source_lock.rb +0 -115
- data/test/rubygems/test_gem_source_specific_file.rb +0 -76
- data/test/rubygems/test_gem_source_vendor.rb +0 -32
- data/test/rubygems/test_gem_spec_fetcher.rb +0 -311
- data/test/rubygems/test_gem_specification.rb +0 -3519
- data/test/rubygems/test_gem_stream_ui.rb +0 -239
- data/test/rubygems/test_gem_stub_specification.rb +0 -217
- data/test/rubygems/test_gem_text.rb +0 -77
- data/test/rubygems/test_gem_uninstaller.rb +0 -485
- data/test/rubygems/test_gem_unsatisfiable_dependency_error.rb +0 -33
- data/test/rubygems/test_gem_uri_formatter.rb +0 -29
- data/test/rubygems/test_gem_util.rb +0 -40
- data/test/rubygems/test_gem_validator.rb +0 -46
- data/test/rubygems/test_gem_version.rb +0 -222
- data/test/rubygems/test_gem_version_option.rb +0 -152
- data/test/rubygems/test_kernel.rb +0 -86
- data/test/rubygems/test_require.rb +0 -322
- data/test/rubygems/wrong_key_cert.pem +0 -18
- data/test/rubygems/wrong_key_cert_32.pem +0 -18
- data/util/CL2notes +0 -56
- data/util/create_certs.rb +0 -157
- data/util/create_encrypted_key.rb +0 -17
- data/util/generate_spdx_license_list.rb +0 -51
- data/util/update_bundled_ca_certificates.rb +0 -118
data/lib/rubygems.rb
CHANGED
@@ -1,24 +1,23 @@
|
|
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
|
-
require
|
10
|
-
require 'thread'
|
9
|
+
require "rbconfig"
|
11
10
|
|
12
11
|
module Gem
|
13
|
-
VERSION =
|
12
|
+
VERSION = "3.5.4"
|
14
13
|
end
|
15
14
|
|
16
15
|
# Must be first since it unloads the prelude from 1.9.2
|
17
|
-
|
16
|
+
require_relative "rubygems/compatibility"
|
18
17
|
|
19
|
-
|
20
|
-
|
21
|
-
|
18
|
+
require_relative "rubygems/defaults"
|
19
|
+
require_relative "rubygems/deprecate"
|
20
|
+
require_relative "rubygems/errors"
|
22
21
|
|
23
22
|
##
|
24
23
|
# RubyGems is the Ruby standard for publishing and managing third party
|
@@ -27,35 +26,34 @@ require 'rubygems/errors'
|
|
27
26
|
# For user documentation, see:
|
28
27
|
#
|
29
28
|
# * <tt>gem help</tt> and <tt>gem help [command]</tt>
|
30
|
-
# * {RubyGems User Guide}[
|
31
|
-
# * {Frequently Asked Questions}[
|
29
|
+
# * {RubyGems User Guide}[https://guides.rubygems.org/]
|
30
|
+
# * {Frequently Asked Questions}[https://guides.rubygems.org/faqs]
|
32
31
|
#
|
33
32
|
# For gem developer documentation see:
|
34
33
|
#
|
35
|
-
# * {Creating Gems}[
|
34
|
+
# * {Creating Gems}[https://guides.rubygems.org/make-your-own-gem]
|
36
35
|
# * Gem::Specification
|
37
36
|
# * Gem::Version for version dependency notes
|
38
37
|
#
|
39
38
|
# Further RubyGems documentation can be found at:
|
40
39
|
#
|
41
|
-
# * {RubyGems Guides}[
|
42
|
-
# * {RubyGems API}[
|
40
|
+
# * {RubyGems Guides}[https://guides.rubygems.org]
|
41
|
+
# * {RubyGems API}[https://www.rubydoc.info/github/rubygems/rubygems] (also available from
|
43
42
|
# <tt>gem server</tt>)
|
44
43
|
#
|
45
44
|
# == RubyGems Plugins
|
46
45
|
#
|
47
|
-
#
|
46
|
+
# RubyGems will load plugins in the latest version of each installed gem or
|
48
47
|
# $LOAD_PATH. Plugins must be named 'rubygems_plugin' (.rb, .so, etc) and
|
49
|
-
# placed at the root of your gem's #require_path. Plugins are
|
50
|
-
#
|
51
|
-
# plugin file may be loaded multiple times if multiple versions of your gem
|
52
|
-
# are installed.
|
48
|
+
# placed at the root of your gem's #require_path. Plugins are installed at a
|
49
|
+
# special location and loaded on boot.
|
53
50
|
#
|
54
|
-
# For an example plugin, see the
|
51
|
+
# For an example plugin, see the {Graph gem}[https://github.com/seattlerb/graph]
|
52
|
+
# which adds a <tt>gem graph</tt> command.
|
55
53
|
#
|
56
54
|
# == RubyGems Defaults, Packaging
|
57
55
|
#
|
58
|
-
# RubyGems defaults are stored in rubygems/defaults.rb. If you're packaging
|
56
|
+
# RubyGems defaults are stored in lib/rubygems/defaults.rb. If you're packaging
|
59
57
|
# RubyGems or implementing Ruby you can change RubyGems' defaults.
|
60
58
|
#
|
61
59
|
# For RubyGems packagers, provide lib/rubygems/defaults/operating_system.rb
|
@@ -65,7 +63,7 @@ require 'rubygems/errors'
|
|
65
63
|
# override any defaults from lib/rubygems/defaults.rb.
|
66
64
|
#
|
67
65
|
# If you need RubyGems to perform extra work on install or uninstall, your
|
68
|
-
# defaults override file can set pre
|
66
|
+
# defaults override file can set pre/post install and uninstall hooks.
|
69
67
|
# See Gem::pre_install, Gem::pre_uninstall, Gem::post_install,
|
70
68
|
# Gem::post_uninstall.
|
71
69
|
#
|
@@ -106,15 +104,16 @@ require 'rubygems/errors'
|
|
106
104
|
#
|
107
105
|
# (If your name is missing, PLEASE let us know!)
|
108
106
|
#
|
107
|
+
# == License
|
108
|
+
#
|
109
109
|
# See {LICENSE.txt}[rdoc-ref:lib/rubygems/LICENSE.txt] for permissions.
|
110
110
|
#
|
111
111
|
# Thanks!
|
112
112
|
#
|
113
113
|
# -The RubyGems Team
|
114
114
|
|
115
|
-
|
116
115
|
module Gem
|
117
|
-
RUBYGEMS_DIR =
|
116
|
+
RUBYGEMS_DIR = __dir__
|
118
117
|
|
119
118
|
##
|
120
119
|
# An Array of Regexps that match windows Ruby platforms.
|
@@ -126,13 +125,14 @@ module Gem
|
|
126
125
|
/mingw/i,
|
127
126
|
/mswin/i,
|
128
127
|
/wince/i,
|
129
|
-
]
|
128
|
+
].freeze
|
130
129
|
|
131
130
|
GEM_DEP_FILES = %w[
|
132
131
|
gem.deps.rb
|
132
|
+
gems.rb
|
133
133
|
Gemfile
|
134
134
|
Isolate
|
135
|
-
]
|
135
|
+
].freeze
|
136
136
|
|
137
137
|
##
|
138
138
|
# Subdirectories in a gem repository
|
@@ -143,8 +143,9 @@ module Gem
|
|
143
143
|
doc
|
144
144
|
extensions
|
145
145
|
gems
|
146
|
+
plugins
|
146
147
|
specifications
|
147
|
-
]
|
148
|
+
].freeze
|
148
149
|
|
149
150
|
##
|
150
151
|
# Subdirectories in a gem repository for default gems
|
@@ -152,14 +153,14 @@ module Gem
|
|
152
153
|
REPOSITORY_DEFAULT_GEM_SUBDIRECTORIES = %w[
|
153
154
|
gems
|
154
155
|
specifications/default
|
155
|
-
]
|
156
|
+
].freeze
|
156
157
|
|
157
158
|
@@win_platform = nil
|
158
159
|
|
159
160
|
@configuration = nil
|
160
161
|
@gemdeps = nil
|
161
162
|
@loaded_specs = {}
|
162
|
-
LOADED_SPECS_MUTEX = Mutex.new
|
163
|
+
LOADED_SPECS_MUTEX = Thread::Mutex.new
|
163
164
|
@path_to_default_spec_map = {}
|
164
165
|
@platforms = []
|
165
166
|
@ruby = nil
|
@@ -174,20 +175,16 @@ module Gem
|
|
174
175
|
@pre_reset_hooks ||= []
|
175
176
|
@post_reset_hooks ||= []
|
176
177
|
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
req = ENV["GEM_REQUIREMENT_#{gem_name.upcase}"] || '>= 0'.freeze
|
181
|
-
Gem::Requirement.create(req)
|
182
|
-
end
|
183
|
-
end
|
178
|
+
@default_source_date_epoch = nil
|
179
|
+
|
180
|
+
@discover_gems_on_require = true
|
184
181
|
|
185
182
|
##
|
186
183
|
# Try to activate a gem containing +path+. Returns true if
|
187
184
|
# activation succeeded or wasn't needed because it was already
|
188
185
|
# activated. Returns false if it can't find the path in a gem.
|
189
186
|
|
190
|
-
def self.try_activate
|
187
|
+
def self.try_activate(path)
|
191
188
|
# finds the _latest_ version... regardless of loaded specs and their deps
|
192
189
|
# if another gem had a requirement that would mean we shouldn't
|
193
190
|
# activate the latest version, then either it would already be activated
|
@@ -209,7 +206,7 @@ module Gem
|
|
209
206
|
end
|
210
207
|
end
|
211
208
|
|
212
|
-
|
209
|
+
true
|
213
210
|
end
|
214
211
|
|
215
212
|
def self.needs
|
@@ -222,6 +219,7 @@ module Gem
|
|
222
219
|
|
223
220
|
def self.finish_resolve(request_set=Gem::RequestSet.new)
|
224
221
|
request_set.import Gem::Specification.unresolved_deps.values
|
222
|
+
request_set.import Gem.loaded_specs.values.map {|s| Gem::Dependency.new(s.name, s.version) }
|
225
223
|
|
226
224
|
request_set.resolve_current.each do |s|
|
227
225
|
s.full_spec.activate
|
@@ -230,39 +228,58 @@ module Gem
|
|
230
228
|
|
231
229
|
##
|
232
230
|
# Find the full path to the executable for gem +name+. If the +exec_name+
|
233
|
-
# is not given,
|
231
|
+
# is not given, an exception will be raised, otherwise the
|
234
232
|
# specified executable's path is returned. +requirements+ allows
|
235
233
|
# you to specify specific gem versions.
|
236
234
|
|
237
235
|
def self.bin_path(name, exec_name = nil, *requirements)
|
238
|
-
# TODO: fails test_self_bin_path_bin_file_gone_in_latest
|
239
|
-
# Gem::Specification.find_by_name(name, *requirements).bin_file exec_name
|
240
|
-
|
241
|
-
raise ArgumentError, "you must supply exec_name" unless exec_name
|
242
|
-
|
243
236
|
requirements = Gem::Requirement.default if
|
244
237
|
requirements.empty?
|
245
238
|
|
239
|
+
find_spec_for_exe(name, exec_name, requirements).bin_file exec_name
|
240
|
+
end
|
241
|
+
|
242
|
+
def self.find_spec_for_exe(name, exec_name, requirements)
|
243
|
+
raise ArgumentError, "you must supply exec_name" unless exec_name
|
244
|
+
|
246
245
|
dep = Gem::Dependency.new name, requirements
|
247
246
|
|
248
247
|
loaded = Gem.loaded_specs[name]
|
249
248
|
|
250
|
-
return loaded
|
249
|
+
return loaded if loaded && dep.matches_spec?(loaded)
|
251
250
|
|
252
251
|
specs = dep.matching_specs(true)
|
253
252
|
|
254
|
-
|
255
|
-
"can't find gem #{dep}" if specs.empty?
|
256
|
-
|
257
|
-
specs = specs.find_all { |spec|
|
253
|
+
specs = specs.find_all do |spec|
|
258
254
|
spec.executables.include? exec_name
|
259
|
-
|
255
|
+
end if exec_name
|
260
256
|
|
261
|
-
unless spec = specs.
|
262
|
-
msg = "can't find gem #{
|
257
|
+
unless spec = specs.first
|
258
|
+
msg = "can't find gem #{dep} with executable #{exec_name}"
|
263
259
|
raise Gem::GemNotFoundException, msg
|
264
260
|
end
|
265
261
|
|
262
|
+
spec
|
263
|
+
end
|
264
|
+
private_class_method :find_spec_for_exe
|
265
|
+
|
266
|
+
##
|
267
|
+
# Find the full path to the executable for gem +name+. If the +exec_name+
|
268
|
+
# is not given, an exception will be raised, otherwise the
|
269
|
+
# specified executable's path is returned. +requirements+ allows
|
270
|
+
# you to specify specific gem versions.
|
271
|
+
#
|
272
|
+
# A side effect of this method is that it will activate the gem that
|
273
|
+
# contains the executable.
|
274
|
+
#
|
275
|
+
# This method should *only* be used in bin stub files.
|
276
|
+
|
277
|
+
def self.activate_bin_path(name, exec_name = nil, *requirements) # :nodoc:
|
278
|
+
spec = find_spec_for_exe name, exec_name, requirements
|
279
|
+
Gem::LOADED_SPECS_MUTEX.synchronize do
|
280
|
+
spec.activate
|
281
|
+
finish_resolve
|
282
|
+
end
|
266
283
|
spec.bin_file exec_name
|
267
284
|
end
|
268
285
|
|
@@ -270,18 +287,25 @@ module Gem
|
|
270
287
|
# The mode needed to read a file as straight binary.
|
271
288
|
|
272
289
|
def self.binary_mode
|
273
|
-
|
290
|
+
"rb"
|
274
291
|
end
|
275
292
|
|
276
293
|
##
|
277
294
|
# The path where gem executables are to be installed.
|
278
295
|
|
279
296
|
def self.bindir(install_dir=Gem.dir)
|
280
|
-
return File.join install_dir,
|
297
|
+
return File.join install_dir, "bin" unless
|
281
298
|
install_dir.to_s == Gem.default_dir.to_s
|
282
299
|
Gem.default_bindir
|
283
300
|
end
|
284
301
|
|
302
|
+
##
|
303
|
+
# The path were rubygems plugins are to be installed.
|
304
|
+
|
305
|
+
def self.plugindir(install_dir=Gem.dir)
|
306
|
+
File.join install_dir, "plugins"
|
307
|
+
end
|
308
|
+
|
285
309
|
##
|
286
310
|
# Reset the +dir+ and +path+ values. The next time +dir+ or +path+
|
287
311
|
# is requested, the values will be calculated from scratch. This is
|
@@ -294,13 +318,6 @@ module Gem
|
|
294
318
|
Gem::Security.reset if defined?(Gem::Security)
|
295
319
|
end
|
296
320
|
|
297
|
-
##
|
298
|
-
# The path to standard location of the user's .gemrc file.
|
299
|
-
|
300
|
-
def self.config_file
|
301
|
-
@config_file ||= File.join Gem.user_home, '.gemrc'
|
302
|
-
end
|
303
|
-
|
304
321
|
##
|
305
322
|
# The standard configuration object for gems.
|
306
323
|
|
@@ -316,22 +333,11 @@ module Gem
|
|
316
333
|
@configuration = config
|
317
334
|
end
|
318
335
|
|
319
|
-
##
|
320
|
-
# The path to the data directory specified by the gem name. If the
|
321
|
-
# package is not available as a gem, return nil.
|
322
|
-
|
323
|
-
def self.datadir(gem_name)
|
324
|
-
# TODO: deprecate
|
325
|
-
spec = @loaded_specs[gem_name]
|
326
|
-
return nil if spec.nil?
|
327
|
-
spec.datadir
|
328
|
-
end
|
329
|
-
|
330
336
|
##
|
331
337
|
# A Zlib::Deflate.deflate wrapper
|
332
338
|
|
333
339
|
def self.deflate(data)
|
334
|
-
require
|
340
|
+
require "zlib"
|
335
341
|
Zlib::Deflate.deflate data
|
336
342
|
end
|
337
343
|
|
@@ -345,17 +351,38 @@ module Gem
|
|
345
351
|
# Initialize the filesystem paths to use from +env+.
|
346
352
|
# +env+ is a hash-like object (typically ENV) that
|
347
353
|
# is queried for 'GEM_HOME', 'GEM_PATH', and 'GEM_SPEC_CACHE'
|
354
|
+
# Keys for the +env+ hash should be Strings, and values of the hash should
|
355
|
+
# be Strings or +nil+.
|
348
356
|
|
349
357
|
def self.paths=(env)
|
350
358
|
clear_paths
|
351
|
-
|
359
|
+
target = {}
|
360
|
+
env.each_pair do |k,v|
|
361
|
+
case k
|
362
|
+
when "GEM_HOME", "GEM_PATH", "GEM_SPEC_CACHE"
|
363
|
+
case v
|
364
|
+
when nil, String
|
365
|
+
target[k] = v
|
366
|
+
when Array
|
367
|
+
unless Gem::Deprecate.skip
|
368
|
+
warn <<-EOWARN
|
369
|
+
Array values in the parameter to `Gem.paths=` are deprecated.
|
370
|
+
Please use a String or nil.
|
371
|
+
An Array (#{env.inspect}) was passed in from #{caller[3]}
|
372
|
+
EOWARN
|
373
|
+
end
|
374
|
+
target[k] = v.join File::PATH_SEPARATOR
|
375
|
+
end
|
376
|
+
else
|
377
|
+
target[k] = v
|
378
|
+
end
|
379
|
+
end
|
380
|
+
@paths = Gem::PathSupport.new ENV.to_hash.merge(target)
|
352
381
|
Gem::Specification.dirs = @paths.path
|
353
382
|
end
|
354
383
|
|
355
384
|
##
|
356
385
|
# The path where gems are to be installed.
|
357
|
-
#--
|
358
|
-
# FIXME deprecate these once everything else has been done -ebh
|
359
386
|
|
360
387
|
def self.dir
|
361
388
|
paths.home
|
@@ -378,7 +405,7 @@ module Gem
|
|
378
405
|
#
|
379
406
|
# World-writable directories will never be created.
|
380
407
|
|
381
|
-
def self.ensure_gem_subdirectories
|
408
|
+
def self.ensure_gem_subdirectories(dir = Gem.dir, mode = nil)
|
382
409
|
ensure_subdirectories(dir, mode, REPOSITORY_SUBDIRECTORIES)
|
383
410
|
end
|
384
411
|
|
@@ -391,15 +418,13 @@ module Gem
|
|
391
418
|
#
|
392
419
|
# World-writable directories will never be created.
|
393
420
|
|
394
|
-
def self.ensure_default_gem_subdirectories
|
421
|
+
def self.ensure_default_gem_subdirectories(dir = Gem.dir, mode = nil)
|
395
422
|
ensure_subdirectories(dir, mode, REPOSITORY_DEFAULT_GEM_SUBDIRECTORIES)
|
396
423
|
end
|
397
424
|
|
398
|
-
def self.ensure_subdirectories
|
425
|
+
def self.ensure_subdirectories(dir, mode, subdirs) # :nodoc:
|
399
426
|
old_umask = File.umask
|
400
|
-
File.umask old_umask |
|
401
|
-
|
402
|
-
require 'fileutils'
|
427
|
+
File.umask old_umask | 0o002
|
403
428
|
|
404
429
|
options = {}
|
405
430
|
|
@@ -408,7 +433,13 @@ module Gem
|
|
408
433
|
subdirs.each do |name|
|
409
434
|
subdir = File.join dir, name
|
410
435
|
next if File.exist? subdir
|
411
|
-
|
436
|
+
|
437
|
+
require "fileutils"
|
438
|
+
|
439
|
+
begin
|
440
|
+
FileUtils.mkdir_p subdir, **options
|
441
|
+
rescue SystemCallError
|
442
|
+
end
|
412
443
|
end
|
413
444
|
ensure
|
414
445
|
File.umask old_umask
|
@@ -419,7 +450,7 @@ module Gem
|
|
419
450
|
# distinction as extensions cannot be shared between the two.
|
420
451
|
|
421
452
|
def self.extension_api_version # :nodoc:
|
422
|
-
if
|
453
|
+
if RbConfig::CONFIG["ENABLE_SHARED"] == "no"
|
423
454
|
"#{ruby_api_version}-static"
|
424
455
|
else
|
425
456
|
ruby_api_version
|
@@ -445,7 +476,7 @@ module Gem
|
|
445
476
|
|
446
477
|
gem_specifications = @gemdeps ? Gem.loaded_specs.values : Gem::Specification.stubs
|
447
478
|
|
448
|
-
files.concat gem_specifications.map {
|
479
|
+
files.concat gem_specifications.map {|spec|
|
449
480
|
spec.matches_for_glob("#{glob}#{Gem.suffix_pattern}")
|
450
481
|
}.flatten
|
451
482
|
|
@@ -453,13 +484,14 @@ module Gem
|
|
453
484
|
# the spec dirs directly, so we prune.
|
454
485
|
files.uniq! if check_load_path
|
455
486
|
|
456
|
-
|
487
|
+
files
|
457
488
|
end
|
458
489
|
|
459
|
-
def self.find_files_from_load_path
|
460
|
-
|
461
|
-
|
462
|
-
|
490
|
+
def self.find_files_from_load_path(glob) # :nodoc:
|
491
|
+
glob_with_suffixes = "#{glob}#{Gem.suffix_pattern}"
|
492
|
+
$LOAD_PATH.map do |load_path|
|
493
|
+
Gem::Util.glob_files_in_dir(glob_with_suffixes, load_path)
|
494
|
+
end.flatten.select {|file| File.file? file }
|
463
495
|
end
|
464
496
|
|
465
497
|
##
|
@@ -479,7 +511,7 @@ module Gem
|
|
479
511
|
|
480
512
|
files = find_files_from_load_path glob if check_load_path
|
481
513
|
|
482
|
-
files.concat Gem::Specification.latest_specs(true).map {
|
514
|
+
files.concat Gem::Specification.latest_specs(true).map {|spec|
|
483
515
|
spec.matches_for_glob("#{glob}#{Gem.suffix_pattern}")
|
484
516
|
}.flatten
|
485
517
|
|
@@ -487,73 +519,7 @@ module Gem
|
|
487
519
|
# the spec dirs directly, so we prune.
|
488
520
|
files.uniq! if check_load_path
|
489
521
|
|
490
|
-
|
491
|
-
end
|
492
|
-
|
493
|
-
##
|
494
|
-
# Finds the user's home directory.
|
495
|
-
#--
|
496
|
-
# Some comments from the ruby-talk list regarding finding the home
|
497
|
-
# directory:
|
498
|
-
#
|
499
|
-
# I have HOME, USERPROFILE and HOMEDRIVE + HOMEPATH. Ruby seems
|
500
|
-
# to be depending on HOME in those code samples. I propose that
|
501
|
-
# it should fallback to USERPROFILE and HOMEDRIVE + HOMEPATH (at
|
502
|
-
# least on Win32).
|
503
|
-
#++
|
504
|
-
#--
|
505
|
-
#
|
506
|
-
# FIXME move to pathsupport
|
507
|
-
#
|
508
|
-
#++
|
509
|
-
|
510
|
-
def self.find_home
|
511
|
-
windows = File::ALT_SEPARATOR
|
512
|
-
if not windows or RUBY_VERSION >= '1.9' then
|
513
|
-
File.expand_path "~"
|
514
|
-
else
|
515
|
-
['HOME', 'USERPROFILE'].each do |key|
|
516
|
-
return File.expand_path ENV[key] if ENV[key]
|
517
|
-
end
|
518
|
-
|
519
|
-
if ENV['HOMEDRIVE'] && ENV['HOMEPATH'] then
|
520
|
-
File.expand_path "#{ENV['HOMEDRIVE']}#{ENV['HOMEPATH']}"
|
521
|
-
end
|
522
|
-
end
|
523
|
-
rescue
|
524
|
-
if windows then
|
525
|
-
File.expand_path File.join(ENV['HOMEDRIVE'] || ENV['SystemDrive'], '/')
|
526
|
-
else
|
527
|
-
File.expand_path "/"
|
528
|
-
end
|
529
|
-
end
|
530
|
-
|
531
|
-
private_class_method :find_home
|
532
|
-
|
533
|
-
# FIXME deprecate these in 3.0
|
534
|
-
|
535
|
-
##
|
536
|
-
# Zlib::GzipReader wrapper that unzips +data+.
|
537
|
-
|
538
|
-
def self.gunzip(data)
|
539
|
-
require 'rubygems/util'
|
540
|
-
Gem::Util.gunzip data
|
541
|
-
end
|
542
|
-
|
543
|
-
##
|
544
|
-
# Zlib::GzipWriter wrapper that zips +data+.
|
545
|
-
|
546
|
-
def self.gzip(data)
|
547
|
-
require 'rubygems/util'
|
548
|
-
Gem::Util.gzip data
|
549
|
-
end
|
550
|
-
|
551
|
-
##
|
552
|
-
# A Zlib::Inflate#inflate wrapper
|
553
|
-
|
554
|
-
def self.inflate(data)
|
555
|
-
require 'rubygems/util'
|
556
|
-
Gem::Util.inflate data
|
522
|
+
files
|
557
523
|
end
|
558
524
|
|
559
525
|
##
|
@@ -561,11 +527,11 @@ module Gem
|
|
561
527
|
#
|
562
528
|
# % irb
|
563
529
|
# >> Gem.install "minitest"
|
564
|
-
# Fetching: minitest-
|
530
|
+
# Fetching: minitest-5.14.0.gem (100%)
|
565
531
|
# => [#<Gem::Specification:0x1013b4528 @name="minitest", ...>]
|
566
532
|
|
567
|
-
def self.install
|
568
|
-
|
533
|
+
def self.install(name, version = Gem::Requirement.default, *options)
|
534
|
+
require_relative "rubygems/dependency_installer"
|
569
535
|
inst = Gem::DependencyInstaller.new(*options)
|
570
536
|
inst.install name, version
|
571
537
|
inst.installed_gems
|
@@ -576,14 +542,12 @@ module Gem
|
|
576
542
|
# <tt>https://rubygems.org</tt>.
|
577
543
|
|
578
544
|
def self.host
|
579
|
-
# TODO: move to utils
|
580
545
|
@host ||= Gem::DEFAULT_HOST
|
581
546
|
end
|
582
547
|
|
583
548
|
## Set the default RubyGems API host.
|
584
549
|
|
585
|
-
def self.host=
|
586
|
-
# TODO: move to utils
|
550
|
+
def self.host=(host)
|
587
551
|
@host = host
|
588
552
|
end
|
589
553
|
|
@@ -596,9 +560,27 @@ module Gem
|
|
596
560
|
return i if path.instance_variable_defined?(:@gem_prelude_index)
|
597
561
|
end
|
598
562
|
|
599
|
-
index = $LOAD_PATH.index RbConfig::CONFIG[
|
563
|
+
index = $LOAD_PATH.index RbConfig::CONFIG["sitelibdir"]
|
600
564
|
|
601
|
-
index
|
565
|
+
index || 0
|
566
|
+
end
|
567
|
+
|
568
|
+
##
|
569
|
+
# The number of paths in the +$LOAD_PATH+ from activated gems. Used to
|
570
|
+
# prioritize +-I+ and <code>ENV['RUBYLIB']</code> entries during +require+.
|
571
|
+
|
572
|
+
def self.activated_gem_paths
|
573
|
+
@activated_gem_paths ||= 0
|
574
|
+
end
|
575
|
+
|
576
|
+
##
|
577
|
+
# Add a list of paths to the $LOAD_PATH at the proper place.
|
578
|
+
|
579
|
+
def self.add_to_load_path(*paths)
|
580
|
+
@activated_gem_paths = activated_gem_paths + paths.size
|
581
|
+
|
582
|
+
# gem directories must come after -I and ENV['RUBYLIB']
|
583
|
+
$LOAD_PATH.insert(Gem.load_path_insert_index, *paths)
|
602
584
|
end
|
603
585
|
|
604
586
|
@yaml_loaded = false
|
@@ -608,58 +590,41 @@ module Gem
|
|
608
590
|
|
609
591
|
def self.load_yaml
|
610
592
|
return if @yaml_loaded
|
611
|
-
return unless defined?(gem)
|
612
|
-
|
613
|
-
test_syck = ENV['TEST_SYCK']
|
614
|
-
|
615
|
-
# Only Ruby 1.8 and 1.9 have syck
|
616
|
-
test_syck = false unless /^1\./ =~ RUBY_VERSION
|
617
593
|
|
618
|
-
|
619
|
-
|
620
|
-
gem 'psych', '>= 1.2.1'
|
621
|
-
rescue Gem::LoadError
|
622
|
-
# It's OK if the user does not have the psych gem installed. We will
|
623
|
-
# attempt to require the stdlib version
|
624
|
-
end
|
594
|
+
require "psych"
|
595
|
+
require_relative "rubygems/psych_tree"
|
625
596
|
|
626
|
-
|
627
|
-
# Try requiring the gem version *or* stdlib version of psych.
|
628
|
-
require 'psych'
|
629
|
-
rescue ::LoadError
|
630
|
-
# If we can't load psych, thats fine, go on.
|
631
|
-
else
|
632
|
-
# If 'yaml' has already been required, then we have to
|
633
|
-
# be sure to switch it over to the newly loaded psych.
|
634
|
-
if defined?(YAML::ENGINE) && YAML::ENGINE.yamler != "psych"
|
635
|
-
YAML::ENGINE.yamler = "psych"
|
636
|
-
end
|
597
|
+
require_relative "rubygems/safe_yaml"
|
637
598
|
|
638
|
-
|
639
|
-
|
640
|
-
end
|
641
|
-
end
|
599
|
+
@yaml_loaded = true
|
600
|
+
end
|
642
601
|
|
643
|
-
|
602
|
+
@safe_marshal_loaded = false
|
644
603
|
|
645
|
-
|
646
|
-
|
647
|
-
if test_syck and defined?(YAML::ENGINE)
|
648
|
-
YAML::ENGINE.yamler = "syck" unless YAML::ENGINE.syck?
|
649
|
-
end
|
604
|
+
def self.load_safe_marshal
|
605
|
+
return if @safe_marshal_loaded
|
650
606
|
|
651
|
-
|
652
|
-
# in our hack to deal with Syck's DefaultKey ugliness.
|
653
|
-
require 'rubygems/syck_hack'
|
607
|
+
require_relative "rubygems/safe_marshal"
|
654
608
|
|
655
|
-
@
|
609
|
+
@safe_marshal_loaded = true
|
656
610
|
end
|
657
611
|
|
658
612
|
##
|
659
613
|
# The file name and line number of the caller of the caller of this method.
|
614
|
+
#
|
615
|
+
# +depth+ is how many layers up the call stack it should go.
|
616
|
+
#
|
617
|
+
# e.g.,
|
618
|
+
#
|
619
|
+
# def a; Gem.location_of_caller; end
|
620
|
+
# a #=> ["x.rb", 2] # (it'll vary depending on file name and line number)
|
621
|
+
#
|
622
|
+
# def b; c; end
|
623
|
+
# def c; Gem.location_of_caller(2); end
|
624
|
+
# b #=> ["x.rb", 6] # (it'll vary depending on file name and line number)
|
660
625
|
|
661
|
-
def self.location_of_caller
|
662
|
-
caller[
|
626
|
+
def self.location_of_caller(depth = 1)
|
627
|
+
caller[depth] =~ /(.*?):(\d+).*?$/i
|
663
628
|
file = $1
|
664
629
|
lineno = $2.to_i
|
665
630
|
|
@@ -770,9 +735,9 @@ module Gem
|
|
770
735
|
def self.prefix
|
771
736
|
prefix = File.dirname RUBYGEMS_DIR
|
772
737
|
|
773
|
-
if prefix != File.expand_path(RbConfig::CONFIG[
|
774
|
-
prefix != File.expand_path(RbConfig::CONFIG[
|
775
|
-
|
738
|
+
if prefix != File.expand_path(RbConfig::CONFIG["sitelibdir"]) &&
|
739
|
+
prefix != File.expand_path(RbConfig::CONFIG["libdir"]) &&
|
740
|
+
File.basename(RUBYGEMS_DIR) == "lib"
|
776
741
|
prefix
|
777
742
|
end
|
778
743
|
end
|
@@ -788,20 +753,42 @@ module Gem
|
|
788
753
|
# Safely read a file in binary mode on all platforms.
|
789
754
|
|
790
755
|
def self.read_binary(path)
|
791
|
-
|
792
|
-
|
793
|
-
|
756
|
+
open_file(path, "rb+", &:read)
|
757
|
+
rescue Errno::EACCES, Errno::EROFS
|
758
|
+
open_file(path, "rb", &:read)
|
759
|
+
end
|
760
|
+
|
761
|
+
##
|
762
|
+
# Safely write a file in binary mode on all platforms.
|
763
|
+
def self.write_binary(path, data)
|
764
|
+
open_file(path, "wb") do |io|
|
765
|
+
io.write data
|
794
766
|
end
|
795
|
-
rescue Errno::
|
796
|
-
|
797
|
-
|
767
|
+
rescue Errno::ENOSPC
|
768
|
+
# If we ran out of space but the file exists, it's *guaranteed* to be corrupted.
|
769
|
+
File.delete(path) if File.exist?(path)
|
770
|
+
raise
|
771
|
+
end
|
772
|
+
|
773
|
+
##
|
774
|
+
# Open a file with given flags, and on Windows protect access with flock
|
775
|
+
|
776
|
+
def self.open_file(path, flags, &block)
|
777
|
+
File.open(path, flags) do |io|
|
778
|
+
if !java_platform? && win_platform?
|
779
|
+
begin
|
780
|
+
io.flock(File::LOCK_EX)
|
781
|
+
rescue Errno::ENOSYS, Errno::ENOTSUP
|
782
|
+
end
|
783
|
+
end
|
784
|
+
yield io
|
798
785
|
end
|
799
786
|
rescue Errno::ENOLCK # NFS
|
800
787
|
if Thread.main != Thread.current
|
801
788
|
raise
|
802
789
|
else
|
803
|
-
open
|
804
|
-
|
790
|
+
File.open(path, flags) do |io|
|
791
|
+
yield io
|
805
792
|
end
|
806
793
|
end
|
807
794
|
end
|
@@ -810,11 +797,10 @@ module Gem
|
|
810
797
|
# The path to the running Ruby interpreter.
|
811
798
|
|
812
799
|
def self.ruby
|
813
|
-
if @ruby.nil?
|
814
|
-
@ruby =
|
815
|
-
"#{RbConfig::CONFIG['ruby_install_name']}#{RbConfig::CONFIG['EXEEXT']}")
|
800
|
+
if @ruby.nil?
|
801
|
+
@ruby = RbConfig.ruby
|
816
802
|
|
817
|
-
@ruby = "\"#{@ruby}\"" if @ruby
|
803
|
+
@ruby = "\"#{@ruby}\"" if /\s/.match?(@ruby)
|
818
804
|
end
|
819
805
|
|
820
806
|
@ruby
|
@@ -824,18 +810,27 @@ module Gem
|
|
824
810
|
# Returns a String containing the API compatibility version of Ruby
|
825
811
|
|
826
812
|
def self.ruby_api_version
|
827
|
-
@ruby_api_version ||= RbConfig::CONFIG[
|
813
|
+
@ruby_api_version ||= RbConfig::CONFIG["ruby_version"].dup
|
814
|
+
end
|
815
|
+
|
816
|
+
def self.env_requirement(gem_name)
|
817
|
+
@env_requirements_by_name ||= {}
|
818
|
+
@env_requirements_by_name[gem_name] ||= begin
|
819
|
+
req = ENV["GEM_REQUIREMENT_#{gem_name.upcase}"] || ">= 0"
|
820
|
+
Gem::Requirement.create(req)
|
821
|
+
end
|
828
822
|
end
|
823
|
+
post_reset { @env_requirements_by_name = {} }
|
829
824
|
|
830
825
|
##
|
831
826
|
# Returns the latest release-version specification for the gem +name+.
|
832
827
|
|
833
|
-
def self.latest_spec_for
|
828
|
+
def self.latest_spec_for(name)
|
834
829
|
dependency = Gem::Dependency.new name
|
835
830
|
fetcher = Gem::SpecFetcher.fetcher
|
836
831
|
spec_tuples, = fetcher.spec_for_dependency dependency
|
837
832
|
|
838
|
-
spec, = spec_tuples.
|
833
|
+
spec, = spec_tuples.last
|
839
834
|
|
840
835
|
spec
|
841
836
|
end
|
@@ -844,16 +839,15 @@ module Gem
|
|
844
839
|
# Returns the latest release version of RubyGems.
|
845
840
|
|
846
841
|
def self.latest_rubygems_version
|
847
|
-
latest_version_for(
|
848
|
-
raise
|
842
|
+
latest_version_for("rubygems-update") ||
|
843
|
+
raise("Can't find 'rubygems-update' in any repo. Check `gem source list`.")
|
849
844
|
end
|
850
845
|
|
851
846
|
##
|
852
847
|
# Returns the version of the latest release-version of gem +name+
|
853
848
|
|
854
|
-
def self.latest_version_for
|
855
|
-
|
856
|
-
spec and spec.version
|
849
|
+
def self.latest_version_for(name)
|
850
|
+
latest_spec_for(name)&.version
|
857
851
|
end
|
858
852
|
|
859
853
|
##
|
@@ -863,10 +857,13 @@ module Gem
|
|
863
857
|
return @ruby_version if defined? @ruby_version
|
864
858
|
version = RUBY_VERSION.dup
|
865
859
|
|
866
|
-
if
|
867
|
-
|
868
|
-
|
869
|
-
|
860
|
+
if RUBY_PATCHLEVEL == -1
|
861
|
+
if RUBY_ENGINE == "ruby"
|
862
|
+
desc = RUBY_DESCRIPTION[/\Aruby #{Regexp.quote(RUBY_VERSION)}([^ ]+) /, 1]
|
863
|
+
else
|
864
|
+
desc = RUBY_DESCRIPTION[/\A#{RUBY_ENGINE} #{Regexp.quote(RUBY_ENGINE_VERSION)} \(#{RUBY_VERSION}([^ ]+)\) /, 1]
|
865
|
+
end
|
866
|
+
version << ".#{desc}" if desc
|
870
867
|
end
|
871
868
|
|
872
869
|
@ruby_version = Gem::Version.new version
|
@@ -885,7 +882,8 @@ module Gem
|
|
885
882
|
# default_sources if the sources list is empty.
|
886
883
|
|
887
884
|
def self.sources
|
888
|
-
|
885
|
+
source_list = configuration.sources || default_sources
|
886
|
+
@sources ||= Gem::SourceList.from(source_list)
|
889
887
|
end
|
890
888
|
|
891
889
|
##
|
@@ -895,7 +893,7 @@ module Gem
|
|
895
893
|
# DOC: This comment is not documentation about the method itself, it's
|
896
894
|
# more of a code comment about the implementation.
|
897
895
|
|
898
|
-
def self.sources=
|
896
|
+
def self.sources=(new_sources)
|
899
897
|
if !new_sources
|
900
898
|
@sources = nil
|
901
899
|
else
|
@@ -907,21 +905,48 @@ module Gem
|
|
907
905
|
# Glob pattern for require-able path suffixes.
|
908
906
|
|
909
907
|
def self.suffix_pattern
|
910
|
-
@suffix_pattern ||= "{#{suffixes.join(
|
908
|
+
@suffix_pattern ||= "{#{suffixes.join(",")}}"
|
909
|
+
end
|
910
|
+
|
911
|
+
##
|
912
|
+
# Regexp for require-able path suffixes.
|
913
|
+
|
914
|
+
def self.suffix_regexp
|
915
|
+
@suffix_regexp ||= /#{Regexp.union(suffixes)}\z/
|
916
|
+
end
|
917
|
+
|
918
|
+
##
|
919
|
+
# Glob pattern for require-able plugin suffixes.
|
920
|
+
|
921
|
+
def self.plugin_suffix_pattern
|
922
|
+
@plugin_suffix_pattern ||= "_plugin#{suffix_pattern}"
|
923
|
+
end
|
924
|
+
|
925
|
+
##
|
926
|
+
# Regexp for require-able plugin suffixes.
|
927
|
+
|
928
|
+
def self.plugin_suffix_regexp
|
929
|
+
@plugin_suffix_regexp ||= /_plugin#{suffix_regexp}\z/
|
911
930
|
end
|
912
931
|
|
913
932
|
##
|
914
933
|
# Suffixes for require-able paths.
|
915
934
|
|
916
935
|
def self.suffixes
|
917
|
-
@suffixes ||= [
|
918
|
-
|
919
|
-
*%w
|
936
|
+
@suffixes ||= ["",
|
937
|
+
".rb",
|
938
|
+
*%w[DLEXT DLEXT2].map do |key|
|
920
939
|
val = RbConfig::CONFIG[key]
|
921
|
-
next unless val
|
940
|
+
next unless val && !val.empty?
|
922
941
|
".#{val}"
|
923
|
-
|
924
|
-
|
942
|
+
end].compact.uniq
|
943
|
+
end
|
944
|
+
|
945
|
+
##
|
946
|
+
# Suffixes for dynamic library require-able paths.
|
947
|
+
|
948
|
+
def self.dynamic_library_suffixes
|
949
|
+
@dynamic_library_suffixes ||= suffixes - [".rb"]
|
925
950
|
end
|
926
951
|
|
927
952
|
##
|
@@ -935,7 +960,7 @@ module Gem
|
|
935
960
|
|
936
961
|
elapsed = Time.now - now
|
937
962
|
|
938
|
-
ui.say "%2$*1$s: %3$3.3fs"
|
963
|
+
ui.say format("%2$*1$s: %3$3.3fs", -width, msg, elapsed) if display
|
939
964
|
|
940
965
|
value
|
941
966
|
end
|
@@ -944,7 +969,7 @@ module Gem
|
|
944
969
|
# Lazily loads DefaultUserInteraction and returns the default UI.
|
945
970
|
|
946
971
|
def self.ui
|
947
|
-
|
972
|
+
require_relative "rubygems/user_interaction"
|
948
973
|
|
949
974
|
Gem::DefaultUserInteraction.ui
|
950
975
|
end
|
@@ -956,44 +981,50 @@ module Gem
|
|
956
981
|
def self.use_paths(home, *paths)
|
957
982
|
paths.flatten!
|
958
983
|
paths.compact!
|
959
|
-
hash = { "GEM_HOME" => home, "GEM_PATH" => paths.join(File::PATH_SEPARATOR) }
|
960
|
-
hash.delete_if {
|
984
|
+
hash = { "GEM_HOME" => home, "GEM_PATH" => paths.empty? ? home : paths.join(File::PATH_SEPARATOR) }
|
985
|
+
hash.delete_if {|_, v| v.nil? }
|
961
986
|
self.paths = hash
|
962
987
|
end
|
963
988
|
|
964
|
-
##
|
965
|
-
# The home directory for the user.
|
966
|
-
|
967
|
-
def self.user_home
|
968
|
-
@user_home ||= find_home.untaint
|
969
|
-
end
|
970
|
-
|
971
989
|
##
|
972
990
|
# Is this a windows platform?
|
973
991
|
|
974
992
|
def self.win_platform?
|
975
|
-
if @@win_platform.nil?
|
976
|
-
ruby_platform = RbConfig::CONFIG[
|
977
|
-
@@win_platform =
|
993
|
+
if @@win_platform.nil?
|
994
|
+
ruby_platform = RbConfig::CONFIG["host_os"]
|
995
|
+
@@win_platform = !WIN_PATTERNS.find {|r| ruby_platform =~ r }.nil?
|
978
996
|
end
|
979
997
|
|
980
998
|
@@win_platform
|
981
999
|
end
|
982
1000
|
|
1001
|
+
##
|
1002
|
+
# Is this a java platform?
|
1003
|
+
|
1004
|
+
def self.java_platform?
|
1005
|
+
RUBY_PLATFORM == "java"
|
1006
|
+
end
|
1007
|
+
|
1008
|
+
##
|
1009
|
+
# Is this platform Solaris?
|
1010
|
+
|
1011
|
+
def self.solaris_platform?
|
1012
|
+
RUBY_PLATFORM.include?("solaris")
|
1013
|
+
end
|
1014
|
+
|
983
1015
|
##
|
984
1016
|
# Load +plugins+ as Ruby files
|
985
1017
|
|
986
|
-
def self.load_plugin_files
|
1018
|
+
def self.load_plugin_files(plugins) # :nodoc:
|
987
1019
|
plugins.each do |plugin|
|
988
|
-
|
989
1020
|
# Skip older versions of the GemCutter plugin: Its commands are in
|
990
1021
|
# RubyGems proper now.
|
991
1022
|
|
992
|
-
next if
|
1023
|
+
next if /gemcutter-0\.[0-3]/.match?(plugin)
|
993
1024
|
|
994
1025
|
begin
|
995
1026
|
load plugin
|
996
|
-
rescue
|
1027
|
+
rescue ScriptError, StandardError => e
|
997
1028
|
details = "#{plugin.inspect}: #{e.message} (#{e.class})"
|
998
1029
|
warn "Error loading RubyGems plugin #{details}"
|
999
1030
|
end
|
@@ -1001,15 +1032,11 @@ module Gem
|
|
1001
1032
|
end
|
1002
1033
|
|
1003
1034
|
##
|
1004
|
-
# Find
|
1005
|
-
# them
|
1035
|
+
# Find rubygems plugin files in the standard location and load them
|
1006
1036
|
|
1007
1037
|
def self.load_plugins
|
1008
|
-
|
1009
|
-
|
1010
|
-
load_plugin_files find_files('rubygems_plugin', false)
|
1011
|
-
else
|
1012
|
-
load_plugin_files find_latest_files('rubygems_plugin', false)
|
1038
|
+
Gem.path.each do |gem_path|
|
1039
|
+
load_plugin_files Gem::Util.glob_files_in_dir("*#{Gem.plugin_suffix_pattern}", plugindir(gem_path))
|
1013
1040
|
end
|
1014
1041
|
end
|
1015
1042
|
|
@@ -1017,18 +1044,7 @@ module Gem
|
|
1017
1044
|
# Find all 'rubygems_plugin' files in $LOAD_PATH and load them
|
1018
1045
|
|
1019
1046
|
def self.load_env_plugins
|
1020
|
-
|
1021
|
-
|
1022
|
-
files = []
|
1023
|
-
$LOAD_PATH.each do |load_path|
|
1024
|
-
globbed = Dir["#{File.expand_path path, load_path}#{Gem.suffix_pattern}"]
|
1025
|
-
|
1026
|
-
globbed.each do |load_path_file|
|
1027
|
-
files << load_path_file if File.file?(load_path_file.untaint)
|
1028
|
-
end
|
1029
|
-
end
|
1030
|
-
|
1031
|
-
load_plugin_files files
|
1047
|
+
load_plugin_files find_files_from_load_path("rubygems_plugin")
|
1032
1048
|
end
|
1033
1049
|
|
1034
1050
|
##
|
@@ -1051,19 +1067,17 @@ module Gem
|
|
1051
1067
|
# execution of arbitrary code when used from directories outside your
|
1052
1068
|
# control.
|
1053
1069
|
|
1054
|
-
def self.use_gemdeps
|
1070
|
+
def self.use_gemdeps(path = nil)
|
1055
1071
|
raise_exception = path
|
1056
1072
|
|
1057
|
-
path ||= ENV[
|
1073
|
+
path ||= ENV["RUBYGEMS_GEMDEPS"]
|
1058
1074
|
return unless path
|
1059
1075
|
|
1060
1076
|
path = path.dup
|
1061
1077
|
|
1062
|
-
if path == "-"
|
1063
|
-
require 'rubygems/util'
|
1064
|
-
|
1078
|
+
if path == "-"
|
1065
1079
|
Gem::Util.traverse_parents Dir.pwd do |directory|
|
1066
|
-
dep_file = GEM_DEP_FILES.find {
|
1080
|
+
dep_file = GEM_DEP_FILES.find {|f| File.file?(f) }
|
1067
1081
|
|
1068
1082
|
next unless dep_file
|
1069
1083
|
|
@@ -1072,39 +1086,87 @@ module Gem
|
|
1072
1086
|
end
|
1073
1087
|
end
|
1074
1088
|
|
1075
|
-
path
|
1076
|
-
|
1077
|
-
unless File.file? path then
|
1089
|
+
unless File.file? path
|
1078
1090
|
return unless raise_exception
|
1079
1091
|
|
1080
1092
|
raise ArgumentError, "Unable to find gem dependencies file at #{path}"
|
1081
1093
|
end
|
1082
1094
|
|
1083
|
-
|
1084
|
-
|
1085
|
-
|
1086
|
-
|
1087
|
-
|
1088
|
-
|
1089
|
-
|
1095
|
+
ENV["BUNDLE_GEMFILE"] ||= File.expand_path(path)
|
1096
|
+
require_relative "rubygems/user_interaction"
|
1097
|
+
require "bundler"
|
1098
|
+
begin
|
1099
|
+
Gem::DefaultUserInteraction.use_ui(ui) do
|
1100
|
+
Bundler.ui.silence do
|
1101
|
+
@gemdeps = Bundler.setup
|
1102
|
+
end
|
1103
|
+
ensure
|
1104
|
+
Gem::DefaultUserInteraction.ui.close
|
1105
|
+
end
|
1106
|
+
rescue Bundler::BundlerError => e
|
1107
|
+
warn e.message
|
1108
|
+
warn "You may need to `bundle install` to install missing gems"
|
1109
|
+
warn ""
|
1090
1110
|
end
|
1091
|
-
rescue Gem::LoadError, Gem::UnsatisfiableDependencyError => e
|
1092
|
-
warn e.message
|
1093
|
-
warn "You may need to `gem install -g` to install missing gems"
|
1094
|
-
warn ""
|
1095
1111
|
end
|
1096
1112
|
|
1097
|
-
|
1098
|
-
|
1099
|
-
|
1113
|
+
##
|
1114
|
+
# If the SOURCE_DATE_EPOCH environment variable is set, returns it's value.
|
1115
|
+
# Otherwise, returns the time that +Gem.source_date_epoch_string+ was
|
1116
|
+
# first called in the same format as SOURCE_DATE_EPOCH.
|
1117
|
+
#
|
1118
|
+
# NOTE(@duckinator): The implementation is a tad weird because we want to:
|
1119
|
+
# 1. Make builds reproducible by default, by having this function always
|
1120
|
+
# return the same result during a given run.
|
1121
|
+
# 2. Allow changing ENV['SOURCE_DATE_EPOCH'] at runtime, since multiple
|
1122
|
+
# tests that set this variable will be run in a single process.
|
1123
|
+
#
|
1124
|
+
# If you simplify this function and a lot of tests fail, that is likely
|
1125
|
+
# due to #2 above.
|
1126
|
+
#
|
1127
|
+
# Details on SOURCE_DATE_EPOCH:
|
1128
|
+
# https://reproducible-builds.org/specs/source-date-epoch/
|
1129
|
+
|
1130
|
+
def self.source_date_epoch_string
|
1131
|
+
# The value used if $SOURCE_DATE_EPOCH is not set.
|
1132
|
+
@default_source_date_epoch ||= Time.now.to_i.to_s
|
1100
1133
|
|
1101
|
-
|
1134
|
+
specified_epoch = ENV["SOURCE_DATE_EPOCH"]
|
1135
|
+
|
1136
|
+
# If it's empty or just whitespace, treat it like it wasn't set at all.
|
1137
|
+
specified_epoch = nil if !specified_epoch.nil? && specified_epoch.strip.empty?
|
1138
|
+
|
1139
|
+
epoch = specified_epoch || @default_source_date_epoch
|
1140
|
+
|
1141
|
+
epoch.strip
|
1142
|
+
end
|
1143
|
+
|
1144
|
+
##
|
1145
|
+
# Returns the value of Gem.source_date_epoch_string, as a Time object.
|
1146
|
+
#
|
1147
|
+
# This is used throughout RubyGems for enabling reproducible builds.
|
1148
|
+
|
1149
|
+
def self.source_date_epoch
|
1150
|
+
Time.at(source_date_epoch_string.to_i).utc.freeze
|
1102
1151
|
end
|
1103
1152
|
|
1104
1153
|
# FIX: Almost everywhere else we use the `def self.` way of defining class
|
1105
1154
|
# methods, and then we switch over to `class << self` here. Pick one or the
|
1106
1155
|
# other.
|
1107
1156
|
class << self
|
1157
|
+
##
|
1158
|
+
# RubyGems distributors (like operating system package managers) can
|
1159
|
+
# disable RubyGems update by setting this to error message printed to
|
1160
|
+
# end-users on gem update --system instead of actual update.
|
1161
|
+
|
1162
|
+
attr_accessor :disable_system_update_message
|
1163
|
+
|
1164
|
+
##
|
1165
|
+
# Whether RubyGems should enhance builtin `require` to automatically
|
1166
|
+
# check whether the path required is present in installed gems, and
|
1167
|
+
# automatically activate them and add them to `$LOAD_PATH`.
|
1168
|
+
|
1169
|
+
attr_accessor :discover_gems_on_require
|
1108
1170
|
|
1109
1171
|
##
|
1110
1172
|
# Hash of loaded Gem::Specification keyed by name
|
@@ -1130,10 +1192,11 @@ module Gem
|
|
1130
1192
|
#
|
1131
1193
|
|
1132
1194
|
def register_default_spec(spec)
|
1133
|
-
|
1195
|
+
extended_require_paths = spec.require_paths.map {|f| f + "/" }
|
1196
|
+
new_format = extended_require_paths.any? {|path| spec.files.any? {|f| f.start_with? path } }
|
1134
1197
|
|
1135
1198
|
if new_format
|
1136
|
-
prefix_group =
|
1199
|
+
prefix_group = extended_require_paths.join("|")
|
1137
1200
|
prefix_pattern = /^(#{prefix_group})/
|
1138
1201
|
end
|
1139
1202
|
|
@@ -1143,7 +1206,10 @@ module Gem
|
|
1143
1206
|
next unless $~
|
1144
1207
|
end
|
1145
1208
|
|
1209
|
+
spec.activate if already_loaded?(file)
|
1210
|
+
|
1146
1211
|
@path_to_default_spec_map[file] = spec
|
1212
|
+
@path_to_default_spec_map[file.sub(suffix_regexp, "")] = spec
|
1147
1213
|
end
|
1148
1214
|
end
|
1149
1215
|
|
@@ -1151,21 +1217,8 @@ module Gem
|
|
1151
1217
|
# Find a Gem::Specification of default gem from +path+
|
1152
1218
|
|
1153
1219
|
def find_unresolved_default_spec(path)
|
1154
|
-
|
1155
|
-
|
1156
|
-
return spec if spec
|
1157
|
-
end
|
1158
|
-
nil
|
1159
|
-
end
|
1160
|
-
|
1161
|
-
##
|
1162
|
-
# Remove needless Gem::Specification of default gem from
|
1163
|
-
# unresolved default gem list
|
1164
|
-
|
1165
|
-
def remove_unresolved_default_spec(spec)
|
1166
|
-
spec.files.each do |file|
|
1167
|
-
@path_to_default_spec_map.delete(file)
|
1168
|
-
end
|
1220
|
+
default_spec = @path_to_default_spec_map[path]
|
1221
|
+
return default_spec if default_spec && loaded_specs[default_spec.name] != default_spec
|
1169
1222
|
end
|
1170
1223
|
|
1171
1224
|
##
|
@@ -1219,54 +1272,86 @@ module Gem
|
|
1219
1272
|
# work
|
1220
1273
|
|
1221
1274
|
attr_reader :pre_uninstall_hooks
|
1275
|
+
|
1276
|
+
private
|
1277
|
+
|
1278
|
+
def already_loaded?(file)
|
1279
|
+
$LOADED_FEATURES.any? do |feature_path|
|
1280
|
+
feature_path.end_with?(file) && default_gem_load_paths.any? {|load_path_entry| feature_path == "#{load_path_entry}/#{file}" }
|
1281
|
+
end
|
1282
|
+
end
|
1283
|
+
|
1284
|
+
def default_gem_load_paths
|
1285
|
+
@default_gem_load_paths ||= $LOAD_PATH[load_path_insert_index..-1].map do |lp|
|
1286
|
+
expanded = File.expand_path(lp)
|
1287
|
+
next expanded unless File.exist?(expanded)
|
1288
|
+
|
1289
|
+
File.realpath(expanded)
|
1290
|
+
end
|
1291
|
+
end
|
1222
1292
|
end
|
1223
1293
|
|
1224
1294
|
##
|
1225
1295
|
# Location of Marshal quick gemspecs on remote repositories
|
1226
1296
|
|
1227
|
-
MARSHAL_SPEC_DIR = "quick/Marshal.#{Gem.marshal_version}/"
|
1228
|
-
|
1229
|
-
autoload :ConfigFile,
|
1230
|
-
autoload :
|
1231
|
-
autoload :
|
1232
|
-
autoload :
|
1233
|
-
autoload :Installer,
|
1234
|
-
autoload :Licenses,
|
1235
|
-
autoload :
|
1236
|
-
autoload :
|
1237
|
-
autoload :RequestSet,
|
1238
|
-
autoload :Requirement,
|
1239
|
-
autoload :Resolver,
|
1240
|
-
autoload :Source,
|
1241
|
-
autoload :SourceList,
|
1242
|
-
autoload :SpecFetcher,
|
1243
|
-
autoload :
|
1244
|
-
autoload :
|
1245
|
-
|
1246
|
-
require "rubygems/specification"
|
1297
|
+
MARSHAL_SPEC_DIR = "quick/Marshal.#{Gem.marshal_version}/".freeze
|
1298
|
+
|
1299
|
+
autoload :ConfigFile, File.expand_path("rubygems/config_file", __dir__)
|
1300
|
+
autoload :CIDetector, File.expand_path("rubygems/ci_detector", __dir__)
|
1301
|
+
autoload :Dependency, File.expand_path("rubygems/dependency", __dir__)
|
1302
|
+
autoload :DependencyList, File.expand_path("rubygems/dependency_list", __dir__)
|
1303
|
+
autoload :Installer, File.expand_path("rubygems/installer", __dir__)
|
1304
|
+
autoload :Licenses, File.expand_path("rubygems/util/licenses", __dir__)
|
1305
|
+
autoload :NameTuple, File.expand_path("rubygems/name_tuple", __dir__)
|
1306
|
+
autoload :PathSupport, File.expand_path("rubygems/path_support", __dir__)
|
1307
|
+
autoload :RequestSet, File.expand_path("rubygems/request_set", __dir__)
|
1308
|
+
autoload :Requirement, File.expand_path("rubygems/requirement", __dir__)
|
1309
|
+
autoload :Resolver, File.expand_path("rubygems/resolver", __dir__)
|
1310
|
+
autoload :Source, File.expand_path("rubygems/source", __dir__)
|
1311
|
+
autoload :SourceList, File.expand_path("rubygems/source_list", __dir__)
|
1312
|
+
autoload :SpecFetcher, File.expand_path("rubygems/spec_fetcher", __dir__)
|
1313
|
+
autoload :SpecificationPolicy, File.expand_path("rubygems/specification_policy", __dir__)
|
1314
|
+
autoload :Util, File.expand_path("rubygems/util", __dir__)
|
1315
|
+
autoload :Version, File.expand_path("rubygems/version", __dir__)
|
1247
1316
|
end
|
1248
1317
|
|
1249
|
-
|
1318
|
+
require_relative "rubygems/exceptions"
|
1319
|
+
require_relative "rubygems/specification"
|
1250
1320
|
|
1251
1321
|
# REFACTOR: This should be pulled out into some kind of hacks file.
|
1252
|
-
|
1253
|
-
|
1254
|
-
|
1255
|
-
|
1256
|
-
|
1322
|
+
begin
|
1323
|
+
##
|
1324
|
+
# Defaults the operating system (or packager) wants to provide for RubyGems.
|
1325
|
+
|
1326
|
+
require "rubygems/defaults/operating_system"
|
1327
|
+
rescue LoadError
|
1328
|
+
# Ignored
|
1329
|
+
rescue StandardError => e
|
1330
|
+
path = e.backtrace_locations.reverse.find {|l| l.path.end_with?("rubygems/defaults/operating_system.rb") }.path
|
1331
|
+
msg = "#{e.message}\n" \
|
1332
|
+
"Loading the #{path} file caused an error. " \
|
1333
|
+
"This file is owned by your OS, not by rubygems upstream. " \
|
1334
|
+
"Please find out which OS package this file belongs to and follow the guidelines from your OS to report " \
|
1335
|
+
"the problem and ask for help."
|
1336
|
+
raise e.class, msg
|
1337
|
+
end
|
1257
1338
|
|
1258
|
-
|
1259
|
-
|
1260
|
-
|
1339
|
+
begin
|
1340
|
+
##
|
1341
|
+
# Defaults the Ruby implementation wants to provide for RubyGems
|
1261
1342
|
|
1262
|
-
|
1263
|
-
|
1264
|
-
|
1265
|
-
# Defaults the Ruby implementation wants to provide for RubyGems
|
1343
|
+
require "rubygems/defaults/#{RUBY_ENGINE}"
|
1344
|
+
rescue LoadError
|
1345
|
+
end
|
1266
1346
|
|
1267
|
-
|
1268
|
-
|
1269
|
-
|
1347
|
+
# TruffleRuby >= 24 defines REUSE_AS_BINARY_ON_TRUFFLERUBY in defaults/truffleruby.
|
1348
|
+
# However, TruffleRuby < 24 defines REUSE_AS_BINARY_ON_TRUFFLERUBY directly in its copy
|
1349
|
+
# of lib/rubygems/platform.rb, so it is not defined if RubyGems is updated (gem update --system).
|
1350
|
+
# Instead, we define it here in that case, similar to bundler/lib/bundler/rubygems_ext.rb.
|
1351
|
+
# We must define it here and not in platform.rb because platform.rb is loaded before defaults/truffleruby.
|
1352
|
+
class Gem::Platform
|
1353
|
+
if RUBY_ENGINE == "truffleruby" && !defined?(REUSE_AS_BINARY_ON_TRUFFLERUBY)
|
1354
|
+
REUSE_AS_BINARY_ON_TRUFFLERUBY = %w[libv8 libv8-node sorbet-static].freeze
|
1270
1355
|
end
|
1271
1356
|
end
|
1272
1357
|
|
@@ -1274,7 +1359,17 @@ end
|
|
1274
1359
|
# Loads the default specs.
|
1275
1360
|
Gem::Specification.load_defaults
|
1276
1361
|
|
1277
|
-
|
1278
|
-
|
1362
|
+
require_relative "rubygems/core_ext/kernel_gem"
|
1363
|
+
|
1364
|
+
path = File.join(__dir__, "rubygems/core_ext/kernel_require.rb")
|
1365
|
+
# When https://bugs.ruby-lang.org/issues/17259 is available, there is no need to override Kernel#warn
|
1366
|
+
if RUBY_ENGINE == "truffleruby" ||
|
1367
|
+
RUBY_ENGINE == "ruby"
|
1368
|
+
file = "<internal:#{path}>"
|
1369
|
+
else
|
1370
|
+
require_relative "rubygems/core_ext/kernel_warn"
|
1371
|
+
file = path
|
1372
|
+
end
|
1373
|
+
eval File.read(path), nil, file
|
1279
1374
|
|
1280
|
-
|
1375
|
+
require ENV["BUNDLER_SETUP"] if ENV["BUNDLER_SETUP"] && !defined?(Bundler)
|