rubygems-update 2.6.0 → 3.4.22
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +5 -5
- data/CHANGELOG.md +5802 -0
- data/CODE_OF_CONDUCT.md +76 -35
- data/CONTRIBUTING.md +231 -0
- data/MAINTAINERS.txt +8 -0
- data/Manifest.txt +441 -42
- data/POLICIES.md +135 -0
- data/README.md +114 -0
- data/UPGRADING.md +15 -0
- data/bundler/CHANGELOG.md +4666 -0
- data/bundler/LICENSE.md +22 -0
- data/bundler/README.md +58 -0
- data/bundler/UPGRADING.md +222 -0
- data/bundler/bundler.gemspec +44 -0
- data/bundler/exe/bundle +38 -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/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 +130 -0
- data/bundler/lib/bundler/cli/config.rb +203 -0
- data/bundler/lib/bundler/cli/console.rb +43 -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 +466 -0
- data/bundler/lib/bundler/cli/info.rb +94 -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 +189 -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 +41 -0
- data/bundler/lib/bundler/cli/pristine.rb +52 -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 +894 -0
- data/bundler/lib/bundler/compact_index_client/cache.rb +101 -0
- data/bundler/lib/bundler/compact_index_client/gem_parser.rb +28 -0
- data/bundler/lib/bundler/compact_index_client/updater.rb +117 -0
- data/bundler/lib/bundler/compact_index_client.rb +119 -0
- data/bundler/lib/bundler/constants.rb +7 -0
- data/bundler/lib/bundler/current_ruby.rb +108 -0
- data/bundler/lib/bundler/definition.rb +978 -0
- data/bundler/lib/bundler/dependency.rb +97 -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 +583 -0
- data/bundler/lib/bundler/endpoint_specification.rb +143 -0
- data/bundler/lib/bundler/env.rb +150 -0
- data/bundler/lib/bundler/environment_preserver.rb +86 -0
- data/bundler/lib/bundler/errors.rb +190 -0
- data/bundler/lib/bundler/feature_flag.rb +53 -0
- data/bundler/lib/bundler/fetcher/base.rb +50 -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 +89 -0
- data/bundler/lib/bundler/fetcher/index.rb +25 -0
- data/bundler/lib/bundler/fetcher.rb +321 -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 +124 -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 +206 -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 +194 -0
- data/bundler/lib/bundler/installer/standalone.rb +117 -0
- data/bundler/lib/bundler/installer.rb +267 -0
- data/bundler/lib/bundler/lazy_specification.rb +163 -0
- data/bundler/lib/bundler/lockfile_generator.rb +95 -0
- data/bundler/lib/bundler/lockfile_parser.rb +218 -0
- data/bundler/lib/bundler/man/.document +1 -0
- data/bundler/lib/bundler/man/bundle-add.1 +82 -0
- data/bundler/lib/bundler/man/bundle-add.1.ronn +58 -0
- data/bundler/lib/bundler/man/bundle-binstubs.1 +42 -0
- data/bundler/lib/bundler/man/bundle-binstubs.1.ronn +41 -0
- data/bundler/lib/bundler/man/bundle-cache.1 +61 -0
- data/bundler/lib/bundler/man/bundle-cache.1.ronn +79 -0
- data/bundler/lib/bundler/man/bundle-check.1 +31 -0
- data/bundler/lib/bundler/man/bundle-check.1.ronn +26 -0
- data/bundler/lib/bundler/man/bundle-clean.1 +24 -0
- data/bundler/lib/bundler/man/bundle-clean.1.ronn +18 -0
- data/bundler/lib/bundler/man/bundle-config.1 +512 -0
- data/bundler/lib/bundler/man/bundle-config.1.ronn +405 -0
- data/bundler/lib/bundler/man/bundle-console.1 +53 -0
- data/bundler/lib/bundler/man/bundle-console.1.ronn +44 -0
- data/bundler/lib/bundler/man/bundle-doctor.1 +44 -0
- data/bundler/lib/bundler/man/bundle-doctor.1.ronn +33 -0
- data/bundler/lib/bundler/man/bundle-exec.1 +165 -0
- data/bundler/lib/bundler/man/bundle-exec.1.ronn +151 -0
- data/bundler/lib/bundler/man/bundle-gem.1 +105 -0
- data/bundler/lib/bundler/man/bundle-gem.1.ronn +117 -0
- data/bundler/lib/bundler/man/bundle-help.1 +13 -0
- data/bundler/lib/bundler/man/bundle-help.1.ronn +12 -0
- data/bundler/lib/bundler/man/bundle-info.1 +20 -0
- data/bundler/lib/bundler/man/bundle-info.1.ronn +17 -0
- data/bundler/lib/bundler/man/bundle-init.1 +29 -0
- data/bundler/lib/bundler/man/bundle-init.1.ronn +31 -0
- data/bundler/lib/bundler/man/bundle-inject.1 +36 -0
- data/bundler/lib/bundler/man/bundle-inject.1.ronn +24 -0
- data/bundler/lib/bundler/man/bundle-install.1 +313 -0
- data/bundler/lib/bundler/man/bundle-install.1.ronn +382 -0
- data/bundler/lib/bundler/man/bundle-list.1 +50 -0
- data/bundler/lib/bundler/man/bundle-list.1.ronn +33 -0
- data/bundler/lib/bundler/man/bundle-lock.1 +84 -0
- data/bundler/lib/bundler/man/bundle-lock.1.ronn +94 -0
- data/bundler/lib/bundler/man/bundle-open.1 +52 -0
- data/bundler/lib/bundler/man/bundle-open.1.ronn +27 -0
- data/bundler/lib/bundler/man/bundle-outdated.1 +152 -0
- data/bundler/lib/bundler/man/bundle-outdated.1.ronn +105 -0
- data/bundler/lib/bundler/man/bundle-platform.1 +71 -0
- data/bundler/lib/bundler/man/bundle-platform.1.ronn +49 -0
- data/bundler/lib/bundler/man/bundle-plugin.1 +81 -0
- data/bundler/lib/bundler/man/bundle-plugin.1.ronn +59 -0
- data/bundler/lib/bundler/man/bundle-pristine.1 +34 -0
- data/bundler/lib/bundler/man/bundle-pristine.1.ronn +34 -0
- data/bundler/lib/bundler/man/bundle-remove.1 +31 -0
- data/bundler/lib/bundler/man/bundle-remove.1.ronn +23 -0
- data/bundler/lib/bundler/man/bundle-show.1 +23 -0
- data/bundler/lib/bundler/man/bundle-show.1.ronn +21 -0
- data/bundler/lib/bundler/man/bundle-update.1 +394 -0
- data/bundler/lib/bundler/man/bundle-update.1.ronn +351 -0
- data/bundler/lib/bundler/man/bundle-version.1 +35 -0
- data/bundler/lib/bundler/man/bundle-version.1.ronn +24 -0
- data/bundler/lib/bundler/man/bundle-viz.1 +42 -0
- data/bundler/lib/bundler/man/bundle-viz.1.ronn +32 -0
- data/bundler/lib/bundler/man/bundle.1 +141 -0
- data/bundler/lib/bundler/man/bundle.1.ronn +116 -0
- data/bundler/lib/bundler/man/gemfile.5 +747 -0
- data/bundler/lib/bundler/man/gemfile.5.ronn +548 -0
- data/bundler/lib/bundler/man/index.txt +29 -0
- data/bundler/lib/bundler/match_metadata.rb +13 -0
- data/bundler/lib/bundler/match_platform.rb +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 +320 -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 +82 -0
- data/bundler/lib/bundler/resolver.rb +462 -0
- data/bundler/lib/bundler/retry.rb +66 -0
- data/bundler/lib/bundler/ruby_dsl.rb +45 -0
- data/bundler/lib/bundler/ruby_version.rb +131 -0
- data/bundler/lib/bundler/rubygems_ext.rb +354 -0
- data/bundler/lib/bundler/rubygems_gem_installer.rb +187 -0
- data/bundler/lib/bundler/rubygems_integration.rb +562 -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 +170 -0
- data/bundler/lib/bundler/settings/validator.rb +102 -0
- data/bundler/lib/bundler/settings.rb +568 -0
- data/bundler/lib/bundler/setup.rb +30 -0
- data/bundler/lib/bundler/shared_helpers.rb +358 -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 +379 -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 +260 -0
- data/bundler/lib/bundler/source/rubygems/remote.rb +68 -0
- data/bundler/lib/bundler/source/rubygems.rb +509 -0
- data/bundler/lib/bundler/source/rubygems_aggregate.rb +68 -0
- data/bundler/lib/bundler/source.rb +114 -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 +219 -0
- data/bundler/lib/bundler/stub_specification.rb +118 -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 +71 -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 +128 -0
- data/bundler/lib/bundler/vendor/fileutils/LICENSE.txt +22 -0
- data/bundler/lib/bundler/vendor/fileutils/lib/fileutils.rb +2706 -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 +452 -0
- data/bundler/lib/bundler/vendor/uri/LICENSE.txt +22 -0
- data/bundler/lib/bundler/vendor/uri/lib/uri/common.rb +729 -0
- data/bundler/lib/bundler/vendor/uri/lib/uri/file.rb +100 -0
- data/bundler/lib/bundler/vendor/uri/lib/uri/ftp.rb +267 -0
- data/bundler/lib/bundler/vendor/uri/lib/uri/generic.rb +1587 -0
- data/bundler/lib/bundler/vendor/uri/lib/uri/http.rb +125 -0
- data/bundler/lib/bundler/vendor/uri/lib/uri/https.rb +23 -0
- data/bundler/lib/bundler/vendor/uri/lib/uri/ldap.rb +261 -0
- data/bundler/lib/bundler/vendor/uri/lib/uri/ldaps.rb +22 -0
- data/bundler/lib/bundler/vendor/uri/lib/uri/mailto.rb +293 -0
- data/bundler/lib/bundler/vendor/uri/lib/uri/rfc2396_parser.rb +539 -0
- data/bundler/lib/bundler/vendor/uri/lib/uri/rfc3986_parser.rb +119 -0
- data/bundler/lib/bundler/vendor/uri/lib/uri/version.rb +6 -0
- data/bundler/lib/bundler/vendor/uri/lib/uri/ws.rb +83 -0
- data/bundler/lib/bundler/vendor/uri/lib/uri/wss.rb +23 -0
- data/bundler/lib/bundler/vendor/uri/lib/uri.rb +104 -0
- data/bundler/lib/bundler/vendored_fileutils.rb +4 -0
- data/bundler/lib/bundler/vendored_persistent.rb +15 -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_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 +654 -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 +9 -9
- data/lib/rubygems/basic_specification.rb +56 -37
- data/lib/rubygems/bundler_version_finder.rb +77 -0
- data/lib/rubygems/command.rb +142 -67
- data/lib/rubygems/command_manager.rb +61 -25
- data/lib/rubygems/commands/build_command.rb +88 -17
- data/lib/rubygems/commands/cert_command.rb +131 -82
- data/lib/rubygems/commands/check_command.rb +27 -24
- data/lib/rubygems/commands/cleanup_command.rb +56 -37
- data/lib/rubygems/commands/contents_command.rb +33 -35
- data/lib/rubygems/commands/dependency_command.rb +52 -63
- data/lib/rubygems/commands/environment_command.rb +31 -13
- 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 +21 -20
- data/lib/rubygems/commands/help_command.rb +21 -21
- data/lib/rubygems/commands/info_command.rb +38 -0
- data/lib/rubygems/commands/install_command.rb +65 -133
- data/lib/rubygems/commands/list_command.rb +10 -9
- data/lib/rubygems/commands/lock_command.rb +11 -13
- 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 +50 -26
- data/lib/rubygems/commands/pristine_command.rb +96 -66
- data/lib/rubygems/commands/push_command.rb +52 -45
- data/lib/rubygems/commands/query_command.rb +22 -328
- data/lib/rubygems/commands/rdoc_command.rb +31 -31
- 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 +375 -188
- 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 +51 -35
- data/lib/rubygems/commands/specification_command.rb +39 -29
- data/lib/rubygems/commands/stale_command.rb +5 -4
- data/lib/rubygems/commands/uninstall_command.rb +94 -59
- data/lib/rubygems/commands/unpack_command.rb +43 -52
- data/lib/rubygems/commands/update_command.rb +154 -96
- data/lib/rubygems/commands/which_command.rb +13 -16
- data/lib/rubygems/commands/yank_command.rb +27 -31
- data/lib/rubygems/compatibility.rb +8 -26
- data/lib/rubygems/config_file.rb +214 -119
- data/lib/rubygems/core_ext/kernel_gem.rb +10 -14
- data/lib/rubygems/core_ext/kernel_require.rb +119 -88
- 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 +174 -56
- data/lib/rubygems/dependency.rb +66 -51
- data/lib/rubygems/dependency_installer.rb +70 -225
- data/lib/rubygems/dependency_list.rb +32 -33
- data/lib/rubygems/deprecate.rb +112 -17
- data/lib/rubygems/doctor.rb +30 -30
- data/lib/rubygems/errors.rb +51 -9
- data/lib/rubygems/exceptions.rb +64 -35
- data/lib/rubygems/ext/build_error.rb +3 -1
- data/lib/rubygems/ext/builder.rb +96 -75
- 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 +41 -60
- data/lib/rubygems/ext/rake_builder.rb +18 -21
- data/lib/rubygems/ext.rb +8 -7
- data/lib/rubygems/gem_runner.rb +22 -24
- 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 +244 -40
- data/lib/rubygems/indexer.rb +49 -55
- data/lib/rubygems/install_default_message.rb +3 -3
- data/lib/rubygems/install_message.rb +3 -3
- data/lib/rubygems/install_update_options.rb +103 -96
- data/lib/rubygems/installer.rb +370 -214
- data/lib/rubygems/installer_uninstaller_utils.rb +29 -0
- data/lib/rubygems/local_remote_options.rb +27 -27
- data/lib/rubygems/mock_gem_ui.rb +6 -9
- data/lib/rubygems/name_tuple.rb +16 -19
- data/lib/rubygems/openssl.rb +7 -0
- data/lib/rubygems/optparse/.document +1 -0
- data/lib/rubygems/optparse/COPYING +56 -0
- data/lib/rubygems/optparse/lib/optionparser.rb +2 -0
- data/lib/rubygems/optparse/lib/optparse/ac.rb +54 -0
- data/lib/rubygems/optparse/lib/optparse/date.rb +18 -0
- data/lib/rubygems/optparse/lib/optparse/kwargs.rb +22 -0
- data/lib/rubygems/optparse/lib/optparse/shellwords.rb +7 -0
- data/lib/rubygems/optparse/lib/optparse/time.rb +11 -0
- data/lib/rubygems/optparse/lib/optparse/uri.rb +7 -0
- data/lib/rubygems/optparse/lib/optparse/version.rb +71 -0
- data/lib/rubygems/optparse/lib/optparse.rb +2308 -0
- data/lib/rubygems/optparse.rb +3 -0
- data/lib/rubygems/package/digest_io.rb +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 +18 -27
- data/lib/rubygems/package/source.rb +1 -1
- data/lib/rubygems/package/tar_header.rb +86 -71
- data/lib/rubygems/package/tar_reader/entry.rb +113 -20
- data/lib/rubygems/package/tar_reader.rb +13 -37
- data/lib/rubygems/package/tar_writer.rb +28 -44
- data/lib/rubygems/package.rb +234 -135
- data/lib/rubygems/package_task.rb +6 -12
- data/lib/rubygems/path_support.rb +18 -12
- data/lib/rubygems/platform.rb +123 -77
- data/lib/rubygems/psych_tree.rb +3 -2
- data/lib/rubygems/query_utils.rb +351 -0
- data/lib/rubygems/rdoc.rb +4 -326
- data/lib/rubygems/remote_fetcher.rb +89 -171
- data/lib/rubygems/request/connection_pools.rb +30 -23
- data/lib/rubygems/request/http_pool.rb +6 -7
- data/lib/rubygems/request/https_pool.rb +2 -3
- data/lib/rubygems/request.rb +88 -41
- data/lib/rubygems/request_set/gem_dependency_api.rb +171 -176
- data/lib/rubygems/request_set/lockfile/parser.rb +39 -49
- data/lib/rubygems/request_set/lockfile/tokenizer.rb +15 -13
- data/lib/rubygems/request_set/lockfile.rb +34 -32
- data/lib/rubygems/request_set.rb +115 -71
- data/lib/rubygems/requirement.rb +72 -63
- data/lib/rubygems/resolver/activation_request.rb +35 -60
- data/lib/rubygems/resolver/api_set/gem_parser.rb +20 -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 +18 -24
- 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 +10 -12
- data/lib/rubygems/resolver/index_specification.rb +42 -11
- data/lib/rubygems/resolver/installed_specification.rb +9 -11
- data/lib/rubygems/resolver/installer_set.rb +93 -46
- 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 +120 -64
- data/lib/rubygems/s3_uri_signer.rb +177 -0
- data/lib/rubygems/safe_yaml.rb +59 -0
- data/lib/rubygems/security/policies.rb +49 -49
- data/lib/rubygems/security/policy.rb +44 -47
- data/lib/rubygems/security/signer.rb +86 -29
- data/lib/rubygems/security/trust_dir.rb +21 -23
- data/lib/rubygems/security.rb +111 -78
- data/lib/rubygems/security_option.rb +43 -0
- data/lib/rubygems/shellwords.rb +3 -0
- data/lib/rubygems/source/git.rb +40 -40
- data/lib/rubygems/source/installed.rb +5 -7
- data/lib/rubygems/source/local.rb +30 -30
- data/lib/rubygems/source/lock.rb +9 -7
- data/lib/rubygems/source/specific_file.rb +7 -8
- data/lib/rubygems/source/vendor.rb +3 -5
- data/lib/rubygems/source.rb +73 -63
- data/lib/rubygems/source_list.rb +14 -18
- data/lib/rubygems/spec_fetcher.rb +66 -78
- data/lib/rubygems/specification.rb +823 -1092
- data/lib/rubygems/specification_policy.rb +508 -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 +52 -53
- data/lib/rubygems/text.rb +40 -27
- data/lib/rubygems/tsort/.document +1 -0
- data/lib/rubygems/tsort/LICENSE.txt +22 -0
- data/lib/rubygems/tsort/lib/tsort.rb +452 -0
- data/lib/rubygems/tsort.rb +3 -0
- data/lib/rubygems/uninstaller.rb +149 -84
- data/lib/rubygems/unknown_command_spell_checker.rb +21 -0
- data/lib/rubygems/update_suggestion.rb +69 -0
- data/lib/rubygems/uri.rb +126 -0
- data/lib/rubygems/uri_formatter.rb +3 -6
- data/lib/rubygems/user_interaction.rb +95 -143
- data/lib/rubygems/util/licenses.rb +679 -314
- data/lib/rubygems/util/list.rb +2 -1
- data/lib/rubygems/util.rb +58 -73
- data/lib/rubygems/validator.rb +23 -47
- data/lib/rubygems/version.rb +92 -48
- data/lib/rubygems/version_option.rb +20 -9
- data/lib/rubygems/yaml_serializer.rb +93 -0
- data/lib/rubygems.rb +434 -346
- data/rubygems-update.gemspec +38 -0
- data/setup.rb +13 -27
- data/test/rubygems/alternate_cert.pem +15 -14
- data/test/rubygems/alternate_cert_32.pem +16 -15
- data/test/rubygems/alternate_key.pem +25 -25
- data/test/rubygems/bad_rake.rb +1 -0
- data/test/rubygems/bundler_test_gem.rb +424 -0
- data/test/rubygems/ca_cert.pem +74 -65
- data/test/rubygems/child_cert.pem +16 -15
- data/test/rubygems/child_cert_32.pem +16 -15
- data/test/rubygems/child_key.pem +25 -25
- data/test/rubygems/client.pem +103 -45
- data/test/rubygems/data/excon-0.7.7.gemspec.rz +0 -0
- data/test/rubygems/data/null-required-ruby-version.gemspec.rz +0 -0
- data/test/rubygems/data/null-required-rubygems-version.gemspec.rz +0 -0
- data/test/rubygems/data/pry-0.4.7.gemspec.rz +0 -0
- data/test/rubygems/encrypted_private_key.pem +26 -26
- data/test/rubygems/expired_cert.pem +15 -14
- data/test/rubygems/fake_certlib/openssl.rb +1 -0
- data/test/rubygems/future_cert.pem +15 -14
- data/test/rubygems/future_cert_32.pem +15 -14
- data/test/rubygems/good_rake.rb +1 -0
- data/test/rubygems/grandchild_cert.pem +16 -15
- data/test/rubygems/grandchild_cert_32.pem +16 -15
- data/test/rubygems/grandchild_key.pem +25 -25
- data/{lib/rubygems/test_case.rb → test/rubygems/helper.rb} +643 -490
- data/{lib → test}/rubygems/installer_test_case.rb +118 -64
- data/test/rubygems/invalid_issuer_cert.pem +17 -15
- data/test/rubygems/invalid_issuer_cert_32.pem +17 -15
- data/test/rubygems/invalid_key.pem +25 -25
- data/test/rubygems/invalid_signer_cert.pem +16 -15
- data/test/rubygems/invalid_signer_cert_32.pem +16 -15
- data/test/rubygems/invalidchild_cert.pem +16 -15
- data/test/rubygems/invalidchild_cert_32.pem +16 -15
- data/test/rubygems/invalidchild_key.pem +25 -25
- data/test/rubygems/multifactor_auth_utilities.rb +111 -0
- data/{lib → test}/rubygems/package/tar_test_case.rb +54 -26
- data/test/rubygems/packages/Bluebie-legs-0.6.2.gem +0 -0
- data/test/rubygems/packages/ascii_binder-0.1.10.1.gem +0 -0
- data/test/rubygems/packages/ill-formatted-platform-1.0.0.10.gem +0 -0
- data/test/rubygems/plugin/exception/rubygems_plugin.rb +2 -1
- data/test/rubygems/plugin/load/rubygems_plugin.rb +1 -0
- data/test/rubygems/plugin/standarderror/rubygems_plugin.rb +2 -1
- data/test/rubygems/private3072_key.pem +40 -0
- data/test/rubygems/private_ec_key.pem +9 -0
- data/test/rubygems/private_key.pem +25 -25
- data/test/rubygems/public3072_cert.pem +25 -0
- data/test/rubygems/public_cert.pem +17 -15
- data/test/rubygems/public_cert_32.pem +16 -15
- data/test/rubygems/public_key.pem +7 -7
- data/test/rubygems/rubygems/commands/crash_command.rb +1 -2
- data/test/rubygems/rubygems_plugin.rb +7 -5
- data/test/rubygems/simple_gem.rb +1 -0
- data/test/rubygems/specifications/bar-0.0.2.gemspec +1 -1
- data/test/rubygems/specifications/rubyforge-0.0.1.gemspec +14 -0
- data/test/rubygems/ssl_cert.pem +78 -17
- data/test/rubygems/ssl_key.pem +25 -13
- data/test/rubygems/test_bundled_ca.rb +45 -43
- data/test/rubygems/test_config.rb +13 -9
- data/test/rubygems/test_deprecate.rb +91 -10
- data/test/rubygems/test_exit.rb +17 -0
- data/test/rubygems/test_gem.rb +917 -797
- data/test/rubygems/test_gem_available_set.rb +25 -25
- data/test/rubygems/test_gem_bundler_version_finder.rb +127 -0
- data/test/rubygems/test_gem_command.rb +195 -40
- data/test/rubygems/test_gem_command_manager.rb +182 -46
- data/test/rubygems/test_gem_commands_build_command.rb +646 -28
- data/test/rubygems/test_gem_commands_cert_command.rb +321 -126
- data/test/rubygems/test_gem_commands_check_command.rb +11 -12
- data/test/rubygems/test_gem_commands_cleanup_command.rb +147 -52
- data/test/rubygems/test_gem_commands_contents_command.rb +75 -44
- data/test/rubygems/test_gem_commands_dependency_command.rb +61 -63
- data/test/rubygems/test_gem_commands_environment_command.rb +62 -47
- data/test/rubygems/test_gem_commands_exec_command.rb +857 -0
- data/test/rubygems/test_gem_commands_fetch_command.rb +164 -33
- data/test/rubygems/test_gem_commands_generate_index_command.rb +39 -9
- data/test/rubygems/test_gem_commands_help_command.rb +36 -17
- data/test/rubygems/test_gem_commands_info_command.rb +70 -0
- data/test/rubygems/test_gem_commands_install_command.rb +736 -150
- data/test/rubygems/test_gem_commands_list_command.rb +6 -7
- data/test/rubygems/test_gem_commands_lock_command.rb +12 -14
- data/test/rubygems/test_gem_commands_mirror.rb +4 -4
- data/test/rubygems/test_gem_commands_open_command.rb +47 -16
- data/test/rubygems/test_gem_commands_outdated_command.rb +25 -8
- data/test/rubygems/test_gem_commands_owner_command.rb +368 -70
- data/test/rubygems/test_gem_commands_pristine_command.rb +318 -101
- data/test/rubygems/test_gem_commands_push_command.rb +331 -58
- data/test/rubygems/test_gem_commands_query_command.rb +329 -128
- data/test/rubygems/test_gem_commands_search_command.rb +3 -5
- data/test/rubygems/test_gem_commands_server_command.rb +7 -47
- data/test/rubygems/test_gem_commands_setup_command.rb +404 -66
- data/test/rubygems/test_gem_commands_signin_command.rb +259 -0
- data/test/rubygems/test_gem_commands_signout_command.rb +30 -0
- data/test/rubygems/test_gem_commands_sources_command.rb +316 -31
- data/test/rubygems/test_gem_commands_specification_command.rb +82 -56
- data/test/rubygems/test_gem_commands_stale_command.rb +9 -9
- data/test/rubygems/test_gem_commands_uninstall_command.rb +347 -88
- data/test/rubygems/test_gem_commands_unpack_command.rb +49 -34
- data/test/rubygems/test_gem_commands_update_command.rb +429 -107
- data/test/rubygems/test_gem_commands_which_command.rb +13 -15
- data/test/rubygems/test_gem_commands_yank_command.rb +227 -28
- data/test/rubygems/test_gem_config_file.rb +168 -108
- data/test/rubygems/test_gem_dependency.rb +112 -76
- data/test/rubygems/test_gem_dependency_installer.rb +346 -391
- data/test/rubygems/test_gem_dependency_list.rb +68 -63
- data/test/rubygems/test_gem_dependency_resolution_error.rb +6 -8
- data/test/rubygems/test_gem_doctor.rb +75 -49
- data/test/rubygems/test_gem_ext_builder.rb +121 -125
- data/test/rubygems/test_gem_ext_cargo_builder/custom_name/.gitignore +1 -0
- data/test/rubygems/test_gem_ext_cargo_builder/custom_name/custom_name.gemspec +10 -0
- data/test/rubygems/test_gem_ext_cargo_builder/custom_name/ext/custom_name_lib/Cargo.lock +249 -0
- data/test/rubygems/test_gem_ext_cargo_builder/custom_name/ext/custom_name_lib/Cargo.toml +10 -0
- data/test/rubygems/test_gem_ext_cargo_builder/custom_name/ext/custom_name_lib/src/lib.rs +27 -0
- data/test/rubygems/test_gem_ext_cargo_builder/custom_name/lib/custom_name.rb +3 -0
- data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/.gitignore +1 -0
- data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/Cargo.lock +249 -0
- data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/Cargo.toml +10 -0
- data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/rust_ruby_example.gemspec +10 -0
- data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/src/lib.rs +51 -0
- data/test/rubygems/test_gem_ext_cargo_builder.rb +167 -0
- data/test/rubygems/test_gem_ext_cargo_builder_link_flag_converter.rb +34 -0
- data/test/rubygems/test_gem_ext_cargo_builder_unit.rb +60 -0
- data/test/rubygems/test_gem_ext_cmake_builder.rb +33 -36
- data/test/rubygems/test_gem_ext_configure_builder.rb +25 -32
- data/test/rubygems/test_gem_ext_ext_conf_builder.rb +94 -76
- data/test/rubygems/test_gem_ext_rake_builder.rb +79 -31
- data/test/rubygems/test_gem_gem_runner.rb +59 -9
- data/test/rubygems/test_gem_gemcutter_utilities.rb +210 -84
- data/test/rubygems/test_gem_impossible_dependencies_error.rb +5 -7
- data/test/rubygems/test_gem_indexer.rb +121 -107
- data/test/rubygems/test_gem_install_update_options.rb +65 -54
- data/test/rubygems/test_gem_installer.rb +1517 -557
- data/test/rubygems/test_gem_local_remote_options.rb +14 -15
- data/test/rubygems/test_gem_name_tuple.rb +5 -7
- data/test/rubygems/test_gem_package.rb +673 -243
- data/test/rubygems/test_gem_package_old.rb +58 -57
- data/test/rubygems/test_gem_package_tar_header.rb +129 -50
- data/test/rubygems/test_gem_package_tar_reader.rb +71 -11
- data/test/rubygems/test_gem_package_tar_reader_entry.rb +229 -21
- data/test/rubygems/test_gem_package_tar_writer.rb +168 -101
- data/test/rubygems/test_gem_package_task.rb +59 -25
- data/test/rubygems/test_gem_path_support.rb +49 -31
- data/test/rubygems/test_gem_platform.rb +393 -204
- data/test/rubygems/test_gem_rdoc.rb +23 -156
- data/test/rubygems/test_gem_remote_fetcher.rb +580 -404
- data/test/rubygems/test_gem_request.rb +270 -86
- data/test/rubygems/test_gem_request_connection_pools.rb +57 -35
- data/test/rubygems/test_gem_request_set.rb +192 -115
- data/test/rubygems/test_gem_request_set_gem_dependency_api.rb +300 -278
- data/test/rubygems/test_gem_request_set_lockfile.rb +95 -96
- data/test/rubygems/test_gem_request_set_lockfile_parser.rb +73 -78
- data/test/rubygems/test_gem_request_set_lockfile_tokenizer.rb +138 -137
- data/test/rubygems/test_gem_requirement.rb +175 -57
- data/test/rubygems/test_gem_resolver.rb +257 -113
- data/test/rubygems/test_gem_resolver_activation_request.rb +10 -41
- data/test/rubygems/test_gem_resolver_api_set.rb +80 -79
- data/test/rubygems/test_gem_resolver_api_specification.rb +64 -42
- data/test/rubygems/test_gem_resolver_best_set.rb +44 -23
- data/test/rubygems/test_gem_resolver_composed_set.rb +2 -4
- data/test/rubygems/test_gem_resolver_conflict.rb +13 -19
- data/test/rubygems/test_gem_resolver_dependency_request.rb +16 -18
- data/test/rubygems/test_gem_resolver_git_set.rb +23 -25
- data/test/rubygems/test_gem_resolver_git_specification.rb +23 -23
- data/test/rubygems/test_gem_resolver_index_set.rb +15 -17
- data/test/rubygems/test_gem_resolver_index_specification.rb +22 -19
- data/test/rubygems/test_gem_resolver_installed_specification.rb +6 -9
- data/test/rubygems/test_gem_resolver_installer_set.rb +110 -48
- data/test/rubygems/test_gem_resolver_local_specification.rb +8 -10
- data/test/rubygems/test_gem_resolver_lock_set.rb +16 -18
- data/test/rubygems/test_gem_resolver_lock_specification.rb +18 -20
- data/test/rubygems/test_gem_resolver_requirement_list.rb +2 -4
- data/test/rubygems/test_gem_resolver_specification.rb +10 -12
- data/test/rubygems/test_gem_resolver_vendor_set.rb +10 -12
- data/test/rubygems/test_gem_resolver_vendor_specification.rb +11 -13
- data/test/rubygems/test_gem_security.rb +116 -82
- data/test/rubygems/test_gem_security_policy.rb +128 -134
- data/test/rubygems/test_gem_security_signer.rb +58 -49
- data/test/rubygems/test_gem_security_trust_dir.rb +19 -21
- data/test/rubygems/test_gem_silent_ui.rb +48 -42
- data/test/rubygems/test_gem_source.rb +73 -61
- data/test/rubygems/test_gem_source_fetch_problem.rb +23 -6
- data/test/rubygems/test_gem_source_git.rb +79 -78
- data/test/rubygems/test_gem_source_installed.rb +17 -19
- data/test/rubygems/test_gem_source_list.rb +6 -5
- data/test/rubygems/test_gem_source_local.rb +16 -16
- data/test/rubygems/test_gem_source_lock.rb +32 -34
- data/test/rubygems/test_gem_source_specific_file.rb +19 -19
- data/test/rubygems/test_gem_source_subpath_problem.rb +50 -0
- data/test/rubygems/test_gem_source_vendor.rb +14 -16
- data/test/rubygems/test_gem_spec_fetcher.rb +89 -62
- data/test/rubygems/test_gem_specification.rb +1441 -1104
- data/test/rubygems/test_gem_stream_ui.rb +71 -55
- data/test/rubygems/test_gem_stub_specification.rb +102 -41
- data/test/rubygems/test_gem_text.rb +27 -1
- data/test/rubygems/test_gem_uninstaller.rb +289 -99
- data/test/rubygems/test_gem_unsatisfiable_dependency_error.rb +4 -6
- data/test/rubygems/test_gem_update_suggestion.rb +209 -0
- data/test/rubygems/test_gem_uri.rb +41 -0
- data/test/rubygems/test_gem_uri_formatter.rb +15 -17
- data/test/rubygems/test_gem_util.rb +68 -17
- data/test/rubygems/test_gem_validator.rb +12 -16
- data/test/rubygems/test_gem_version.rb +123 -40
- data/test/rubygems/test_gem_version_option.rb +30 -17
- data/test/rubygems/test_kernel.rb +75 -37
- data/test/rubygems/test_project_sanity.rb +49 -0
- data/test/rubygems/test_remote_fetch_error.rb +20 -0
- data/test/rubygems/test_require.rb +527 -117
- data/test/rubygems/test_rubygems.rb +76 -0
- data/test/rubygems/test_webauthn_listener.rb +143 -0
- data/test/rubygems/test_webauthn_listener_response.rb +93 -0
- data/test/rubygems/test_webauthn_poller.rb +124 -0
- data/{lib/rubygems/test_utilities.rb → test/rubygems/utilities.rb} +135 -83
- data/test/rubygems/wrong_key_cert.pem +16 -15
- data/test/rubygems/wrong_key_cert_32.pem +16 -15
- data/test/test_changelog_generator.rb +17 -0
- metadata +513 -189
- data/.autotest +0 -71
- data/.document +0 -5
- data/.travis.yml +0 -46
- data/CONTRIBUTING.rdoc +0 -129
- data/CVE-2013-4287.txt +0 -35
- data/CVE-2013-4363.txt +0 -45
- data/CVE-2015-3900.txt +0 -40
- data/History.txt +0 -3094
- data/MAINTAINERS.md +0 -5
- data/POLICIES.rdoc +0 -61
- data/README.rdoc +0 -54
- data/Rakefile +0 -449
- data/UPGRADING.rdoc +0 -92
- data/appveyor.yml +0 -36
- data/bin/gem +0 -25
- data/bin/update_rubygems +0 -37
- data/lib/gauntlet_rubygems.rb +0 -51
- data/lib/rubygems/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/ubygems.rb +0 -11
- data/test/rubygems/data/null-type.gemspec.rz +0 -0
- data/test/rubygems/fix_openssl_warnings.rb +0 -13
- data/test/rubygems/test_gem_server.rb +0 -409
- 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/command.rb
CHANGED
|
@@ -1,13 +1,14 @@
|
|
|
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
|
-
|
|
10
|
-
|
|
9
|
+
require_relative "optparse"
|
|
10
|
+
require_relative "requirement"
|
|
11
|
+
require_relative "user_interaction"
|
|
11
12
|
|
|
12
13
|
##
|
|
13
14
|
# Base class for all Gem commands. When creating a new gem command, define
|
|
@@ -17,9 +18,12 @@ require 'rubygems/user_interaction'
|
|
|
17
18
|
# A very good example to look at is Gem::Commands::ContentsCommand
|
|
18
19
|
|
|
19
20
|
class Gem::Command
|
|
20
|
-
|
|
21
21
|
include Gem::UserInteraction
|
|
22
22
|
|
|
23
|
+
Gem::OptionParser.accept Symbol do |value|
|
|
24
|
+
value.to_sym
|
|
25
|
+
end
|
|
26
|
+
|
|
23
27
|
##
|
|
24
28
|
# The name of the command.
|
|
25
29
|
|
|
@@ -73,7 +77,7 @@ class Gem::Command
|
|
|
73
77
|
when Array
|
|
74
78
|
@extra_args = value
|
|
75
79
|
when String
|
|
76
|
-
@extra_args = value.split
|
|
80
|
+
@extra_args = value.split(" ")
|
|
77
81
|
end
|
|
78
82
|
end
|
|
79
83
|
|
|
@@ -90,7 +94,7 @@ class Gem::Command
|
|
|
90
94
|
# array or a string to be split on white space.
|
|
91
95
|
|
|
92
96
|
def self.add_specific_extra_args(cmd,args)
|
|
93
|
-
args = args.split(/\s+/) if args.
|
|
97
|
+
args = args.split(/\s+/) if args.is_a? String
|
|
94
98
|
specific_extra_args_hash[cmd] = args
|
|
95
99
|
end
|
|
96
100
|
|
|
@@ -121,7 +125,8 @@ class Gem::Command
|
|
|
121
125
|
@program_name = "gem #{command}"
|
|
122
126
|
@defaults = defaults
|
|
123
127
|
@options = defaults.dup
|
|
124
|
-
@option_groups = Hash.new {
|
|
128
|
+
@option_groups = Hash.new {|h,k| h[k] = [] }
|
|
129
|
+
@deprecated_options = { command => {} }
|
|
125
130
|
@parser = nil
|
|
126
131
|
@when_invoked = nil
|
|
127
132
|
end
|
|
@@ -150,20 +155,26 @@ class Gem::Command
|
|
|
150
155
|
##
|
|
151
156
|
# Display to the user that a gem couldn't be found and reasons why
|
|
152
157
|
#--
|
|
153
|
-
# TODO: replace +domain+ with a parameter to suppress suggestions
|
|
154
158
|
|
|
155
|
-
def show_lookup_failure(gem_name, version, errors,
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
159
|
+
def show_lookup_failure(gem_name, version, errors, suppress_suggestions = false, required_by = nil)
|
|
160
|
+
gem = "'#{gem_name}' (#{version})"
|
|
161
|
+
msg = String.new "Could not find a valid gem #{gem}"
|
|
162
|
+
|
|
163
|
+
if errors && !errors.empty?
|
|
164
|
+
msg << ", here is why:\n"
|
|
165
|
+
errors.each {|x| msg << " #{x.wordy}\n" }
|
|
160
166
|
else
|
|
161
|
-
|
|
167
|
+
if required_by && gem != required_by
|
|
168
|
+
msg << " (required by #{required_by}) in any repository"
|
|
169
|
+
else
|
|
170
|
+
msg << " in any repository"
|
|
171
|
+
end
|
|
162
172
|
end
|
|
163
173
|
|
|
164
|
-
|
|
165
|
-
suggestions = Gem::SpecFetcher.fetcher.suggest_gems_from_name gem_name
|
|
174
|
+
alert_error msg
|
|
166
175
|
|
|
176
|
+
unless suppress_suggestions
|
|
177
|
+
suggestions = Gem::SpecFetcher.fetcher.suggest_gems_from_name(gem_name, :latest, 10)
|
|
167
178
|
unless suggestions.empty?
|
|
168
179
|
alert_error "Possible alternatives: #{suggestions.join(", ")}"
|
|
169
180
|
end
|
|
@@ -176,12 +187,12 @@ class Gem::Command
|
|
|
176
187
|
def get_all_gem_names
|
|
177
188
|
args = options[:args]
|
|
178
189
|
|
|
179
|
-
if args.nil?
|
|
190
|
+
if args.nil? || args.empty?
|
|
180
191
|
raise Gem::CommandLineError,
|
|
181
192
|
"Please specify at least one gem name (e.g. gem build GEMNAME)"
|
|
182
193
|
end
|
|
183
194
|
|
|
184
|
-
args.select {
|
|
195
|
+
args.select {|arg| arg !~ /^-/ }
|
|
185
196
|
end
|
|
186
197
|
|
|
187
198
|
##
|
|
@@ -191,11 +202,15 @@ class Gem::Command
|
|
|
191
202
|
# respectively.
|
|
192
203
|
def get_all_gem_names_and_versions
|
|
193
204
|
get_all_gem_names.map do |name|
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
205
|
+
extract_gem_name_and_version(name)
|
|
206
|
+
end
|
|
207
|
+
end
|
|
208
|
+
|
|
209
|
+
def extract_gem_name_and_version(name) # :nodoc:
|
|
210
|
+
if /\A(.*):(#{Gem::Requirement::PATTERN_RAW})\z/ =~ name
|
|
211
|
+
[$1, $2]
|
|
212
|
+
else
|
|
213
|
+
[name]
|
|
199
214
|
end
|
|
200
215
|
end
|
|
201
216
|
|
|
@@ -206,14 +221,14 @@ class Gem::Command
|
|
|
206
221
|
def get_one_gem_name
|
|
207
222
|
args = options[:args]
|
|
208
223
|
|
|
209
|
-
if args.nil?
|
|
224
|
+
if args.nil? || args.empty?
|
|
210
225
|
raise Gem::CommandLineError,
|
|
211
226
|
"Please specify a gem name on the command line (e.g. gem build GEMNAME)"
|
|
212
227
|
end
|
|
213
228
|
|
|
214
|
-
if args.size > 1
|
|
229
|
+
if args.size > 1
|
|
215
230
|
raise Gem::CommandLineError,
|
|
216
|
-
"Too many gem names (#{args.join(
|
|
231
|
+
"Too many gem names (#{args.join(", ")}); please specify only one"
|
|
217
232
|
end
|
|
218
233
|
|
|
219
234
|
args.first
|
|
@@ -300,15 +315,23 @@ class Gem::Command
|
|
|
300
315
|
|
|
301
316
|
options[:build_args] = build_args
|
|
302
317
|
|
|
303
|
-
|
|
318
|
+
if options[:silent]
|
|
319
|
+
old_ui = self.ui
|
|
320
|
+
self.ui = ui = Gem::SilentUI.new
|
|
321
|
+
end
|
|
304
322
|
|
|
305
|
-
if options[:help]
|
|
323
|
+
if options[:help]
|
|
306
324
|
show_help
|
|
307
|
-
elsif @when_invoked
|
|
325
|
+
elsif @when_invoked
|
|
308
326
|
@when_invoked.call options
|
|
309
327
|
else
|
|
310
328
|
execute
|
|
311
329
|
end
|
|
330
|
+
ensure
|
|
331
|
+
if ui
|
|
332
|
+
self.ui = old_ui
|
|
333
|
+
ui.close
|
|
334
|
+
end
|
|
312
335
|
end
|
|
313
336
|
|
|
314
337
|
##
|
|
@@ -326,7 +349,7 @@ class Gem::Command
|
|
|
326
349
|
##
|
|
327
350
|
# Add a command-line option and handler to the command.
|
|
328
351
|
#
|
|
329
|
-
# See OptionParser#make_switch for an explanation of +opts+.
|
|
352
|
+
# See Gem::OptionParser#make_switch for an explanation of +opts+.
|
|
330
353
|
#
|
|
331
354
|
# +handler+ will be called with two values, the value of the argument and
|
|
332
355
|
# the options hash.
|
|
@@ -337,6 +360,8 @@ class Gem::Command
|
|
|
337
360
|
def add_option(*opts, &handler) # :yields: value, options
|
|
338
361
|
group_name = Symbol === opts.first ? opts.shift : :options
|
|
339
362
|
|
|
363
|
+
raise "Do not pass an empty string in opts" if opts.include?("")
|
|
364
|
+
|
|
340
365
|
@option_groups[group_name] << [opts, handler]
|
|
341
366
|
end
|
|
342
367
|
|
|
@@ -345,7 +370,49 @@ class Gem::Command
|
|
|
345
370
|
|
|
346
371
|
def remove_option(name)
|
|
347
372
|
@option_groups.each do |_, option_list|
|
|
348
|
-
option_list.reject! {
|
|
373
|
+
option_list.reject! {|args, _| args.any? {|x| x.is_a?(String) && x =~ /^#{name}/ } }
|
|
374
|
+
end
|
|
375
|
+
end
|
|
376
|
+
|
|
377
|
+
##
|
|
378
|
+
# Mark a command-line option as deprecated, and optionally specify a
|
|
379
|
+
# deprecation horizon.
|
|
380
|
+
#
|
|
381
|
+
# Note that with the current implementation, every version of the option needs
|
|
382
|
+
# to be explicitly deprecated, so to deprecate an option defined as
|
|
383
|
+
#
|
|
384
|
+
# add_option('-t', '--[no-]test', 'Set test mode') do |value, options|
|
|
385
|
+
# # ... stuff ...
|
|
386
|
+
# end
|
|
387
|
+
#
|
|
388
|
+
# you would need to explicitly add a call to `deprecate_option` for every
|
|
389
|
+
# version of the option you want to deprecate, like
|
|
390
|
+
#
|
|
391
|
+
# deprecate_option('-t')
|
|
392
|
+
# deprecate_option('--test')
|
|
393
|
+
# deprecate_option('--no-test')
|
|
394
|
+
|
|
395
|
+
def deprecate_option(name, version: nil, extra_msg: nil)
|
|
396
|
+
@deprecated_options[command].merge!({ name => { "rg_version_to_expire" => version, "extra_msg" => extra_msg } })
|
|
397
|
+
end
|
|
398
|
+
|
|
399
|
+
def check_deprecated_options(options)
|
|
400
|
+
options.each do |option|
|
|
401
|
+
next unless option_is_deprecated?(option)
|
|
402
|
+
deprecation = @deprecated_options[command][option]
|
|
403
|
+
version_to_expire = deprecation["rg_version_to_expire"]
|
|
404
|
+
|
|
405
|
+
deprecate_option_msg = if version_to_expire
|
|
406
|
+
"The \"#{option}\" option has been deprecated and will be removed in Rubygems #{version_to_expire}."
|
|
407
|
+
else
|
|
408
|
+
"The \"#{option}\" option has been deprecated and will be removed in future versions of Rubygems."
|
|
409
|
+
end
|
|
410
|
+
|
|
411
|
+
extra_msg = deprecation["extra_msg"]
|
|
412
|
+
|
|
413
|
+
deprecate_option_msg += " #{extra_msg}" if extra_msg
|
|
414
|
+
|
|
415
|
+
alert_warning(deprecate_option_msg)
|
|
349
416
|
end
|
|
350
417
|
end
|
|
351
418
|
|
|
@@ -355,19 +422,17 @@ class Gem::Command
|
|
|
355
422
|
|
|
356
423
|
def merge_options(new_options)
|
|
357
424
|
@options = @defaults.clone
|
|
358
|
-
new_options.each
|
|
425
|
+
new_options.each {|k,v| @options[k] = v }
|
|
359
426
|
end
|
|
360
427
|
|
|
361
428
|
##
|
|
362
429
|
# True if the command handles the given argument list.
|
|
363
430
|
|
|
364
431
|
def handles?(args)
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
return false
|
|
370
|
-
end
|
|
432
|
+
parser.parse!(args.dup)
|
|
433
|
+
true
|
|
434
|
+
rescue StandardError
|
|
435
|
+
false
|
|
371
436
|
end
|
|
372
437
|
|
|
373
438
|
##
|
|
@@ -376,6 +441,7 @@ class Gem::Command
|
|
|
376
441
|
|
|
377
442
|
def handle_options(args)
|
|
378
443
|
args = add_extra_args(args)
|
|
444
|
+
check_deprecated_options(args)
|
|
379
445
|
@options = Marshal.load Marshal.dump @defaults # deep copy
|
|
380
446
|
parser.parse!(args)
|
|
381
447
|
@options[:args] = args
|
|
@@ -393,7 +459,7 @@ class Gem::Command
|
|
|
393
459
|
until extra.empty? do
|
|
394
460
|
ex = []
|
|
395
461
|
ex << extra.shift
|
|
396
|
-
ex << extra.shift if extra.first.to_s
|
|
462
|
+
ex << extra.shift if /^[^-]/.match?(extra.first.to_s) # rubocop:disable Performance/StartWith
|
|
397
463
|
result << ex if handles?(ex)
|
|
398
464
|
end
|
|
399
465
|
|
|
@@ -402,8 +468,16 @@ class Gem::Command
|
|
|
402
468
|
result
|
|
403
469
|
end
|
|
404
470
|
|
|
471
|
+
def deprecated?
|
|
472
|
+
false
|
|
473
|
+
end
|
|
474
|
+
|
|
405
475
|
private
|
|
406
476
|
|
|
477
|
+
def option_is_deprecated?(option)
|
|
478
|
+
@deprecated_options[command].has_key?(option)
|
|
479
|
+
end
|
|
480
|
+
|
|
407
481
|
def add_parser_description # :nodoc:
|
|
408
482
|
return unless description
|
|
409
483
|
|
|
@@ -425,7 +499,7 @@ class Gem::Command
|
|
|
425
499
|
|
|
426
500
|
configure_options "", regular_options
|
|
427
501
|
|
|
428
|
-
@option_groups.sort_by {
|
|
502
|
+
@option_groups.sort_by {|n,_| n.to_s }.each do |group_name, option_list|
|
|
429
503
|
@parser.separator nil
|
|
430
504
|
configure_options group_name, option_list
|
|
431
505
|
end
|
|
@@ -435,7 +509,7 @@ class Gem::Command
|
|
|
435
509
|
# Adds a section with +title+ and +content+ to the parser help view. Used
|
|
436
510
|
# for adding command arguments and default arguments.
|
|
437
511
|
|
|
438
|
-
def add_parser_run_info
|
|
512
|
+
def add_parser_run_info(title, content)
|
|
439
513
|
return if content.empty?
|
|
440
514
|
|
|
441
515
|
@parser.separator nil
|
|
@@ -468,7 +542,7 @@ class Gem::Command
|
|
|
468
542
|
# command.
|
|
469
543
|
|
|
470
544
|
def create_option_parser
|
|
471
|
-
@parser = OptionParser.new
|
|
545
|
+
@parser = Gem::OptionParser.new
|
|
472
546
|
|
|
473
547
|
add_parser_options
|
|
474
548
|
|
|
@@ -482,19 +556,18 @@ class Gem::Command
|
|
|
482
556
|
end
|
|
483
557
|
|
|
484
558
|
def configure_options(header, option_list)
|
|
485
|
-
return if option_list.nil?
|
|
559
|
+
return if option_list.nil? || option_list.empty?
|
|
486
560
|
|
|
487
|
-
header = header.to_s.empty? ?
|
|
561
|
+
header = header.to_s.empty? ? "" : "#{header} "
|
|
488
562
|
@parser.separator " #{header}Options:"
|
|
489
563
|
|
|
490
564
|
option_list.each do |args, handler|
|
|
491
|
-
args.select { |arg| arg =~ /^-/ }
|
|
492
565
|
@parser.on(*args) do |value|
|
|
493
566
|
handler.call(value, @options)
|
|
494
567
|
end
|
|
495
568
|
end
|
|
496
569
|
|
|
497
|
-
@parser.separator
|
|
570
|
+
@parser.separator ""
|
|
498
571
|
end
|
|
499
572
|
|
|
500
573
|
##
|
|
@@ -507,27 +580,27 @@ class Gem::Command
|
|
|
507
580
|
# ----------------------------------------------------------------
|
|
508
581
|
# Add the options common to all commands.
|
|
509
582
|
|
|
510
|
-
add_common_option(
|
|
511
|
-
|
|
583
|
+
add_common_option("-h", "--help",
|
|
584
|
+
"Get help on this command") do |value, options|
|
|
512
585
|
options[:help] = true
|
|
513
586
|
end
|
|
514
587
|
|
|
515
|
-
add_common_option(
|
|
516
|
-
|
|
588
|
+
add_common_option("-V", "--[no-]verbose",
|
|
589
|
+
"Set the verbose level of output") do |value, options|
|
|
517
590
|
# Set us to "really verbose" so the progress meter works
|
|
518
|
-
if Gem.configuration.verbose
|
|
591
|
+
if Gem.configuration.verbose && value
|
|
519
592
|
Gem.configuration.verbose = 1
|
|
520
593
|
else
|
|
521
594
|
Gem.configuration.verbose = value
|
|
522
595
|
end
|
|
523
596
|
end
|
|
524
597
|
|
|
525
|
-
add_common_option(
|
|
598
|
+
add_common_option("-q", "--quiet", "Silence command progress meter") do |value, options|
|
|
526
599
|
Gem.configuration.verbose = false
|
|
527
600
|
end
|
|
528
601
|
|
|
529
602
|
add_common_option("--silent",
|
|
530
|
-
"Silence
|
|
603
|
+
"Silence RubyGems output") do |value, options|
|
|
531
604
|
options[:silent] = true
|
|
532
605
|
end
|
|
533
606
|
|
|
@@ -535,38 +608,41 @@ class Gem::Command
|
|
|
535
608
|
# commands. Both options are actually handled before the other
|
|
536
609
|
# options get parsed.
|
|
537
610
|
|
|
538
|
-
add_common_option(
|
|
539
|
-
|
|
611
|
+
add_common_option("--config-file FILE",
|
|
612
|
+
"Use this config file instead of default") do
|
|
540
613
|
end
|
|
541
614
|
|
|
542
|
-
add_common_option(
|
|
543
|
-
|
|
615
|
+
add_common_option("--backtrace",
|
|
616
|
+
"Show stack backtrace on errors") do
|
|
544
617
|
end
|
|
545
618
|
|
|
546
|
-
add_common_option(
|
|
547
|
-
|
|
619
|
+
add_common_option("--debug",
|
|
620
|
+
"Turn on Ruby debugging") do
|
|
548
621
|
end
|
|
549
622
|
|
|
550
|
-
add_common_option(
|
|
551
|
-
|
|
623
|
+
add_common_option("--norc",
|
|
624
|
+
"Avoid loading any .gemrc file") do
|
|
552
625
|
end
|
|
553
626
|
|
|
554
|
-
|
|
555
627
|
# :stopdoc:
|
|
556
628
|
|
|
557
629
|
HELP = <<-HELP
|
|
558
|
-
RubyGems is a
|
|
559
|
-
basic help message containing pointers to more information.
|
|
630
|
+
RubyGems is a package manager for Ruby.
|
|
560
631
|
|
|
561
632
|
Usage:
|
|
562
633
|
gem -h/--help
|
|
563
634
|
gem -v/--version
|
|
564
|
-
gem command [arguments...] [options...]
|
|
635
|
+
gem [global options...] command [arguments...] [options...]
|
|
636
|
+
|
|
637
|
+
Global options:
|
|
638
|
+
-C PATH run as if gem was started in <PATH>
|
|
639
|
+
instead of the current working directory
|
|
565
640
|
|
|
566
641
|
Examples:
|
|
567
642
|
gem install rake
|
|
568
643
|
gem list --local
|
|
569
644
|
gem build package.gemspec
|
|
645
|
+
gem push package-0.0.1.gem
|
|
570
646
|
gem help install
|
|
571
647
|
|
|
572
648
|
Further help:
|
|
@@ -580,11 +656,10 @@ basic help message containing pointers to more information.
|
|
|
580
656
|
http://localhost:8808/
|
|
581
657
|
with info about installed gems
|
|
582
658
|
Further information:
|
|
583
|
-
|
|
659
|
+
https://guides.rubygems.org
|
|
584
660
|
HELP
|
|
585
661
|
|
|
586
662
|
# :startdoc:
|
|
587
|
-
|
|
588
663
|
end
|
|
589
664
|
|
|
590
665
|
##
|
|
@@ -1,12 +1,14 @@
|
|
|
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 "command"
|
|
10
|
+
require_relative "user_interaction"
|
|
11
|
+
require_relative "text"
|
|
10
12
|
|
|
11
13
|
##
|
|
12
14
|
# The command manager registers and installs all the individual sub-commands
|
|
@@ -31,7 +33,7 @@ require 'rubygems/user_interaction'
|
|
|
31
33
|
# See Gem::Command for instructions on writing gem commands.
|
|
32
34
|
|
|
33
35
|
class Gem::CommandManager
|
|
34
|
-
|
|
36
|
+
include Gem::Text
|
|
35
37
|
include Gem::UserInteraction
|
|
36
38
|
|
|
37
39
|
BUILTIN_COMMANDS = [ # :nodoc:
|
|
@@ -42,9 +44,11 @@ class Gem::CommandManager
|
|
|
42
44
|
:contents,
|
|
43
45
|
:dependency,
|
|
44
46
|
:environment,
|
|
47
|
+
:exec,
|
|
45
48
|
:fetch,
|
|
46
49
|
:generate_index,
|
|
47
50
|
:help,
|
|
51
|
+
:info,
|
|
48
52
|
:install,
|
|
49
53
|
:list,
|
|
50
54
|
:lock,
|
|
@@ -58,6 +62,8 @@ class Gem::CommandManager
|
|
|
58
62
|
:rdoc,
|
|
59
63
|
:search,
|
|
60
64
|
:server,
|
|
65
|
+
:signin,
|
|
66
|
+
:signout,
|
|
61
67
|
:sources,
|
|
62
68
|
:specification,
|
|
63
69
|
:stale,
|
|
@@ -66,13 +72,19 @@ class Gem::CommandManager
|
|
|
66
72
|
:update,
|
|
67
73
|
:which,
|
|
68
74
|
:yank,
|
|
69
|
-
]
|
|
75
|
+
].freeze
|
|
76
|
+
|
|
77
|
+
ALIAS_COMMANDS = {
|
|
78
|
+
"i" => "install",
|
|
79
|
+
"login" => "signin",
|
|
80
|
+
"logout" => "signout",
|
|
81
|
+
}.freeze
|
|
70
82
|
|
|
71
83
|
##
|
|
72
84
|
# Return the authoritative instance of the command manager.
|
|
73
85
|
|
|
74
86
|
def self.instance
|
|
75
|
-
@
|
|
87
|
+
@instance ||= new
|
|
76
88
|
end
|
|
77
89
|
|
|
78
90
|
##
|
|
@@ -87,14 +99,14 @@ class Gem::CommandManager
|
|
|
87
99
|
# Reset the authoritative instance of the command manager.
|
|
88
100
|
|
|
89
101
|
def self.reset
|
|
90
|
-
@
|
|
102
|
+
@instance = nil
|
|
91
103
|
end
|
|
92
104
|
|
|
93
105
|
##
|
|
94
106
|
# Register all the subcommands supported by the gem command.
|
|
95
107
|
|
|
96
108
|
def initialize
|
|
97
|
-
require
|
|
109
|
+
require "timeout"
|
|
98
110
|
@commands = {}
|
|
99
111
|
|
|
100
112
|
BUILTIN_COMMANDS.each do |name|
|
|
@@ -129,7 +141,7 @@ class Gem::CommandManager
|
|
|
129
141
|
# Return a sorted list of all command names as strings.
|
|
130
142
|
|
|
131
143
|
def command_names
|
|
132
|
-
@commands.keys.collect {|key| key.to_s}.sort
|
|
144
|
+
@commands.keys.collect {|key| key.to_s }.sort
|
|
133
145
|
end
|
|
134
146
|
|
|
135
147
|
##
|
|
@@ -138,57 +150,76 @@ class Gem::CommandManager
|
|
|
138
150
|
def run(args, build_args=nil)
|
|
139
151
|
process_args(args, build_args)
|
|
140
152
|
rescue StandardError, Timeout::Error => ex
|
|
141
|
-
|
|
153
|
+
if ex.respond_to?(:detailed_message)
|
|
154
|
+
msg = ex.detailed_message(highlight: false).sub(/\A(.*?)(?: \(.+?\))/) { $1 }
|
|
155
|
+
else
|
|
156
|
+
msg = ex.message
|
|
157
|
+
end
|
|
158
|
+
alert_error clean_text("While executing gem ... (#{ex.class})\n #{msg}")
|
|
142
159
|
ui.backtrace ex
|
|
143
160
|
|
|
144
161
|
terminate_interaction(1)
|
|
145
162
|
rescue Interrupt
|
|
146
|
-
alert_error "Interrupted"
|
|
163
|
+
alert_error clean_text("Interrupted")
|
|
147
164
|
terminate_interaction(1)
|
|
148
165
|
end
|
|
149
166
|
|
|
150
167
|
def process_args(args, build_args=nil)
|
|
151
|
-
if args.empty?
|
|
168
|
+
if args.empty?
|
|
152
169
|
say Gem::Command::HELP
|
|
153
170
|
terminate_interaction 1
|
|
154
171
|
end
|
|
155
172
|
|
|
156
173
|
case args.first
|
|
157
|
-
when
|
|
174
|
+
when "-h", "--help" then
|
|
158
175
|
say Gem::Command::HELP
|
|
159
176
|
terminate_interaction 0
|
|
160
|
-
when
|
|
177
|
+
when "-v", "--version" then
|
|
161
178
|
say Gem::VERSION
|
|
162
179
|
terminate_interaction 0
|
|
180
|
+
when "-C" then
|
|
181
|
+
args.shift
|
|
182
|
+
start_point = args.shift
|
|
183
|
+
if Dir.exist?(start_point)
|
|
184
|
+
Dir.chdir(start_point) { invoke_command(args, build_args) }
|
|
185
|
+
else
|
|
186
|
+
alert_error clean_text("#{start_point} isn't a directory.")
|
|
187
|
+
terminate_interaction 1
|
|
188
|
+
end
|
|
163
189
|
when /^-/ then
|
|
164
|
-
alert_error "Invalid option: #{args.first}.
|
|
190
|
+
alert_error clean_text("Invalid option: #{args.first}. See 'gem --help'.")
|
|
165
191
|
terminate_interaction 1
|
|
166
192
|
else
|
|
167
|
-
|
|
168
|
-
cmd = find_command cmd_name
|
|
169
|
-
cmd.invoke_with_build_args args, build_args
|
|
193
|
+
invoke_command(args, build_args)
|
|
170
194
|
end
|
|
171
195
|
end
|
|
172
196
|
|
|
173
197
|
def find_command(cmd_name)
|
|
198
|
+
cmd_name = find_alias_command cmd_name
|
|
199
|
+
|
|
174
200
|
possibilities = find_command_possibilities cmd_name
|
|
175
201
|
|
|
176
|
-
if possibilities.size > 1
|
|
202
|
+
if possibilities.size > 1
|
|
177
203
|
raise Gem::CommandLineError,
|
|
178
|
-
"Ambiguous command #{cmd_name} matches [#{possibilities.join(
|
|
179
|
-
elsif possibilities.empty?
|
|
180
|
-
raise Gem::
|
|
204
|
+
"Ambiguous command #{cmd_name} matches [#{possibilities.join(", ")}]"
|
|
205
|
+
elsif possibilities.empty?
|
|
206
|
+
raise Gem::UnknownCommandError.new(cmd_name)
|
|
181
207
|
end
|
|
182
208
|
|
|
183
209
|
self[possibilities.first]
|
|
184
210
|
end
|
|
185
211
|
|
|
212
|
+
def find_alias_command(cmd_name)
|
|
213
|
+
alias_name = ALIAS_COMMANDS[cmd_name]
|
|
214
|
+
alias_name ? alias_name : cmd_name
|
|
215
|
+
end
|
|
216
|
+
|
|
186
217
|
def find_command_possibilities(cmd_name)
|
|
187
218
|
len = cmd_name.length
|
|
188
219
|
|
|
189
|
-
found = command_names.select {
|
|
220
|
+
found = command_names.select {|name| cmd_name == name[0, len] }
|
|
190
221
|
|
|
191
|
-
exact = found.find {
|
|
222
|
+
exact = found.find {|name| name == cmd_name }
|
|
192
223
|
|
|
193
224
|
exact ? [exact] : found
|
|
194
225
|
end
|
|
@@ -210,10 +241,15 @@ class Gem::CommandManager
|
|
|
210
241
|
rescue Exception => e
|
|
211
242
|
e = load_error if load_error
|
|
212
243
|
|
|
213
|
-
alert_error "Loading command: #{command_name} (#{e.class})\n\t#{e}"
|
|
244
|
+
alert_error clean_text("Loading command: #{command_name} (#{e.class})\n\t#{e}")
|
|
214
245
|
ui.backtrace e
|
|
215
246
|
end
|
|
216
247
|
end
|
|
217
248
|
|
|
249
|
+
def invoke_command(args, build_args)
|
|
250
|
+
cmd_name = args.shift.downcase
|
|
251
|
+
cmd = find_command cmd_name
|
|
252
|
+
cmd.deprecation_warning if cmd.deprecated?
|
|
253
|
+
cmd.invoke_with_build_args args, build_args
|
|
254
|
+
end
|
|
218
255
|
end
|
|
219
|
-
|