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/util/list.rb
CHANGED
@@ -1,6 +1,8 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
module Gem
|
3
|
-
class
|
4
|
+
# The Gem::List class is currently unused and will be removed in the next major rubygems version
|
5
|
+
class List # :nodoc:
|
4
6
|
include Enumerable
|
5
7
|
attr_accessor :value, :tail
|
6
8
|
|
@@ -25,7 +27,7 @@ module Gem
|
|
25
27
|
List.new value, self
|
26
28
|
end
|
27
29
|
|
28
|
-
def pretty_print
|
30
|
+
def pretty_print(q) # :nodoc:
|
29
31
|
q.pp to_a
|
30
32
|
end
|
31
33
|
|
@@ -34,4 +36,5 @@ module Gem
|
|
34
36
|
List.new value, list
|
35
37
|
end
|
36
38
|
end
|
39
|
+
deprecate_constant :List
|
37
40
|
end
|
data/lib/rubygems/util.rb
CHANGED
@@ -1,21 +1,27 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative "deprecate"
|
4
|
+
|
2
5
|
##
|
3
6
|
# This module contains various utility methods as module methods.
|
4
7
|
|
5
8
|
module Gem::Util
|
6
|
-
|
7
|
-
@silent_mutex = nil
|
8
|
-
|
9
9
|
##
|
10
10
|
# Zlib::GzipReader wrapper that unzips +data+.
|
11
11
|
|
12
12
|
def self.gunzip(data)
|
13
|
-
require
|
14
|
-
require
|
15
|
-
data = StringIO.new(data,
|
16
|
-
|
17
|
-
|
18
|
-
|
13
|
+
require "zlib"
|
14
|
+
require "stringio"
|
15
|
+
data = StringIO.new(data, "r")
|
16
|
+
|
17
|
+
gzip_reader = begin
|
18
|
+
Zlib::GzipReader.new(data)
|
19
|
+
rescue Zlib::GzipFile::Error => e
|
20
|
+
raise e.class, e.inspect, e.backtrace
|
21
|
+
end
|
22
|
+
|
23
|
+
unzipped = gzip_reader.read
|
24
|
+
unzipped.force_encoding Encoding::BINARY
|
19
25
|
unzipped
|
20
26
|
end
|
21
27
|
|
@@ -23,12 +29,14 @@ module Gem::Util
|
|
23
29
|
# Zlib::GzipWriter wrapper that zips +data+.
|
24
30
|
|
25
31
|
def self.gzip(data)
|
26
|
-
require
|
27
|
-
require
|
28
|
-
zipped = StringIO.new(String.new,
|
29
|
-
zipped.set_encoding Encoding::BINARY
|
32
|
+
require "zlib"
|
33
|
+
require "stringio"
|
34
|
+
zipped = StringIO.new(String.new, "w")
|
35
|
+
zipped.set_encoding Encoding::BINARY
|
30
36
|
|
31
|
-
Zlib::GzipWriter.wrap zipped do |io|
|
37
|
+
Zlib::GzipWriter.wrap zipped do |io|
|
38
|
+
io.write data
|
39
|
+
end
|
32
40
|
|
33
41
|
zipped.string
|
34
42
|
end
|
@@ -37,99 +45,74 @@ module Gem::Util
|
|
37
45
|
# A Zlib::Inflate#inflate wrapper
|
38
46
|
|
39
47
|
def self.inflate(data)
|
40
|
-
require
|
48
|
+
require "zlib"
|
41
49
|
Zlib::Inflate.inflate data
|
42
50
|
end
|
43
51
|
|
44
52
|
##
|
45
|
-
# This calls IO.popen
|
46
|
-
# and implements an IO.popen-like behavior where it does not accept an array
|
47
|
-
# for a command.
|
53
|
+
# This calls IO.popen and reads the result
|
48
54
|
|
49
|
-
def self.popen
|
55
|
+
def self.popen(*command)
|
50
56
|
IO.popen command, &:read
|
51
|
-
rescue TypeError # ruby 1.8 only supports string command
|
52
|
-
r, w = IO.pipe
|
53
|
-
|
54
|
-
pid = fork do
|
55
|
-
STDIN.close
|
56
|
-
STDOUT.reopen w
|
57
|
-
|
58
|
-
exec(*command)
|
59
|
-
end
|
60
|
-
|
61
|
-
w.close
|
62
|
-
|
63
|
-
begin
|
64
|
-
return r.read
|
65
|
-
ensure
|
66
|
-
Process.wait pid
|
67
|
-
end
|
68
57
|
end
|
69
58
|
|
70
|
-
NULL_DEVICE = defined?(IO::NULL) ? IO::NULL : Gem.win_platform? ? 'NUL' : '/dev/null'
|
71
|
-
|
72
59
|
##
|
73
60
|
# Invokes system, but silences all output.
|
74
61
|
|
75
|
-
def self.silent_system
|
76
|
-
opt = {:
|
62
|
+
def self.silent_system(*command)
|
63
|
+
opt = { out: IO::NULL, err: [:child, :out] }
|
77
64
|
if Hash === command.last
|
78
65
|
opt.update(command.last)
|
79
66
|
cmds = command[0...-1]
|
80
67
|
else
|
81
68
|
cmds = command.dup
|
82
69
|
end
|
83
|
-
|
84
|
-
|
85
|
-
require 'thread'
|
86
|
-
|
87
|
-
@silent_mutex ||= Mutex.new
|
70
|
+
system(*(cmds << opt))
|
71
|
+
end
|
88
72
|
|
89
|
-
|
73
|
+
class << self
|
74
|
+
extend Gem::Deprecate
|
90
75
|
|
91
|
-
|
92
|
-
begin
|
93
|
-
stdout = STDOUT.dup
|
94
|
-
stderr = STDERR.dup
|
95
|
-
|
96
|
-
STDOUT.reopen null_device, 'w'
|
97
|
-
STDERR.reopen null_device, 'w'
|
98
|
-
|
99
|
-
return system(*command)
|
100
|
-
ensure
|
101
|
-
STDOUT.reopen stdout
|
102
|
-
STDERR.reopen stderr
|
103
|
-
stdout.close
|
104
|
-
stderr.close
|
105
|
-
end
|
106
|
-
end
|
76
|
+
rubygems_deprecate :silent_system
|
107
77
|
end
|
108
78
|
|
109
79
|
##
|
110
80
|
# Enumerates the parents of +directory+.
|
111
81
|
|
112
|
-
def self.traverse_parents
|
82
|
+
def self.traverse_parents(directory, &block)
|
113
83
|
return enum_for __method__, directory unless block_given?
|
114
84
|
|
115
85
|
here = File.expand_path directory
|
116
|
-
|
86
|
+
loop do
|
87
|
+
begin
|
88
|
+
Dir.chdir here, &block
|
89
|
+
rescue StandardError
|
90
|
+
Errno::EACCES
|
91
|
+
end
|
117
92
|
|
118
|
-
|
93
|
+
new_here = File.expand_path("..", here)
|
94
|
+
return if new_here == here # toplevel
|
95
|
+
here = new_here
|
96
|
+
end
|
97
|
+
end
|
119
98
|
|
120
|
-
|
121
|
-
|
122
|
-
|
99
|
+
##
|
100
|
+
# Globs for files matching +pattern+ inside of +directory+,
|
101
|
+
# returning absolute paths to the matching files.
|
123
102
|
|
124
|
-
|
103
|
+
def self.glob_files_in_dir(glob, base_path)
|
104
|
+
Dir.glob(glob, base: base_path).map! {|f| File.expand_path(f, base_path) }
|
105
|
+
end
|
125
106
|
|
126
|
-
|
107
|
+
##
|
108
|
+
# Corrects +path+ (usually returned by `URI.parse().path` on Windows), that
|
109
|
+
# comes with a leading slash.
|
127
110
|
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
111
|
+
def self.correct_for_windows_path(path)
|
112
|
+
if path[0].chr == "/" && path[1].chr.match?(/[a-z]/i) && path[2].chr == ":"
|
113
|
+
path[1..-1]
|
114
|
+
else
|
115
|
+
path
|
132
116
|
end
|
133
117
|
end
|
134
|
-
|
135
118
|
end
|
data/lib/rubygems/validator.rb
CHANGED
@@ -1,45 +1,22 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
#--
|
3
4
|
# Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others.
|
4
5
|
# All rights reserved.
|
5
6
|
# See LICENSE.txt for permissions.
|
6
7
|
#++
|
7
8
|
|
8
|
-
|
9
|
-
|
9
|
+
require_relative "package"
|
10
|
+
require_relative "installer"
|
10
11
|
|
11
12
|
##
|
12
13
|
# Validator performs various gem file and gem database validation
|
13
14
|
|
14
15
|
class Gem::Validator
|
15
|
-
|
16
16
|
include Gem::UserInteraction
|
17
17
|
|
18
18
|
def initialize # :nodoc:
|
19
|
-
require
|
20
|
-
end
|
21
|
-
|
22
|
-
##
|
23
|
-
# Given a gem file's contents, validates against its own MD5 checksum
|
24
|
-
# gem_data:: [String] Contents of the gem file
|
25
|
-
|
26
|
-
def verify_gem(gem_data)
|
27
|
-
# TODO remove me? The code here only validate an MD5SUM that was
|
28
|
-
# in some old formatted gems, but hasn't been for a long time.
|
29
|
-
end
|
30
|
-
|
31
|
-
##
|
32
|
-
# Given the path to a gem file, validates against its own MD5 checksum
|
33
|
-
#
|
34
|
-
# gem_path:: [String] Path to gem file
|
35
|
-
|
36
|
-
def verify_gem_file(gem_path)
|
37
|
-
open gem_path, Gem.binary_mode do |file|
|
38
|
-
gem_data = file.read
|
39
|
-
verify_gem gem_data
|
40
|
-
end
|
41
|
-
rescue Errno::ENOENT, Errno::EINVAL
|
42
|
-
raise Gem::VerificationError, "missing gem file #{gem_path}"
|
19
|
+
require "find"
|
43
20
|
end
|
44
21
|
|
45
22
|
private
|
@@ -48,9 +25,9 @@ class Gem::Validator
|
|
48
25
|
installed_files = []
|
49
26
|
|
50
27
|
Find.find gem_directory do |file_name|
|
51
|
-
fn = file_name[gem_directory.size..file_name.size-1].sub(
|
28
|
+
fn = file_name[gem_directory.size..file_name.size - 1].sub(%r{^/}, "")
|
52
29
|
installed_files << fn unless
|
53
|
-
fn
|
30
|
+
fn.empty? || fn.include?("CVS") || File.directory?(file_name)
|
54
31
|
end
|
55
32
|
|
56
33
|
installed_files
|
@@ -62,7 +39,7 @@ class Gem::Validator
|
|
62
39
|
# Describes a problem with a file in a gem.
|
63
40
|
|
64
41
|
ErrorData = Struct.new :path, :problem do
|
65
|
-
def <=>
|
42
|
+
def <=>(other) # :nodoc:
|
66
43
|
return nil unless self.class === other
|
67
44
|
|
68
45
|
[path, problem] <=> [other.path, other.problem]
|
@@ -83,10 +60,12 @@ class Gem::Validator
|
|
83
60
|
# TODO needs further cleanup
|
84
61
|
|
85
62
|
def alien(gems=[])
|
86
|
-
errors = Hash.new {
|
63
|
+
errors = Hash.new {|h,k| h[k] = {} }
|
87
64
|
|
88
65
|
Gem::Specification.each do |spec|
|
89
|
-
|
66
|
+
unless gems.empty?
|
67
|
+
next unless gems.include? spec.name
|
68
|
+
end
|
90
69
|
next if spec.default_gem?
|
91
70
|
|
92
71
|
gem_name = spec.file_name
|
@@ -94,50 +73,50 @@ class Gem::Validator
|
|
94
73
|
spec_path = spec.spec_file
|
95
74
|
gem_directory = spec.full_gem_path
|
96
75
|
|
97
|
-
unless File.directory? gem_directory
|
76
|
+
unless File.directory? gem_directory
|
98
77
|
errors[gem_name][spec.full_name] =
|
99
78
|
"Gem registered but doesn't exist at #{gem_directory}"
|
100
79
|
next
|
101
80
|
end
|
102
81
|
|
103
|
-
unless File.exist? spec_path
|
82
|
+
unless File.exist? spec_path
|
104
83
|
errors[gem_name][spec_path] = "Spec file missing for installed gem"
|
105
84
|
end
|
106
85
|
|
107
86
|
begin
|
108
|
-
|
87
|
+
unless File.readable?(gem_path)
|
88
|
+
raise Gem::VerificationError, "missing gem file #{gem_path}"
|
89
|
+
end
|
109
90
|
|
110
91
|
good, gone, unreadable = nil, nil, nil, nil
|
111
92
|
|
112
|
-
open gem_path, Gem.binary_mode do |
|
93
|
+
File.open gem_path, Gem.binary_mode do |_file|
|
113
94
|
package = Gem::Package.new gem_path
|
114
95
|
|
115
|
-
good, gone = package.contents.partition
|
96
|
+
good, gone = package.contents.partition do |file_name|
|
116
97
|
File.exist? File.join(gem_directory, file_name)
|
117
|
-
|
98
|
+
end
|
118
99
|
|
119
100
|
gone.sort.each do |path|
|
120
101
|
errors[gem_name][path] = "Missing file"
|
121
102
|
end
|
122
103
|
|
123
|
-
good, unreadable = good.partition
|
104
|
+
good, unreadable = good.partition do |file_name|
|
124
105
|
File.readable? File.join(gem_directory, file_name)
|
125
|
-
|
106
|
+
end
|
126
107
|
|
127
108
|
unreadable.sort.each do |path|
|
128
109
|
errors[gem_name][path] = "Unreadable file"
|
129
110
|
end
|
130
111
|
|
131
112
|
good.each do |entry, data|
|
132
|
-
|
133
|
-
next unless data # HACK `gem check -a mkrf`
|
113
|
+
next unless data # HACK: `gem check -a mkrf`
|
134
114
|
|
135
|
-
|
115
|
+
source = File.join gem_directory, entry["path"]
|
136
116
|
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
end
|
117
|
+
File.open source, Gem.binary_mode do |f|
|
118
|
+
unless f.read == data
|
119
|
+
errors[gem_name][entry["path"]] = "Modified from original"
|
141
120
|
end
|
142
121
|
end
|
143
122
|
end
|
@@ -163,4 +142,3 @@ class Gem::Validator
|
|
163
142
|
errors
|
164
143
|
end
|
165
144
|
end
|
166
|
-
|
data/lib/rubygems/version.rb
CHANGED
@@ -1,4 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative "deprecate"
|
4
|
+
|
2
5
|
##
|
3
6
|
# The Version class processes string versions into comparable
|
4
7
|
# values. A version string should normally be a series of numbers
|
@@ -128,7 +131,7 @@
|
|
128
131
|
#
|
129
132
|
# == Preventing Version Catastrophe:
|
130
133
|
#
|
131
|
-
# From:
|
134
|
+
# From: https://www.zenspider.com/ruby/2008/10/rubygems-how-to-preventing-catastrophe.html
|
132
135
|
#
|
133
136
|
# Let's say you're depending on the fnord gem version 2.y.z. If you
|
134
137
|
# specify your dependency as ">= 2.0.0" then, you're good, right? What
|
@@ -150,8 +153,6 @@
|
|
150
153
|
# a zero to give a sensible result.
|
151
154
|
|
152
155
|
class Gem::Version
|
153
|
-
autoload :Requirement, 'rubygems/requirement'
|
154
|
-
|
155
156
|
include Comparable
|
156
157
|
|
157
158
|
VERSION_PATTERN = '[0-9]+(?>\.[0-9a-zA-Z]+)*(-[0-9A-Za-z-]+(\.[0-9A-Za-z-]+)*)?' # :nodoc:
|
@@ -161,16 +162,18 @@ class Gem::Version
|
|
161
162
|
# A string representation of this Version.
|
162
163
|
|
163
164
|
def version
|
164
|
-
@version
|
165
|
+
@version
|
165
166
|
end
|
166
167
|
|
167
|
-
|
168
|
+
alias_method :to_s, :version
|
168
169
|
|
169
170
|
##
|
170
171
|
# True if the +version+ string matches RubyGems' requirements.
|
171
172
|
|
172
|
-
def self.correct?
|
173
|
-
version.
|
173
|
+
def self.correct?(version)
|
174
|
+
nil_versions_are_discouraged! if version.nil?
|
175
|
+
|
176
|
+
ANCHORED_VERSION_PATTERN.match?(version.to_s)
|
174
177
|
end
|
175
178
|
|
176
179
|
##
|
@@ -181,10 +184,12 @@ class Gem::Version
|
|
181
184
|
# ver2 = Version.create(ver1) # -> (ver1)
|
182
185
|
# ver3 = Version.create(nil) # -> nil
|
183
186
|
|
184
|
-
def self.create
|
185
|
-
if self === input
|
187
|
+
def self.create(input)
|
188
|
+
if self === input # check yourself before you wreck yourself
|
186
189
|
input
|
187
|
-
elsif input.nil?
|
190
|
+
elsif input.nil?
|
191
|
+
nil_versions_are_discouraged!
|
192
|
+
|
188
193
|
nil
|
189
194
|
else
|
190
195
|
new input
|
@@ -192,22 +197,44 @@ class Gem::Version
|
|
192
197
|
end
|
193
198
|
|
194
199
|
@@all = {}
|
200
|
+
@@bump = {}
|
201
|
+
@@release = {}
|
195
202
|
|
196
|
-
def self.new
|
197
|
-
return super unless Gem::Version
|
203
|
+
def self.new(version) # :nodoc:
|
204
|
+
return super unless self == Gem::Version
|
198
205
|
|
199
206
|
@@all[version] ||= super
|
200
207
|
end
|
201
208
|
|
209
|
+
def self.nil_versions_are_discouraged!
|
210
|
+
unless Gem::Deprecate.skip
|
211
|
+
warn "nil versions are discouraged and will be deprecated in Rubygems 4"
|
212
|
+
end
|
213
|
+
end
|
214
|
+
|
215
|
+
private_class_method :nil_versions_are_discouraged!
|
216
|
+
|
202
217
|
##
|
203
218
|
# Constructs a Version from the +version+ string. A version string is a
|
204
219
|
# series of digits or ASCII letters separated by dots.
|
205
220
|
|
206
|
-
def initialize
|
207
|
-
|
208
|
-
|
221
|
+
def initialize(version)
|
222
|
+
unless self.class.correct?(version)
|
223
|
+
raise ArgumentError, "Malformed version number string #{version}"
|
224
|
+
end
|
225
|
+
|
226
|
+
# If version is an empty string convert it to 0
|
227
|
+
version = 0 if version.is_a?(String) && /\A\s*\Z/.match?(version)
|
209
228
|
|
210
|
-
@version = version.to_s
|
229
|
+
@version = version.to_s
|
230
|
+
|
231
|
+
# optimization to avoid allocation when given an integer, since we know
|
232
|
+
# it's to_s won't have any spaces or dashes
|
233
|
+
unless version.is_a?(Integer)
|
234
|
+
@version = @version.strip
|
235
|
+
@version.gsub!("-",".pre.")
|
236
|
+
end
|
237
|
+
@version = -@version
|
211
238
|
@segments = nil
|
212
239
|
end
|
213
240
|
|
@@ -218,29 +245,29 @@ class Gem::Version
|
|
218
245
|
# Pre-release (alpha) parts, e.g, 5.3.1.b.2 => 5.4, are ignored.
|
219
246
|
|
220
247
|
def bump
|
221
|
-
|
222
|
-
|
223
|
-
|
224
|
-
|
225
|
-
|
226
|
-
|
227
|
-
|
228
|
-
|
248
|
+
@@bump[self] ||= begin
|
249
|
+
segments = self.segments
|
250
|
+
segments.pop while segments.any? {|s| String === s }
|
251
|
+
segments.pop if segments.size > 1
|
252
|
+
|
253
|
+
segments[-1] = segments[-1].succ
|
254
|
+
self.class.new segments.join(".")
|
255
|
+
end
|
229
256
|
end
|
230
257
|
|
231
258
|
##
|
232
259
|
# A Version is only eql? to another version if it's specified to the
|
233
260
|
# same precision. Version "1.0" is not the same as version "1".
|
234
261
|
|
235
|
-
def eql?
|
236
|
-
self.class === other
|
262
|
+
def eql?(other)
|
263
|
+
self.class === other && @version == other.version
|
237
264
|
end
|
238
265
|
|
239
266
|
def hash # :nodoc:
|
240
|
-
|
267
|
+
canonical_segments.hash
|
241
268
|
end
|
242
269
|
|
243
|
-
def init_with
|
270
|
+
def init_with(coder) # :nodoc:
|
244
271
|
yaml_initialize coder.tag, coder.map
|
245
272
|
end
|
246
273
|
|
@@ -253,19 +280,19 @@ class Gem::Version
|
|
253
280
|
# string for backwards (RubyGems 1.3.5 and earlier) compatibility.
|
254
281
|
|
255
282
|
def marshal_dump
|
256
|
-
[version]
|
283
|
+
[@version]
|
257
284
|
end
|
258
285
|
|
259
286
|
##
|
260
287
|
# Load custom marshal format. It's a string for backwards (RubyGems
|
261
288
|
# 1.3.5 and earlier) compatibility.
|
262
289
|
|
263
|
-
def marshal_load
|
290
|
+
def marshal_load(array)
|
264
291
|
initialize array[0]
|
265
292
|
end
|
266
293
|
|
267
294
|
def yaml_initialize(tag, map) # :nodoc:
|
268
|
-
@version = map[
|
295
|
+
@version = -map["version"]
|
269
296
|
@segments = nil
|
270
297
|
@hash = nil
|
271
298
|
end
|
@@ -274,8 +301,8 @@ class Gem::Version
|
|
274
301
|
["@version"]
|
275
302
|
end
|
276
303
|
|
277
|
-
def encode_with
|
278
|
-
coder.add
|
304
|
+
def encode_with(coder) # :nodoc:
|
305
|
+
coder.add "version", @version
|
279
306
|
end
|
280
307
|
|
281
308
|
##
|
@@ -283,12 +310,12 @@ class Gem::Version
|
|
283
310
|
|
284
311
|
def prerelease?
|
285
312
|
unless instance_variable_defined? :@prerelease
|
286
|
-
@prerelease =
|
313
|
+
@prerelease = /[a-zA-Z]/.match?(version)
|
287
314
|
end
|
288
315
|
@prerelease
|
289
316
|
end
|
290
317
|
|
291
|
-
def pretty_print
|
318
|
+
def pretty_print(q) # :nodoc:
|
292
319
|
q.text "Gem::Version.new(#{version.inspect})"
|
293
320
|
end
|
294
321
|
|
@@ -297,13 +324,13 @@ class Gem::Version
|
|
297
324
|
# Non-prerelease versions return themselves.
|
298
325
|
|
299
326
|
def release
|
300
|
-
|
301
|
-
|
302
|
-
|
303
|
-
|
304
|
-
|
305
|
-
|
306
|
-
|
327
|
+
@@release[self] ||= if prerelease?
|
328
|
+
segments = self.segments
|
329
|
+
segments.pop while segments.any? {|s| String === s }
|
330
|
+
self.class.new segments.join(".")
|
331
|
+
else
|
332
|
+
self
|
333
|
+
end
|
307
334
|
end
|
308
335
|
|
309
336
|
def segments # :nodoc:
|
@@ -316,25 +343,29 @@ class Gem::Version
|
|
316
343
|
def approximate_recommendation
|
317
344
|
segments = self.segments
|
318
345
|
|
319
|
-
segments.pop while segments.any? {
|
346
|
+
segments.pop while segments.any? {|s| String === s }
|
320
347
|
segments.pop while segments.size > 2
|
321
348
|
segments.push 0 while segments.size < 2
|
322
349
|
|
323
|
-
"~> #{segments.join(".")}"
|
350
|
+
recommendation = "~> #{segments.join(".")}"
|
351
|
+
recommendation += ".a" if prerelease?
|
352
|
+
recommendation
|
324
353
|
end
|
325
354
|
|
326
355
|
##
|
327
356
|
# Compares this version with +other+ returning -1, 0, or 1 if the
|
328
357
|
# other version is larger, the same, or smaller than this
|
329
358
|
# one. Attempts to compare to something that's not a
|
330
|
-
# <tt>Gem::Version</tt> return +nil+.
|
359
|
+
# <tt>Gem::Version</tt> or a valid version String return +nil+.
|
360
|
+
|
361
|
+
def <=>(other)
|
362
|
+
return self <=> self.class.new(other) if (String === other) && self.class.correct?(other)
|
331
363
|
|
332
|
-
def <=> other
|
333
364
|
return unless Gem::Version === other
|
334
|
-
return 0 if @version == other.
|
365
|
+
return 0 if @version == other.version || canonical_segments == other.canonical_segments
|
335
366
|
|
336
|
-
lhsegments =
|
337
|
-
rhsegments = other.
|
367
|
+
lhsegments = canonical_segments
|
368
|
+
rhsegments = other.canonical_segments
|
338
369
|
|
339
370
|
lhsize = lhsegments.size
|
340
371
|
rhsize = rhsegments.size
|
@@ -343,7 +374,8 @@ class Gem::Version
|
|
343
374
|
i = 0
|
344
375
|
|
345
376
|
while i <= limit
|
346
|
-
lhs
|
377
|
+
lhs = lhsegments[i] || 0
|
378
|
+
rhs = rhsegments[i] || 0
|
347
379
|
i += 1
|
348
380
|
|
349
381
|
next if lhs == rhs
|
@@ -353,22 +385,40 @@ class Gem::Version
|
|
353
385
|
return lhs <=> rhs
|
354
386
|
end
|
355
387
|
|
356
|
-
|
388
|
+
0
|
357
389
|
end
|
358
390
|
|
359
|
-
|
391
|
+
# remove trailing zeros segments before first letter or at the end of the version
|
392
|
+
def canonical_segments
|
393
|
+
@canonical_segments ||= begin
|
394
|
+
# remove trailing 0 segments, using dot or letter as anchor
|
395
|
+
# may leave a trailing dot which will be ignored by partition_segments
|
396
|
+
canonical_version = @version.sub(/(?<=[a-zA-Z.])[.0]+\z/, "")
|
397
|
+
# remove 0 segments before the first letter in a prerelease version
|
398
|
+
canonical_version.sub!(/(?<=\.|\A)[0.]+(?=[a-zA-Z])/, "") if prerelease?
|
399
|
+
partition_segments(canonical_version)
|
400
|
+
end
|
401
|
+
end
|
360
402
|
|
361
|
-
def
|
362
|
-
|
403
|
+
def freeze
|
404
|
+
prerelease?
|
405
|
+
_segments
|
406
|
+
canonical_segments
|
407
|
+
super
|
363
408
|
end
|
364
409
|
|
410
|
+
protected
|
411
|
+
|
365
412
|
def _segments
|
366
413
|
# segments is lazy so it can pick up version values that come from
|
367
414
|
# old marshaled versions, which don't go through marshal_load.
|
368
415
|
# since this version object is cached in @@all, its @segments should be frozen
|
416
|
+
@segments ||= partition_segments(@version)
|
417
|
+
end
|
369
418
|
|
370
|
-
|
371
|
-
|
419
|
+
def partition_segments(ver)
|
420
|
+
ver.scan(/\d+|[a-z]+/i).map! do |s|
|
421
|
+
/\A\d/.match?(s) ? s.to_i : -s
|
372
422
|
end.freeze
|
373
423
|
end
|
374
424
|
end
|