rubygems-update 2.6.1 → 3.5.0
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 +5899 -0
- data/CODE_OF_CONDUCT.md +76 -35
- data/CONTRIBUTING.md +231 -0
- data/MAINTAINERS.txt +8 -0
- data/Manifest.txt +428 -216
- data/POLICIES.md +135 -0
- data/README.md +112 -0
- data/UPGRADING.md +15 -0
- data/bundler/CHANGELOG.md +4719 -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 +245 -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 +1005 -0
- data/bundler/lib/bundler/dependency.rb +101 -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 +601 -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 +170 -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 +117 -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 +247 -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/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/LICENSE.txt +22 -0
- data/bundler/lib/bundler/vendor/fileutils/lib/fileutils.rb +2694 -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/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/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 +115 -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 +84 -0
- data/bundler/lib/bundler/vendor/thor/lib/thor/shell/lcs_diff.rb +49 -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/LICENSE.txt +22 -0
- data/bundler/lib/bundler/vendor/tsort/lib/tsort.rb +455 -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 +665 -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 +75 -58
- 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 +155 -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/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/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 +245 -145
- 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 +103 -53
- 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/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 +87 -45
- 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/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 +138 -0
- data/lib/rubygems/safe_marshal/reader.rb +306 -0
- data/lib/rubygems/safe_marshal/visitors/stream_printer.rb +31 -0
- data/lib/rubygems/safe_marshal/visitors/to_ruby.rb +385 -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/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 +427 -361
- data/rubygems-update.gemspec +38 -0
- data/setup.rb +13 -27
- metadata +500 -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 -3105
- 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 -1718
- 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 -1007
- 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/request_set.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
-
|
2
|
+
|
3
|
+
require_relative "tsort"
|
3
4
|
|
4
5
|
##
|
5
6
|
# A RequestSet groups a request to activate a set of dependencies.
|
@@ -15,8 +16,7 @@ require 'tsort'
|
|
15
16
|
# #=> ["nokogiri-1.6.0", "mini_portile-0.5.1", "pg-0.17.0"]
|
16
17
|
|
17
18
|
class Gem::RequestSet
|
18
|
-
|
19
|
-
include TSort
|
19
|
+
include Gem::TSort
|
20
20
|
|
21
21
|
##
|
22
22
|
# Array of gems to install even if already installed
|
@@ -91,7 +91,7 @@ class Gem::RequestSet
|
|
91
91
|
#
|
92
92
|
# set = Gem::RequestSet.new nokogiri, pg
|
93
93
|
|
94
|
-
def initialize
|
94
|
+
def initialize(*deps)
|
95
95
|
@dependencies = deps
|
96
96
|
|
97
97
|
@always_install = []
|
@@ -108,7 +108,7 @@ class Gem::RequestSet
|
|
108
108
|
@requests = []
|
109
109
|
@sets = []
|
110
110
|
@soft_missing = false
|
111
|
-
@
|
111
|
+
@sorted_requests = nil
|
112
112
|
@specs = nil
|
113
113
|
@vendor_set = nil
|
114
114
|
@source_set = nil
|
@@ -119,8 +119,8 @@ class Gem::RequestSet
|
|
119
119
|
##
|
120
120
|
# Declare that a gem of name +name+ with +reqs+ requirements is needed.
|
121
121
|
|
122
|
-
def gem
|
123
|
-
if dep = @dependency_names[name]
|
122
|
+
def gem(name, *reqs)
|
123
|
+
if dep = @dependency_names[name]
|
124
124
|
dep.requirement.concat reqs
|
125
125
|
else
|
126
126
|
dep = Gem::Dependency.new name, *reqs
|
@@ -132,7 +132,7 @@ class Gem::RequestSet
|
|
132
132
|
##
|
133
133
|
# Add +deps+ Gem::Dependency objects to the set.
|
134
134
|
|
135
|
-
def import
|
135
|
+
def import(deps)
|
136
136
|
@dependencies.concat deps
|
137
137
|
end
|
138
138
|
|
@@ -143,7 +143,7 @@ class Gem::RequestSet
|
|
143
143
|
# The +installer+ will be +nil+ if a gem matching the request was already
|
144
144
|
# installed.
|
145
145
|
|
146
|
-
def install
|
146
|
+
def install(options, &block) # :yields: request, installer
|
147
147
|
if dir = options[:install_dir]
|
148
148
|
requests = install_into dir, false, options, &block
|
149
149
|
return requests
|
@@ -152,42 +152,62 @@ class Gem::RequestSet
|
|
152
152
|
@prerelease = options[:prerelease]
|
153
153
|
|
154
154
|
requests = []
|
155
|
+
download_queue = Thread::Queue.new
|
155
156
|
|
157
|
+
# Create a thread-safe list of gems to download
|
156
158
|
sorted_requests.each do |req|
|
157
|
-
|
159
|
+
download_queue << req
|
160
|
+
end
|
161
|
+
|
162
|
+
# Create N threads in a pool, have them download all the gems
|
163
|
+
threads = Array.new(Gem.configuration.concurrent_downloads) do
|
164
|
+
# When a thread pops this item, it knows to stop running. The symbol
|
165
|
+
# is queued here so that there will be one symbol per thread.
|
166
|
+
download_queue << :stop
|
167
|
+
|
168
|
+
Thread.new do
|
169
|
+
# The pop method will block waiting for items, so the only way
|
170
|
+
# to stop a thread from running is to provide a final item that
|
171
|
+
# means the thread should stop.
|
172
|
+
while req = download_queue.pop
|
173
|
+
break if req == :stop
|
174
|
+
req.spec.download options unless req.installed?
|
175
|
+
end
|
176
|
+
end
|
177
|
+
end
|
178
|
+
|
179
|
+
# Wait for all the downloads to finish before continuing
|
180
|
+
threads.each(&:value)
|
181
|
+
|
182
|
+
# Install requested gems after they have been downloaded
|
183
|
+
sorted_requests.each do |req|
|
184
|
+
if req.installed?
|
158
185
|
req.spec.spec.build_extensions
|
159
186
|
|
160
|
-
if @always_install.none? {
|
187
|
+
if @always_install.none? {|spec| spec == req.spec.spec }
|
161
188
|
yield req, nil if block_given?
|
162
189
|
next
|
163
190
|
end
|
164
191
|
end
|
165
192
|
|
166
|
-
spec =
|
167
|
-
|
168
|
-
|
193
|
+
spec =
|
194
|
+
begin
|
195
|
+
req.spec.install options do |installer|
|
196
|
+
yield req, installer if block_given?
|
197
|
+
end
|
198
|
+
rescue Gem::RuntimeRequirementNotMetError => e
|
199
|
+
suggestion = "There are no versions of #{req.request} compatible with your Ruby & RubyGems"
|
200
|
+
suggestion += ". Maybe try installing an older version of the gem you're looking for?" unless @always_install.include?(req.spec.spec)
|
201
|
+
e.suggestion = suggestion
|
202
|
+
raise
|
203
|
+
end
|
169
204
|
|
170
205
|
requests << spec
|
171
206
|
end
|
172
207
|
|
173
208
|
return requests if options[:gemdeps]
|
174
209
|
|
175
|
-
|
176
|
-
case request
|
177
|
-
when Gem::Resolver::ActivationRequest then
|
178
|
-
request.spec.spec
|
179
|
-
else
|
180
|
-
request
|
181
|
-
end
|
182
|
-
end
|
183
|
-
|
184
|
-
require 'rubygems/dependency_installer'
|
185
|
-
inst = Gem::DependencyInstaller.new options
|
186
|
-
inst.installed_gems.replace specs
|
187
|
-
|
188
|
-
Gem.done_installing_hooks.each do |hook|
|
189
|
-
hook.call inst, specs
|
190
|
-
end unless Gem.done_installing_hooks.empty?
|
210
|
+
install_hooks requests, options
|
191
211
|
|
192
212
|
requests
|
193
213
|
end
|
@@ -199,7 +219,7 @@ class Gem::RequestSet
|
|
199
219
|
# If +:without_groups+ is given in the +options+, those groups in the gem
|
200
220
|
# dependencies file are not used. See Gem::Installer for other +options+.
|
201
221
|
|
202
|
-
def install_from_gemdeps
|
222
|
+
def install_from_gemdeps(options, &block)
|
203
223
|
gemdeps = options[:gemdeps]
|
204
224
|
|
205
225
|
@install_dir = options[:install_dir] || Gem.dir
|
@@ -224,7 +244,7 @@ class Gem::RequestSet
|
|
224
244
|
else
|
225
245
|
installed = install options, &block
|
226
246
|
|
227
|
-
if options.fetch :lock, true
|
247
|
+
if options.fetch :lock, true
|
228
248
|
lockfile =
|
229
249
|
Gem::RequestSet::Lockfile.build self, gemdeps, gem_deps_api.dependencies
|
230
250
|
lockfile.write
|
@@ -234,11 +254,12 @@ class Gem::RequestSet
|
|
234
254
|
end
|
235
255
|
end
|
236
256
|
|
237
|
-
def install_into
|
238
|
-
gem_home
|
257
|
+
def install_into(dir, force = true, options = {})
|
258
|
+
gem_home = ENV["GEM_HOME"]
|
259
|
+
ENV["GEM_HOME"] = dir
|
239
260
|
|
240
261
|
existing = force ? [] : specs_in(dir)
|
241
|
-
existing.delete_if {
|
262
|
+
existing.delete_if {|s| @always_install.include? s }
|
242
263
|
|
243
264
|
dir = File.expand_path dir
|
244
265
|
|
@@ -252,7 +273,7 @@ class Gem::RequestSet
|
|
252
273
|
sorted_requests.each do |request|
|
253
274
|
spec = request.spec
|
254
275
|
|
255
|
-
if existing.find {
|
276
|
+
if existing.find {|s| s.full_name == spec.full_name }
|
256
277
|
yield request, nil if block_given?
|
257
278
|
next
|
258
279
|
end
|
@@ -264,22 +285,46 @@ class Gem::RequestSet
|
|
264
285
|
installed << request
|
265
286
|
end
|
266
287
|
|
288
|
+
install_hooks installed, options
|
289
|
+
|
267
290
|
installed
|
268
291
|
ensure
|
269
|
-
ENV[
|
292
|
+
ENV["GEM_HOME"] = gem_home
|
293
|
+
end
|
294
|
+
|
295
|
+
##
|
296
|
+
# Call hooks on installed gems
|
297
|
+
|
298
|
+
def install_hooks(requests, options)
|
299
|
+
specs = requests.map do |request|
|
300
|
+
case request
|
301
|
+
when Gem::Resolver::ActivationRequest then
|
302
|
+
request.spec.spec
|
303
|
+
else
|
304
|
+
request
|
305
|
+
end
|
306
|
+
end
|
307
|
+
|
308
|
+
require_relative "dependency_installer"
|
309
|
+
inst = Gem::DependencyInstaller.new options
|
310
|
+
inst.installed_gems.replace specs
|
311
|
+
|
312
|
+
Gem.done_installing_hooks.each do |hook|
|
313
|
+
hook.call inst, specs
|
314
|
+
end unless Gem.done_installing_hooks.empty?
|
270
315
|
end
|
271
316
|
|
272
317
|
##
|
273
318
|
# Load a dependency management file.
|
274
319
|
|
275
|
-
def load_gemdeps
|
320
|
+
def load_gemdeps(path, without_groups = [], installing = false)
|
276
321
|
@git_set = Gem::Resolver::GitSet.new
|
277
322
|
@vendor_set = Gem::Resolver::VendorSet.new
|
278
323
|
@source_set = Gem::Resolver::SourceSet.new
|
279
324
|
|
280
325
|
@git_set.root_dir = @install_dir
|
281
326
|
|
282
|
-
lock_file = "#{File.expand_path(path)}.lock"
|
327
|
+
lock_file = "#{File.expand_path(path)}.lock"
|
283
328
|
begin
|
284
329
|
tokenizer = Gem::RequestSet::Lockfile::Tokenizer.from_file lock_file
|
285
330
|
parser = tokenizer.make_parser self, []
|
@@ -293,33 +338,33 @@ class Gem::RequestSet
|
|
293
338
|
gf.load
|
294
339
|
end
|
295
340
|
|
296
|
-
def pretty_print
|
297
|
-
q.group 2,
|
341
|
+
def pretty_print(q) # :nodoc:
|
342
|
+
q.group 2, "[RequestSet:", "]" do
|
298
343
|
q.breakable
|
299
344
|
|
300
|
-
if @remote
|
301
|
-
q.text
|
345
|
+
if @remote
|
346
|
+
q.text "remote"
|
302
347
|
q.breakable
|
303
348
|
end
|
304
349
|
|
305
|
-
if @prerelease
|
306
|
-
q.text
|
350
|
+
if @prerelease
|
351
|
+
q.text "prerelease"
|
307
352
|
q.breakable
|
308
353
|
end
|
309
354
|
|
310
|
-
if @development_shallow
|
311
|
-
q.text
|
355
|
+
if @development_shallow
|
356
|
+
q.text "shallow development"
|
312
357
|
q.breakable
|
313
|
-
elsif @development
|
314
|
-
q.text
|
358
|
+
elsif @development
|
359
|
+
q.text "development"
|
315
360
|
q.breakable
|
316
361
|
end
|
317
362
|
|
318
|
-
if @soft_missing
|
319
|
-
q.text
|
363
|
+
if @soft_missing
|
364
|
+
q.text "soft missing"
|
320
365
|
end
|
321
366
|
|
322
|
-
q.group 2,
|
367
|
+
q.group 2, "[dependencies:", "]" do
|
323
368
|
q.breakable
|
324
369
|
@dependencies.map do |dep|
|
325
370
|
q.text dep.to_s
|
@@ -328,10 +373,10 @@ class Gem::RequestSet
|
|
328
373
|
end
|
329
374
|
|
330
375
|
q.breakable
|
331
|
-
q.text
|
376
|
+
q.text "sets:"
|
332
377
|
|
333
378
|
q.breakable
|
334
|
-
q.pp @sets.map
|
379
|
+
q.pp @sets.map(&:class)
|
335
380
|
end
|
336
381
|
end
|
337
382
|
|
@@ -339,7 +384,7 @@ class Gem::RequestSet
|
|
339
384
|
# Resolve the requested dependencies and return an Array of Specification
|
340
385
|
# objects to be activated.
|
341
386
|
|
342
|
-
def resolve
|
387
|
+
def resolve(set = Gem::Resolver::BestSet.new)
|
343
388
|
@sets << set
|
344
389
|
@sets << @git_set
|
345
390
|
@sets << @vendor_set
|
@@ -381,33 +426,33 @@ class Gem::RequestSet
|
|
381
426
|
end
|
382
427
|
|
383
428
|
def sorted_requests
|
384
|
-
@
|
429
|
+
@sorted_requests ||= strongly_connected_components.flatten
|
385
430
|
end
|
386
431
|
|
387
432
|
def specs
|
388
|
-
@specs ||= @requests.map
|
433
|
+
@specs ||= @requests.map(&:full_spec)
|
389
434
|
end
|
390
435
|
|
391
|
-
def specs_in
|
392
|
-
|
436
|
+
def specs_in(dir)
|
437
|
+
Gem::Util.glob_files_in_dir("*.gemspec", File.join(dir, "specifications")).map do |g|
|
393
438
|
Gem::Specification.load g
|
394
439
|
end
|
395
440
|
end
|
396
441
|
|
397
|
-
def tsort_each_node
|
442
|
+
def tsort_each_node(&block) # :nodoc:
|
398
443
|
@requests.each(&block)
|
399
444
|
end
|
400
445
|
|
401
|
-
def tsort_each_child
|
446
|
+
def tsort_each_child(node) # :nodoc:
|
402
447
|
node.spec.dependencies.each do |dep|
|
403
|
-
next if dep.type == :development
|
448
|
+
next if dep.type == :development && !@development
|
404
449
|
|
405
|
-
match = @requests.find
|
406
|
-
dep.match?
|
407
|
-
|
450
|
+
match = @requests.find do |r|
|
451
|
+
dep.match?(r.spec.name, r.spec.version, r.spec.is_a?(Gem::Resolver::InstalledSpecification) || @prerelease)
|
452
|
+
end
|
408
453
|
|
409
|
-
unless match
|
410
|
-
next if dep.type == :development
|
454
|
+
unless match
|
455
|
+
next if dep.type == :development && @development_shallow
|
411
456
|
next if @soft_missing
|
412
457
|
raise Gem::DependencyError,
|
413
458
|
"Unresolved dependency found during sorting - #{dep} (requested by #{node.spec.full_name})"
|
@@ -416,9 +461,8 @@ class Gem::RequestSet
|
|
416
461
|
yield match
|
417
462
|
end
|
418
463
|
end
|
419
|
-
|
420
464
|
end
|
421
465
|
|
422
|
-
|
423
|
-
|
424
|
-
|
466
|
+
require_relative "request_set/gem_dependency_api"
|
467
|
+
require_relative "request_set/lockfile"
|
468
|
+
require_relative "request_set/lockfile/tokenizer"
|
data/lib/rubygems/requirement.rb
CHANGED
@@ -1,10 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
-
require "rubygems/version"
|
3
|
-
require "rubygems/deprecate"
|
4
2
|
|
5
|
-
|
6
|
-
# load our yaml + workarounds now.
|
7
|
-
Gem.load_yaml if defined? ::YAML
|
3
|
+
require_relative "version"
|
8
4
|
|
9
5
|
##
|
10
6
|
# A Requirement is a set of one or more version restrictions. It supports a
|
@@ -14,30 +10,35 @@ Gem.load_yaml if defined? ::YAML
|
|
14
10
|
# together in RubyGems.
|
15
11
|
|
16
12
|
class Gem::Requirement
|
17
|
-
OPS = {
|
18
|
-
"="
|
19
|
-
"!=" =>
|
20
|
-
">"
|
21
|
-
"<"
|
22
|
-
">=" =>
|
23
|
-
"<=" =>
|
24
|
-
"~>" =>
|
25
|
-
}
|
13
|
+
OPS = { # :nodoc:
|
14
|
+
"=" => lambda {|v, r| v == r },
|
15
|
+
"!=" => lambda {|v, r| v != r },
|
16
|
+
">" => lambda {|v, r| v > r },
|
17
|
+
"<" => lambda {|v, r| v < r },
|
18
|
+
">=" => lambda {|v, r| v >= r },
|
19
|
+
"<=" => lambda {|v, r| v <= r },
|
20
|
+
"~>" => lambda {|v, r| v >= r && v.release < r.bump },
|
21
|
+
}.freeze
|
26
22
|
|
27
23
|
SOURCE_SET_REQUIREMENT = Struct.new(:for_lockfile).new "!" # :nodoc:
|
28
24
|
|
29
|
-
quoted
|
30
|
-
PATTERN_RAW = "\\s*(#{quoted})?\\s*(#{Gem::Version::VERSION_PATTERN})\\s*" # :nodoc:
|
25
|
+
quoted = OPS.keys.map {|k| Regexp.quote k }.join "|"
|
26
|
+
PATTERN_RAW = "\\s*(#{quoted})?\\s*(#{Gem::Version::VERSION_PATTERN})\\s*".freeze # :nodoc:
|
31
27
|
|
32
28
|
##
|
33
29
|
# A regular expression that matches a requirement
|
34
30
|
|
35
31
|
PATTERN = /\A#{PATTERN_RAW}\z/
|
36
32
|
|
33
|
+
##
|
34
|
+
# The default requirement matches any non-prerelease version
|
35
|
+
|
36
|
+
DefaultRequirement = [">=", Gem::Version.new(0)].freeze
|
37
|
+
|
37
38
|
##
|
38
39
|
# The default requirement matches any version
|
39
40
|
|
40
|
-
|
41
|
+
DefaultPrereleaseRequirement = [">=", Gem::Version.new("0.a")].freeze
|
41
42
|
|
42
43
|
##
|
43
44
|
# Raised when a bad requirement is encountered
|
@@ -51,16 +52,20 @@ class Gem::Requirement
|
|
51
52
|
# If the input is "weird", the default version requirement is
|
52
53
|
# returned.
|
53
54
|
|
54
|
-
def self.create
|
55
|
+
def self.create(*inputs)
|
56
|
+
return new inputs if inputs.length > 1
|
57
|
+
|
58
|
+
input = inputs.shift
|
59
|
+
|
55
60
|
case input
|
56
61
|
when Gem::Requirement then
|
57
62
|
input
|
58
63
|
when Gem::Version, Array then
|
59
64
|
new input
|
60
|
-
when
|
65
|
+
when "!" then
|
61
66
|
source_set
|
62
67
|
else
|
63
|
-
if input.respond_to? :to_str
|
68
|
+
if input.respond_to? :to_str
|
64
69
|
new [input.to_str]
|
65
70
|
else
|
66
71
|
default
|
@@ -68,11 +73,12 @@ class Gem::Requirement
|
|
68
73
|
end
|
69
74
|
end
|
70
75
|
|
71
|
-
##
|
72
|
-
# A default "version requirement" can surely _only_ be '>= 0'.
|
73
|
-
|
74
76
|
def self.default
|
75
|
-
new
|
77
|
+
new ">= 0"
|
78
|
+
end
|
79
|
+
|
80
|
+
def self.default_prerelease
|
81
|
+
new ">= 0.a"
|
76
82
|
end
|
77
83
|
|
78
84
|
###
|
@@ -94,7 +100,7 @@ class Gem::Requirement
|
|
94
100
|
# parse("1.0") # => ["=", Gem::Version.new("1.0")]
|
95
101
|
# parse(Gem::Version.new("1.0")) # => ["=, Gem::Version.new("1.0")]
|
96
102
|
|
97
|
-
def self.parse
|
103
|
+
def self.parse(obj)
|
98
104
|
return ["=", obj] if Gem::Version === obj
|
99
105
|
|
100
106
|
unless PATTERN =~ obj.to_s
|
@@ -103,8 +109,10 @@ class Gem::Requirement
|
|
103
109
|
|
104
110
|
if $1 == ">=" && $2 == "0"
|
105
111
|
DefaultRequirement
|
112
|
+
elsif $1 == ">=" && $2 == "0.a"
|
113
|
+
DefaultPrereleaseRequirement
|
106
114
|
else
|
107
|
-
[$1 || "=", Gem::Version.new($2)]
|
115
|
+
[-($1 || "="), Gem::Version.new($2)]
|
108
116
|
end
|
109
117
|
end
|
110
118
|
|
@@ -112,7 +120,7 @@ class Gem::Requirement
|
|
112
120
|
# An array of requirement pairs. The first element of the pair is
|
113
121
|
# the op, and the second is the Gem::Version.
|
114
122
|
|
115
|
-
attr_reader :requirements
|
123
|
+
attr_reader :requirements # :nodoc:
|
116
124
|
|
117
125
|
##
|
118
126
|
# Constructs a requirement from +requirements+. Requirements can be
|
@@ -120,7 +128,7 @@ class Gem::Requirement
|
|
120
128
|
# requirements are ignored. An empty set of +requirements+ is the
|
121
129
|
# same as <tt>">= 0"</tt>.
|
122
130
|
|
123
|
-
def initialize
|
131
|
+
def initialize(*requirements)
|
124
132
|
requirements = requirements.flatten
|
125
133
|
requirements.compact!
|
126
134
|
requirements.uniq!
|
@@ -128,18 +136,18 @@ class Gem::Requirement
|
|
128
136
|
if requirements.empty?
|
129
137
|
@requirements = [DefaultRequirement]
|
130
138
|
else
|
131
|
-
@requirements = requirements.map! {
|
139
|
+
@requirements = requirements.map! {|r| self.class.parse r }
|
132
140
|
end
|
133
141
|
end
|
134
142
|
|
135
143
|
##
|
136
144
|
# Concatenates the +new+ requirements onto this requirement.
|
137
145
|
|
138
|
-
def concat
|
146
|
+
def concat(new)
|
139
147
|
new = new.flatten
|
140
148
|
new.compact!
|
141
149
|
new.uniq!
|
142
|
-
new = new.map {
|
150
|
+
new = new.map {|r| self.class.parse r }
|
143
151
|
|
144
152
|
@requirements.concat new
|
145
153
|
end
|
@@ -148,15 +156,15 @@ class Gem::Requirement
|
|
148
156
|
# Formats this requirement for use in a Gem::RequestSet::Lockfile.
|
149
157
|
|
150
158
|
def for_lockfile # :nodoc:
|
151
|
-
return if [DefaultRequirement]
|
159
|
+
return if @requirements == [DefaultRequirement]
|
152
160
|
|
153
|
-
list = requirements.sort_by
|
161
|
+
list = requirements.sort_by do |_, version|
|
154
162
|
version
|
155
|
-
|
163
|
+
end.map do |op, version|
|
156
164
|
"#{op} #{version}"
|
157
|
-
|
165
|
+
end.uniq
|
158
166
|
|
159
|
-
" (#{list.join
|
167
|
+
" (#{list.join ", "})"
|
160
168
|
end
|
161
169
|
|
162
170
|
##
|
@@ -179,35 +187,30 @@ class Gem::Requirement
|
|
179
187
|
end
|
180
188
|
|
181
189
|
def as_list # :nodoc:
|
182
|
-
requirements.map {
|
190
|
+
requirements.map {|op, version| "#{op} #{version}" }
|
183
191
|
end
|
184
192
|
|
185
193
|
def hash # :nodoc:
|
186
|
-
requirements.sort.hash
|
194
|
+
requirements.map {|r| r.first == "~>" ? [r[0], r[1].to_s] : r }.sort.hash
|
187
195
|
end
|
188
196
|
|
189
197
|
def marshal_dump # :nodoc:
|
190
|
-
fix_syck_default_key_in_requirements
|
191
|
-
|
192
198
|
[@requirements]
|
193
199
|
end
|
194
200
|
|
195
|
-
def marshal_load
|
201
|
+
def marshal_load(array) # :nodoc:
|
196
202
|
@requirements = array[0]
|
197
203
|
|
198
|
-
|
204
|
+
raise TypeError, "wrong @requirements" unless Array === @requirements
|
199
205
|
end
|
200
206
|
|
201
207
|
def yaml_initialize(tag, vals) # :nodoc:
|
202
208
|
vals.each do |ivar, val|
|
203
209
|
instance_variable_set "@#{ivar}", val
|
204
210
|
end
|
205
|
-
|
206
|
-
Gem.load_yaml
|
207
|
-
fix_syck_default_key_in_requirements
|
208
211
|
end
|
209
212
|
|
210
|
-
def init_with
|
213
|
+
def init_with(coder) # :nodoc:
|
211
214
|
yaml_initialize coder.tag, coder.map
|
212
215
|
end
|
213
216
|
|
@@ -215,8 +218,8 @@ class Gem::Requirement
|
|
215
218
|
["@requirements"]
|
216
219
|
end
|
217
220
|
|
218
|
-
def encode_with
|
219
|
-
coder.add
|
221
|
+
def encode_with(coder) # :nodoc:
|
222
|
+
coder.add "requirements", @requirements
|
220
223
|
end
|
221
224
|
|
222
225
|
##
|
@@ -224,11 +227,11 @@ class Gem::Requirement
|
|
224
227
|
# are prereleases
|
225
228
|
|
226
229
|
def prerelease?
|
227
|
-
requirements.any? {
|
230
|
+
requirements.any? {|r| r.last.prerelease? }
|
228
231
|
end
|
229
232
|
|
230
|
-
def pretty_print
|
231
|
-
q.group 1,
|
233
|
+
def pretty_print(q) # :nodoc:
|
234
|
+
q.group 1, "Gem::Requirement.new(", ")" do
|
232
235
|
q.pp as_list
|
233
236
|
end
|
234
237
|
end
|
@@ -236,15 +239,14 @@ class Gem::Requirement
|
|
236
239
|
##
|
237
240
|
# True if +version+ satisfies this Requirement.
|
238
241
|
|
239
|
-
def satisfied_by?
|
242
|
+
def satisfied_by?(version)
|
240
243
|
raise ArgumentError, "Need a Gem::Version: #{version.inspect}" unless
|
241
244
|
Gem::Version === version
|
242
|
-
|
243
|
-
requirements.all? { |op, rv| (OPS[op] || OPS["="]).call version, rv }
|
245
|
+
requirements.all? {|op, rv| OPS[op].call version, rv }
|
244
246
|
end
|
245
247
|
|
246
|
-
|
247
|
-
|
248
|
+
alias_method :===, :satisfied_by?
|
249
|
+
alias_method :=~, :satisfied_by?
|
248
250
|
|
249
251
|
##
|
250
252
|
# True if the requirement will not always match the latest version.
|
@@ -252,28 +254,35 @@ class Gem::Requirement
|
|
252
254
|
def specific?
|
253
255
|
return true if @requirements.length > 1 # GIGO, > 1, > 2 is silly
|
254
256
|
|
255
|
-
|
257
|
+
!%w[> >=].include? @requirements.first.first # grab the operator
|
256
258
|
end
|
257
259
|
|
258
260
|
def to_s # :nodoc:
|
259
261
|
as_list.join ", "
|
260
262
|
end
|
261
263
|
|
262
|
-
def ==
|
263
|
-
Gem::Requirement === other
|
264
|
+
def ==(other) # :nodoc:
|
265
|
+
return unless Gem::Requirement === other
|
266
|
+
|
267
|
+
# An == check is always necessary
|
268
|
+
return false unless _sorted_requirements == other._sorted_requirements
|
269
|
+
|
270
|
+
# An == check is sufficient unless any requirements use ~>
|
271
|
+
return true unless _tilde_requirements.any?
|
272
|
+
|
273
|
+
# If any requirements use ~> we use the stricter `#eql?` that also checks
|
274
|
+
# that version precision is the same
|
275
|
+
_tilde_requirements.eql?(other._tilde_requirements)
|
264
276
|
end
|
265
277
|
|
266
|
-
|
278
|
+
protected
|
267
279
|
|
268
|
-
def
|
269
|
-
|
280
|
+
def _sorted_requirements
|
281
|
+
@_sorted_requirements ||= requirements.sort_by(&:to_s)
|
282
|
+
end
|
270
283
|
|
271
|
-
|
272
|
-
@
|
273
|
-
if r[0].kind_of? Gem::SyckDefaultKey
|
274
|
-
r[0] = "="
|
275
|
-
end
|
276
|
-
end
|
284
|
+
def _tilde_requirements
|
285
|
+
@_tilde_requirements ||= _sorted_requirements.select {|r| r.first == "~>" }
|
277
286
|
end
|
278
287
|
end
|
279
288
|
|