rubygems-update 3.3.18 → 3.4.19
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +1429 -1064
- data/CONTRIBUTING.md +31 -8
- data/Manifest.txt +61 -36
- data/POLICIES.md +55 -20
- data/README.md +19 -6
- data/bundler/CHANGELOG.md +457 -1
- data/bundler/README.md +3 -6
- data/bundler/UPGRADING.md +11 -4
- data/bundler/bundler.gemspec +8 -10
- data/bundler/exe/bundle +5 -16
- data/bundler/lib/bundler/build_metadata.rb +2 -2
- data/bundler/lib/bundler/cli/add.rb +1 -1
- data/bundler/lib/bundler/cli/binstubs.rb +6 -2
- data/bundler/lib/bundler/cli/check.rb +1 -1
- data/bundler/lib/bundler/cli/common.rb +2 -0
- data/bundler/lib/bundler/cli/console.rb +2 -2
- data/bundler/lib/bundler/cli/doctor.rb +4 -6
- data/bundler/lib/bundler/cli/gem.rb +62 -40
- data/bundler/lib/bundler/cli/info.rb +1 -1
- data/bundler/lib/bundler/cli/init.rb +6 -2
- data/bundler/lib/bundler/cli/install.rb +8 -6
- data/bundler/lib/bundler/cli/lock.rb +8 -5
- data/bundler/lib/bundler/cli/open.rb +6 -4
- data/bundler/lib/bundler/cli/outdated.rb +14 -7
- data/bundler/lib/bundler/cli/platform.rb +7 -5
- data/bundler/lib/bundler/cli/viz.rb +1 -1
- data/bundler/lib/bundler/cli.rb +53 -7
- data/bundler/lib/bundler/compact_index_client/cache.rb +1 -1
- data/bundler/lib/bundler/compact_index_client/updater.rb +40 -39
- data/bundler/lib/bundler/constants.rb +1 -1
- data/bundler/lib/bundler/current_ruby.rb +16 -5
- data/bundler/lib/bundler/definition.rb +262 -133
- data/bundler/lib/bundler/dependency.rb +20 -86
- data/bundler/lib/bundler/digest.rb +1 -1
- data/bundler/lib/bundler/dsl.rb +6 -7
- data/bundler/lib/bundler/endpoint_specification.rb +2 -13
- data/bundler/lib/bundler/env.rb +2 -2
- data/bundler/lib/bundler/environment_preserver.rb +3 -2
- data/bundler/lib/bundler/errors.rb +1 -11
- data/bundler/lib/bundler/feature_flag.rb +0 -2
- data/bundler/lib/bundler/fetcher/compact_index.rb +11 -13
- data/bundler/lib/bundler/fetcher/dependency.rb +2 -6
- data/bundler/lib/bundler/fetcher/downloader.rb +4 -5
- data/bundler/lib/bundler/fetcher/index.rb +1 -2
- data/bundler/lib/bundler/fetcher.rb +21 -15
- data/bundler/lib/bundler/force_platform.rb +18 -0
- data/bundler/lib/bundler/friendly_errors.rb +1 -4
- data/bundler/lib/bundler/gem_helper.rb +3 -4
- data/bundler/lib/bundler/gem_helpers.rb +7 -2
- data/bundler/lib/bundler/gem_version_promoter.rb +53 -98
- data/bundler/lib/bundler/graph.rb +3 -3
- data/bundler/lib/bundler/index.rb +13 -47
- data/bundler/lib/bundler/injector.rb +5 -4
- data/bundler/lib/bundler/inline.rb +9 -11
- data/bundler/lib/bundler/installer/parallel_installer.rb +4 -34
- data/bundler/lib/bundler/installer/standalone.rb +13 -9
- data/bundler/lib/bundler/installer.rb +17 -29
- data/bundler/lib/bundler/lazy_specification.rb +54 -53
- data/bundler/lib/bundler/lockfile_generator.rb +3 -3
- data/bundler/lib/bundler/lockfile_parser.rb +17 -16
- data/bundler/lib/bundler/man/bundle-add.1 +6 -2
- data/bundler/lib/bundler/man/bundle-add.1.ronn +4 -1
- data/bundler/lib/bundler/man/bundle-binstubs.1 +1 -1
- data/bundler/lib/bundler/man/bundle-cache.1 +9 -3
- data/bundler/lib/bundler/man/bundle-cache.1.ronn +9 -2
- data/bundler/lib/bundler/man/bundle-check.1 +1 -1
- data/bundler/lib/bundler/man/bundle-clean.1 +2 -2
- data/bundler/lib/bundler/man/bundle-clean.1.ronn +1 -1
- data/bundler/lib/bundler/man/bundle-config.1 +26 -10
- data/bundler/lib/bundler/man/bundle-config.1.ronn +17 -10
- 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 +1 -1
- data/bundler/lib/bundler/man/bundle-exec.1 +6 -6
- data/bundler/lib/bundler/man/bundle-exec.1.ronn +6 -6
- data/bundler/lib/bundler/man/bundle-gem.1 +27 -37
- data/bundler/lib/bundler/man/bundle-gem.1.ronn +5 -5
- 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 +3 -3
- data/bundler/lib/bundler/man/bundle-info.1.ronn +3 -3
- data/bundler/lib/bundler/man/bundle-init.1 +5 -1
- data/bundler/lib/bundler/man/bundle-init.1.ronn +2 -0
- data/bundler/lib/bundler/man/bundle-inject.1 +5 -2
- data/bundler/lib/bundler/man/bundle-inject.1.ronn +3 -1
- data/bundler/lib/bundler/man/bundle-install.1 +5 -30
- data/bundler/lib/bundler/man/bundle-install.1.ronn +6 -29
- data/bundler/lib/bundler/man/bundle-list.1 +1 -1
- data/bundler/lib/bundler/man/bundle-lock.1 +1 -1
- data/bundler/lib/bundler/man/bundle-open.1 +22 -2
- data/bundler/lib/bundler/man/bundle-open.1.ronn +9 -1
- data/bundler/lib/bundler/man/bundle-outdated.1 +13 -9
- data/bundler/lib/bundler/man/bundle-outdated.1.ronn +12 -9
- data/bundler/lib/bundler/man/bundle-platform.1 +16 -6
- data/bundler/lib/bundler/man/bundle-platform.1.ronn +14 -7
- data/bundler/lib/bundler/man/bundle-plugin.1 +81 -0
- data/bundler/lib/bundler/man/bundle-plugin.1.ronn +59 -0
- data/bundler/lib/bundler/man/bundle-pristine.1 +1 -1
- data/bundler/lib/bundler/man/bundle-remove.1 +1 -1
- data/bundler/lib/bundler/man/bundle-show.1 +1 -1
- data/bundler/lib/bundler/man/bundle-update.1 +1 -1
- 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 +4 -1
- data/bundler/lib/bundler/man/bundle-viz.1.ronn +2 -0
- data/bundler/lib/bundler/man/bundle.1 +15 -10
- data/bundler/lib/bundler/man/bundle.1.ronn +12 -7
- data/bundler/lib/bundler/man/gemfile.5 +55 -55
- data/bundler/lib/bundler/man/gemfile.5.ronn +57 -53
- data/bundler/lib/bundler/man/index.txt +4 -0
- data/bundler/lib/bundler/match_metadata.rb +13 -0
- data/bundler/lib/bundler/match_remote_metadata.rb +29 -0
- data/bundler/lib/bundler/mirror.rb +5 -7
- data/bundler/lib/bundler/plugin/index.rb +5 -5
- data/bundler/lib/bundler/plugin/installer/rubygems.rb +0 -4
- data/bundler/lib/bundler/plugin/installer.rb +5 -2
- data/bundler/lib/bundler/plugin.rb +3 -1
- data/bundler/lib/bundler/remote_specification.rb +7 -12
- 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 +72 -0
- data/bundler/lib/bundler/resolver/root.rb +25 -0
- data/bundler/lib/bundler/resolver/spec_group.rb +42 -71
- data/bundler/lib/bundler/resolver.rb +335 -328
- data/bundler/lib/bundler/ruby_dsl.rb +7 -1
- data/bundler/lib/bundler/ruby_version.rb +8 -8
- data/bundler/lib/bundler/rubygems_ext.rb +100 -9
- data/bundler/lib/bundler/rubygems_gem_installer.rb +23 -14
- data/bundler/lib/bundler/rubygems_integration.rb +11 -15
- data/bundler/lib/bundler/runtime.rb +2 -6
- data/bundler/lib/bundler/safe_marshal.rb +31 -0
- data/bundler/lib/bundler/settings.rb +5 -11
- data/bundler/lib/bundler/setup.rb +4 -1
- data/bundler/lib/bundler/shared_helpers.rb +3 -3
- data/bundler/lib/bundler/source/git/git_proxy.rb +237 -74
- data/bundler/lib/bundler/source/git.rb +55 -30
- data/bundler/lib/bundler/source/metadata.rb +1 -2
- data/bundler/lib/bundler/source/path/installer.rb +1 -22
- data/bundler/lib/bundler/source/path.rb +6 -6
- data/bundler/lib/bundler/source/rubygems.rb +26 -81
- data/bundler/lib/bundler/source.rb +1 -1
- data/bundler/lib/bundler/source_list.rb +8 -2
- data/bundler/lib/bundler/spec_set.rb +60 -37
- data/bundler/lib/bundler/templates/Executable +1 -1
- data/bundler/lib/bundler/templates/Executable.bundler +5 -10
- data/bundler/lib/bundler/templates/Executable.standalone +2 -0
- data/bundler/lib/bundler/templates/newgem/Cargo.toml.tt +7 -0
- data/bundler/lib/bundler/templates/newgem/Gemfile.tt +3 -0
- data/bundler/lib/bundler/templates/newgem/README.md.tt +6 -4
- data/bundler/lib/bundler/templates/newgem/Rakefile.tt +12 -1
- data/bundler/lib/bundler/templates/newgem/bin/console.tt +0 -4
- data/bundler/lib/bundler/templates/newgem/circleci/config.yml.tt +12 -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 +1 -1
- 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 +10 -0
- data/bundler/lib/bundler/templates/newgem/gitignore.tt +3 -0
- data/bundler/lib/bundler/templates/newgem/gitlab-ci.yml.tt +13 -4
- data/bundler/lib/bundler/templates/newgem/newgem.gemspec.tt +9 -2
- data/bundler/lib/bundler/ui/rg_proxy.rb +1 -1
- data/bundler/lib/bundler/ui/shell.rb +35 -12
- data/bundler/lib/bundler/ui/silent.rb +21 -5
- data/bundler/lib/bundler/uri_normalizer.rb +23 -0
- data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/timed_stack.rb +3 -3
- data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/wrapper.rb +0 -1
- data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool.rb +3 -1
- data/bundler/lib/bundler/vendor/fileutils/lib/fileutils.rb +1351 -409
- data/bundler/lib/bundler/vendor/net-http-persistent/README.rdoc +1 -1
- data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb +1 -1
- 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/lib/thor/shell/basic.rb +1 -1
- data/bundler/lib/bundler/vendor/uri/lib/uri/common.rb +64 -16
- data/bundler/lib/bundler/vendor/uri/lib/uri/file.rb +7 -1
- data/bundler/lib/bundler/vendor/uri/lib/uri/ftp.rb +2 -1
- data/bundler/lib/bundler/vendor/uri/lib/uri/generic.rb +27 -7
- data/bundler/lib/bundler/vendor/uri/lib/uri/http.rb +40 -2
- data/bundler/lib/bundler/vendor/uri/lib/uri/https.rb +2 -1
- data/bundler/lib/bundler/vendor/uri/lib/uri/ldap.rb +1 -1
- data/bundler/lib/bundler/vendor/uri/lib/uri/ldaps.rb +2 -1
- data/bundler/lib/bundler/vendor/uri/lib/uri/mailto.rb +2 -2
- data/bundler/lib/bundler/vendor/uri/lib/uri/rfc2396_parser.rb +15 -9
- data/bundler/lib/bundler/vendor/uri/lib/uri/rfc3986_parser.rb +11 -6
- data/bundler/lib/bundler/vendor/uri/lib/uri/version.rb +1 -1
- data/bundler/lib/bundler/vendor/uri/lib/uri/ws.rb +1 -2
- data/bundler/lib/bundler/vendor/uri/lib/uri/wss.rb +2 -1
- data/bundler/lib/bundler/vendor/uri/lib/uri.rb +3 -2
- data/bundler/lib/bundler/vendored_persistent.rb +1 -33
- data/bundler/lib/bundler/{vendored_tmpdir.rb → vendored_pub_grub.rb} +1 -1
- data/bundler/lib/bundler/version.rb +5 -1
- data/bundler/lib/bundler/worker.rb +5 -7
- data/bundler/lib/bundler.rb +25 -77
- data/{bin → exe}/gem +4 -5
- data/{bin → exe}/update_rubygems +12 -10
- data/lib/rubygems/available_set.rb +4 -3
- data/lib/rubygems/basic_specification.rb +5 -4
- data/lib/rubygems/bundler_version_finder.rb +2 -2
- data/lib/rubygems/command.rb +41 -32
- data/lib/rubygems/command_manager.rb +30 -15
- data/lib/rubygems/commands/build_command.rb +12 -8
- data/lib/rubygems/commands/cert_command.rb +34 -33
- data/lib/rubygems/commands/check_command.rb +21 -20
- data/lib/rubygems/commands/cleanup_command.rb +18 -17
- data/lib/rubygems/commands/contents_command.rb +14 -13
- data/lib/rubygems/commands/dependency_command.rb +17 -16
- data/lib/rubygems/commands/environment_command.rb +6 -5
- data/lib/rubygems/commands/exec_command.rb +249 -0
- data/lib/rubygems/commands/fetch_command.rb +10 -9
- data/lib/rubygems/commands/generate_index_command.rb +18 -17
- data/lib/rubygems/commands/help_command.rb +7 -6
- data/lib/rubygems/commands/info_command.rb +3 -3
- data/lib/rubygems/commands/install_command.rb +28 -23
- data/lib/rubygems/commands/list_command.rb +4 -3
- data/lib/rubygems/commands/lock_command.rb +5 -4
- data/lib/rubygems/commands/mirror_command.rb +4 -3
- data/lib/rubygems/commands/open_command.rb +10 -9
- data/lib/rubygems/commands/outdated_command.rb +6 -5
- data/lib/rubygems/commands/owner_command.rb +17 -14
- data/lib/rubygems/commands/pristine_command.rb +46 -36
- data/lib/rubygems/commands/push_command.rb +9 -8
- data/lib/rubygems/commands/query_command.rb +9 -8
- data/lib/rubygems/commands/rdoc_command.rb +21 -19
- data/lib/rubygems/commands/search_command.rb +4 -3
- data/lib/rubygems/commands/server_command.rb +4 -3
- data/lib/rubygems/commands/setup_command.rb +97 -106
- data/lib/rubygems/commands/signin_command.rb +10 -9
- data/lib/rubygems/commands/signout_command.rb +8 -7
- data/lib/rubygems/commands/sources_command.rb +22 -21
- data/lib/rubygems/commands/specification_command.rb +14 -13
- data/lib/rubygems/commands/stale_command.rb +3 -2
- data/lib/rubygems/commands/uninstall_command.rb +44 -40
- data/lib/rubygems/commands/unpack_command.rb +14 -13
- data/lib/rubygems/commands/update_command.rb +42 -63
- data/lib/rubygems/commands/which_command.rb +8 -7
- data/lib/rubygems/commands/yank_command.rb +12 -11
- data/lib/rubygems/config_file.rb +55 -21
- data/lib/rubygems/core_ext/kernel_gem.rb +1 -6
- data/lib/rubygems/core_ext/kernel_require.rb +109 -115
- data/lib/rubygems/core_ext/kernel_warn.rb +33 -37
- data/lib/rubygems/core_ext/tcpsocket_init.rb +3 -1
- data/lib/rubygems/defaults.rb +33 -18
- data/lib/rubygems/dependency.rb +15 -11
- data/lib/rubygems/dependency_installer.rb +38 -37
- data/lib/rubygems/dependency_list.rb +7 -6
- data/lib/rubygems/deprecate.rb +3 -2
- data/lib/rubygems/doctor.rb +19 -18
- data/lib/rubygems/errors.rb +3 -2
- data/lib/rubygems/exceptions.rb +16 -8
- data/lib/rubygems/ext/build_error.rb +2 -1
- data/lib/rubygems/ext/builder.rb +37 -21
- data/lib/rubygems/ext/cargo_builder/link_flag_converter.rb +9 -5
- data/lib/rubygems/ext/cargo_builder.rb +150 -111
- data/lib/rubygems/ext/cmake_builder.rb +2 -2
- data/lib/rubygems/ext/configure_builder.rb +2 -1
- data/lib/rubygems/ext/ext_conf_builder.rb +11 -9
- data/lib/rubygems/ext/rake_builder.rb +7 -5
- data/lib/rubygems/ext.rb +8 -7
- data/lib/rubygems/gem_runner.rb +6 -5
- 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 +90 -34
- data/lib/rubygems/indexer.rb +29 -28
- data/lib/rubygems/install_default_message.rb +3 -2
- data/lib/rubygems/install_message.rb +3 -2
- data/lib/rubygems/install_update_options.rb +56 -55
- data/lib/rubygems/installer.rb +54 -46
- data/lib/rubygems/installer_uninstaller_utils.rb +2 -2
- data/lib/rubygems/local_remote_options.rb +19 -20
- data/lib/rubygems/mock_gem_ui.rb +3 -2
- data/lib/rubygems/name_tuple.rb +5 -4
- data/lib/rubygems/optparse/lib/optparse.rb +20 -15
- data/lib/rubygems/optparse.rb +1 -1
- data/lib/rubygems/package/digest_io.rb +1 -0
- data/lib/rubygems/package/file_source.rb +3 -2
- data/lib/rubygems/package/io_source.rb +1 -0
- data/lib/rubygems/package/old.rb +9 -8
- data/lib/rubygems/package/source.rb +1 -0
- data/lib/rubygems/package/tar_header.rb +63 -62
- data/lib/rubygems/package/tar_reader/entry.rb +91 -9
- data/lib/rubygems/package/tar_reader.rb +2 -29
- data/lib/rubygems/package/tar_writer.rb +8 -7
- data/lib/rubygems/package.rb +64 -48
- data/lib/rubygems/package_task.rb +5 -4
- data/lib/rubygems/path_support.rb +1 -0
- data/lib/rubygems/platform.rb +79 -53
- data/lib/rubygems/psych_tree.rb +2 -1
- data/lib/rubygems/query_utils.rb +35 -35
- data/lib/rubygems/rdoc.rb +3 -2
- data/lib/rubygems/remote_fetcher.rb +23 -22
- data/lib/rubygems/request/connection_pools.rb +4 -4
- data/lib/rubygems/request/http_pool.rb +2 -1
- data/lib/rubygems/request/https_pool.rb +1 -0
- data/lib/rubygems/request.rb +23 -22
- data/lib/rubygems/request_set/gem_dependency_api.rb +123 -123
- data/lib/rubygems/request_set/lockfile/parser.rb +28 -27
- data/lib/rubygems/request_set/lockfile/tokenizer.rb +5 -3
- data/lib/rubygems/request_set/lockfile.rb +6 -5
- data/lib/rubygems/request_set.rb +20 -19
- data/lib/rubygems/requirement.rb +15 -14
- data/lib/rubygems/resolver/activation_request.rb +4 -3
- data/lib/rubygems/resolver/api_set.rb +5 -4
- data/lib/rubygems/resolver/api_specification.rb +7 -6
- data/lib/rubygems/resolver/best_set.rb +6 -5
- data/lib/rubygems/resolver/composed_set.rb +1 -0
- data/lib/rubygems/resolver/conflict.rb +11 -10
- data/lib/rubygems/resolver/current_set.rb +1 -0
- data/lib/rubygems/resolver/dependency_request.rb +3 -2
- data/lib/rubygems/resolver/git_set.rb +3 -2
- data/lib/rubygems/resolver/git_specification.rb +7 -6
- data/lib/rubygems/resolver/index_set.rb +4 -3
- data/lib/rubygems/resolver/index_specification.rb +7 -5
- data/lib/rubygems/resolver/installed_specification.rb +5 -4
- data/lib/rubygems/resolver/installer_set.rb +15 -17
- data/lib/rubygems/resolver/local_specification.rb +3 -2
- data/lib/rubygems/resolver/lock_set.rb +5 -4
- data/lib/rubygems/resolver/lock_specification.rb +5 -4
- data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph.rb +1 -1
- data/lib/rubygems/resolver/molinillo/lib/molinillo/errors.rb +32 -26
- data/lib/rubygems/resolver/molinillo/lib/molinillo/gem_metadata.rb +1 -1
- data/lib/rubygems/resolver/molinillo.rb +2 -1
- data/lib/rubygems/resolver/requirement_list.rb +1 -0
- data/lib/rubygems/resolver/set.rb +1 -0
- data/lib/rubygems/resolver/source_set.rb +2 -0
- data/lib/rubygems/resolver/spec_specification.rb +1 -0
- data/lib/rubygems/resolver/specification.rb +2 -1
- data/lib/rubygems/resolver/stats.rb +2 -1
- data/lib/rubygems/resolver/vendor_set.rb +2 -1
- data/lib/rubygems/resolver/vendor_specification.rb +4 -3
- data/lib/rubygems/resolver.rb +41 -40
- data/lib/rubygems/s3_uri_signer.rb +10 -8
- data/lib/rubygems/safe_yaml.rb +4 -2
- data/lib/rubygems/security/policies.rb +48 -47
- data/lib/rubygems/security/policy.rb +19 -18
- data/lib/rubygems/security/signer.rb +6 -5
- data/lib/rubygems/security/trust_dir.rb +5 -4
- data/lib/rubygems/security.rb +30 -42
- data/lib/rubygems/security_option.rb +6 -5
- data/lib/rubygems/shellwords.rb +3 -0
- data/lib/rubygems/source/git.rb +22 -22
- data/lib/rubygems/source/installed.rb +2 -1
- data/lib/rubygems/source/local.rb +3 -2
- data/lib/rubygems/source/lock.rb +1 -0
- data/lib/rubygems/source/specific_file.rb +2 -1
- data/lib/rubygems/source/vendor.rb +1 -0
- data/lib/rubygems/source.rb +16 -16
- data/lib/rubygems/spec_fetcher.rb +10 -9
- data/lib/rubygems/specification.rb +121 -114
- data/lib/rubygems/specification_policy.rb +36 -15
- data/lib/rubygems/stub_specification.rb +11 -9
- data/lib/rubygems/text.rb +2 -2
- data/lib/rubygems/tsort/lib/tsort.rb +308 -310
- data/lib/rubygems/tsort.rb +1 -1
- data/lib/rubygems/uninstaller.rb +19 -18
- data/lib/rubygems/update_suggestion.rb +69 -0
- data/lib/rubygems/uri.rb +4 -4
- data/lib/rubygems/uri_formatter.rb +1 -1
- data/lib/rubygems/user_interaction.rb +37 -21
- data/lib/rubygems/util/licenses.rb +4 -3
- data/lib/rubygems/util/list.rb +1 -0
- data/lib/rubygems/util.rb +12 -15
- data/lib/rubygems/validator.rb +7 -6
- data/lib/rubygems/version.rb +17 -11
- data/lib/rubygems/version_option.rb +4 -3
- data/lib/rubygems.rb +89 -68
- data/rubygems-update.gemspec +10 -8
- data/setup.rb +10 -9
- data/test/rubygems/alternate_cert.pem +14 -14
- data/test/rubygems/alternate_cert_32.pem +15 -15
- data/test/rubygems/alternate_key.pem +25 -25
- data/test/rubygems/bad_rake.rb +1 -0
- data/test/rubygems/bundler_test_gem.rb +421 -0
- data/test/rubygems/child_cert.pem +15 -16
- data/test/rubygems/child_cert_32.pem +15 -16
- data/test/rubygems/child_key.pem +25 -25
- data/test/rubygems/encrypted_private_key.pem +26 -26
- data/test/rubygems/expired_cert.pem +15 -15
- data/test/rubygems/fake_certlib/openssl.rb +1 -0
- data/test/rubygems/future_cert.pem +15 -15
- data/test/rubygems/future_cert_32.pem +15 -15
- data/test/rubygems/good_rake.rb +1 -0
- data/test/rubygems/grandchild_cert.pem +15 -16
- data/test/rubygems/grandchild_cert_32.pem +15 -16
- data/test/rubygems/grandchild_key.pem +25 -25
- data/test/rubygems/helper.rb +172 -151
- data/test/rubygems/installer_test_case.rb +14 -13
- data/test/rubygems/invalid_issuer_cert.pem +16 -16
- data/test/rubygems/invalid_issuer_cert_32.pem +16 -16
- data/test/rubygems/invalid_key.pem +25 -25
- data/test/rubygems/invalid_signer_cert.pem +15 -15
- data/test/rubygems/invalid_signer_cert_32.pem +15 -15
- data/test/rubygems/invalidchild_cert.pem +15 -16
- data/test/rubygems/invalidchild_cert_32.pem +15 -16
- data/test/rubygems/invalidchild_key.pem +25 -25
- data/test/rubygems/multifactor_auth_utilities.rb +111 -0
- data/test/rubygems/package/tar_test_case.rb +53 -17
- data/test/rubygems/packages/Bluebie-legs-0.6.2.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/private_key.pem +25 -25
- data/test/rubygems/public_cert.pem +16 -16
- data/test/rubygems/public_cert_32.pem +15 -15
- data/test/rubygems/public_key.pem +7 -7
- data/test/rubygems/rubygems/commands/crash_command.rb +1 -0
- data/test/rubygems/rubygems_plugin.rb +3 -2
- data/test/rubygems/simple_gem.rb +2 -1
- data/test/rubygems/specifications/bar-0.0.2.gemspec +2 -0
- data/test/rubygems/specifications/rubyforge-0.0.1.gemspec +6 -4
- data/test/rubygems/test_bundled_ca.rb +13 -12
- data/test/rubygems/test_config.rb +5 -4
- data/test/rubygems/test_deprecate.rb +5 -4
- data/test/rubygems/test_exit.rb +9 -3
- data/test/rubygems/test_gem.rb +339 -677
- data/test/rubygems/test_gem_available_set.rb +22 -21
- data/test/rubygems/test_gem_bundler_version_finder.rb +6 -4
- data/test/rubygems/test_gem_command.rb +45 -44
- data/test/rubygems/test_gem_command_manager.rb +96 -30
- data/test/rubygems/test_gem_commands_build_command.rb +74 -63
- data/test/rubygems/test_gem_commands_cert_command.rb +98 -99
- data/test/rubygems/test_gem_commands_check_command.rb +5 -4
- data/test/rubygems/test_gem_commands_cleanup_command.rb +41 -40
- data/test/rubygems/test_gem_commands_contents_command.rb +28 -27
- data/test/rubygems/test_gem_commands_dependency_command.rb +37 -36
- data/test/rubygems/test_gem_commands_environment_command.rb +17 -16
- data/test/rubygems/test_gem_commands_exec_command.rb +853 -0
- data/test/rubygems/test_gem_commands_fetch_command.rb +38 -37
- data/test/rubygems/test_gem_commands_generate_index_command.rb +8 -7
- data/test/rubygems/test_gem_commands_help_command.rb +14 -13
- data/test/rubygems/test_gem_commands_info_command.rb +29 -2
- data/test/rubygems/test_gem_commands_install_command.rb +152 -132
- data/test/rubygems/test_gem_commands_list_command.rb +5 -4
- data/test/rubygems/test_gem_commands_lock_command.rb +11 -10
- data/test/rubygems/test_gem_commands_mirror.rb +3 -2
- data/test/rubygems/test_gem_commands_open_command.rb +5 -4
- data/test/rubygems/test_gem_commands_outdated_command.rb +10 -9
- data/test/rubygems/test_gem_commands_owner_command.rb +227 -50
- data/test/rubygems/test_gem_commands_pristine_command.rb +142 -93
- data/test/rubygems/test_gem_commands_push_command.rb +189 -64
- data/test/rubygems/test_gem_commands_query_command.rb +74 -73
- data/test/rubygems/test_gem_commands_search_command.rb +3 -2
- data/test/rubygems/test_gem_commands_server_command.rb +3 -2
- data/test/rubygems/test_gem_commands_setup_command.rb +123 -96
- data/test/rubygems/test_gem_commands_signin_command.rb +71 -31
- data/test/rubygems/test_gem_commands_signout_command.rb +3 -3
- data/test/rubygems/test_gem_commands_sources_command.rb +29 -29
- data/test/rubygems/test_gem_commands_specification_command.rb +33 -32
- data/test/rubygems/test_gem_commands_stale_command.rb +5 -4
- data/test/rubygems/test_gem_commands_uninstall_command.rb +99 -81
- data/test/rubygems/test_gem_commands_unpack_command.rb +32 -31
- data/test/rubygems/test_gem_commands_update_command.rb +96 -95
- data/test/rubygems/test_gem_commands_which_command.rb +7 -6
- data/test/rubygems/test_gem_commands_yank_command.rb +162 -43
- data/test/rubygems/test_gem_config_file.rb +94 -81
- data/test/rubygems/test_gem_dependency.rb +76 -73
- data/test/rubygems/test_gem_dependency_installer.rb +200 -165
- data/test/rubygems/test_gem_dependency_list.rb +48 -47
- data/test/rubygems/test_gem_dependency_resolution_error.rb +5 -4
- data/test/rubygems/test_gem_doctor.rb +27 -26
- data/test/rubygems/test_gem_ext_builder.rb +60 -61
- data/test/rubygems/test_gem_ext_cargo_builder/custom_name/custom_name.gemspec +4 -4
- data/test/rubygems/test_gem_ext_cargo_builder/custom_name/{Cargo.lock → ext/custom_name_lib/Cargo.lock} +23 -33
- data/test/rubygems/test_gem_ext_cargo_builder/custom_name/{Cargo.toml → ext/custom_name_lib/Cargo.toml} +1 -1
- data/test/rubygems/test_gem_ext_cargo_builder/custom_name/{src → ext/custom_name_lib/src}/lib.rs +1 -1
- 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/Cargo.lock +37 -33
- data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/Cargo.toml +1 -1
- data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/rust_ruby_example.gemspec +2 -0
- data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/src/lib.rs +12 -0
- data/test/rubygems/test_gem_ext_cargo_builder.rb +48 -59
- data/test/rubygems/test_gem_ext_cargo_builder_link_flag_converter.rb +20 -19
- data/test/rubygems/test_gem_ext_cargo_builder_unit.rb +21 -36
- data/test/rubygems/test_gem_ext_cmake_builder.rb +16 -15
- data/test/rubygems/test_gem_ext_configure_builder.rb +14 -13
- data/test/rubygems/test_gem_ext_ext_conf_builder.rb +51 -52
- data/test/rubygems/test_gem_ext_rake_builder.rb +16 -15
- data/test/rubygems/test_gem_gem_runner.rb +15 -9
- data/test/rubygems/test_gem_gemcutter_utilities.rb +170 -84
- data/test/rubygems/test_gem_impossible_dependencies_error.rb +5 -4
- data/test/rubygems/test_gem_indexer.rb +87 -67
- data/test/rubygems/test_gem_install_update_options.rb +17 -16
- data/test/rubygems/test_gem_installer.rb +422 -304
- data/test/rubygems/test_gem_local_remote_options.rb +11 -10
- data/test/rubygems/test_gem_name_tuple.rb +5 -4
- data/test/rubygems/test_gem_package.rb +243 -231
- data/test/rubygems/test_gem_package_old.rb +14 -13
- data/test/rubygems/test_gem_package_tar_header.rb +48 -47
- data/test/rubygems/test_gem_package_tar_reader.rb +56 -8
- data/test/rubygems/test_gem_package_tar_reader_entry.rb +162 -16
- data/test/rubygems/test_gem_package_tar_writer.rb +77 -76
- data/test/rubygems/test_gem_package_task.rb +19 -18
- data/test/rubygems/test_gem_path_support.rb +15 -14
- data/test/rubygems/test_gem_platform.rb +333 -227
- data/test/rubygems/test_gem_rdoc.rb +15 -14
- data/test/rubygems/test_gem_remote_fetcher.rb +155 -154
- data/test/rubygems/test_gem_request.rb +64 -58
- data/test/rubygems/test_gem_request_connection_pools.rb +30 -29
- data/test/rubygems/test_gem_request_set.rb +101 -100
- data/test/rubygems/test_gem_request_set_gem_dependency_api.rb +210 -211
- data/test/rubygems/test_gem_request_set_lockfile.rb +87 -86
- data/test/rubygems/test_gem_request_set_lockfile_parser.rb +58 -57
- data/test/rubygems/test_gem_request_set_lockfile_tokenizer.rb +63 -62
- data/test/rubygems/test_gem_requirement.rb +48 -41
- data/test/rubygems/test_gem_resolver.rb +167 -99
- data/test/rubygems/test_gem_resolver_activation_request.rb +7 -6
- data/test/rubygems/test_gem_resolver_api_set.rb +34 -33
- data/test/rubygems/test_gem_resolver_api_specification.rb +48 -47
- data/test/rubygems/test_gem_resolver_best_set.rb +23 -22
- data/test/rubygems/test_gem_resolver_composed_set.rb +2 -1
- data/test/rubygems/test_gem_resolver_conflict.rb +13 -12
- data/test/rubygems/test_gem_resolver_dependency_request.rb +16 -15
- data/test/rubygems/test_gem_resolver_git_set.rb +22 -21
- data/test/rubygems/test_gem_resolver_git_specification.rb +22 -21
- data/test/rubygems/test_gem_resolver_index_set.rb +13 -12
- data/test/rubygems/test_gem_resolver_index_specification.rb +17 -16
- data/test/rubygems/test_gem_resolver_installed_specification.rb +6 -5
- data/test/rubygems/test_gem_resolver_installer_set.rb +79 -34
- data/test/rubygems/test_gem_resolver_local_specification.rb +8 -7
- data/test/rubygems/test_gem_resolver_lock_set.rb +13 -12
- data/test/rubygems/test_gem_resolver_lock_specification.rb +18 -17
- data/test/rubygems/test_gem_resolver_requirement_list.rb +2 -1
- data/test/rubygems/test_gem_resolver_specification.rb +9 -8
- data/test/rubygems/test_gem_resolver_vendor_set.rb +7 -6
- data/test/rubygems/test_gem_resolver_vendor_specification.rb +11 -10
- data/test/rubygems/test_gem_security.rb +69 -68
- data/test/rubygems/test_gem_security_policy.rb +72 -72
- data/test/rubygems/test_gem_security_signer.rb +35 -34
- data/test/rubygems/test_gem_security_trust_dir.rb +7 -6
- data/test/rubygems/test_gem_silent_ui.rb +39 -32
- data/test/rubygems/test_gem_source.rb +45 -44
- data/test/rubygems/test_gem_source_fetch_problem.rb +10 -9
- data/test/rubygems/test_gem_source_git.rb +69 -62
- data/test/rubygems/test_gem_source_installed.rb +17 -16
- data/test/rubygems/test_gem_source_list.rb +6 -5
- data/test/rubygems/test_gem_source_local.rb +15 -14
- data/test/rubygems/test_gem_source_lock.rb +32 -31
- data/test/rubygems/test_gem_source_specific_file.rb +18 -17
- data/test/rubygems/test_gem_source_subpath_problem.rb +8 -7
- data/test/rubygems/test_gem_source_vendor.rb +14 -13
- data/test/rubygems/test_gem_spec_fetcher.rb +73 -72
- data/test/rubygems/test_gem_specification.rb +533 -469
- data/test/rubygems/test_gem_stream_ui.rb +53 -22
- data/test/rubygems/test_gem_stub_specification.rb +33 -32
- data/test/rubygems/test_gem_text.rb +2 -1
- data/test/rubygems/test_gem_uninstaller.rb +118 -117
- data/test/rubygems/test_gem_unsatisfiable_dependency_error.rb +4 -3
- data/test/rubygems/test_gem_update_suggestion.rb +209 -0
- data/test/rubygems/test_gem_uri.rb +6 -4
- data/test/rubygems/test_gem_uri_formatter.rb +15 -14
- data/test/rubygems/test_gem_util.rb +24 -23
- data/test/rubygems/test_gem_validator.rb +8 -8
- data/test/rubygems/test_gem_version.rb +24 -16
- data/test/rubygems/test_gem_version_option.rb +16 -15
- data/test/rubygems/test_kernel.rb +43 -48
- data/test/rubygems/test_project_sanity.rb +32 -3
- data/test/rubygems/test_remote_fetch_error.rb +8 -7
- data/test/rubygems/test_require.rb +118 -103
- data/test/rubygems/test_rubygems.rb +10 -8
- 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/test/rubygems/utilities.rb +98 -34
- data/test/rubygems/wrong_key_cert.pem +15 -15
- data/test/rubygems/wrong_key_cert_32.pem +15 -15
- data/test/test_changelog_generator.rb +1 -1
- metadata +99 -46
- data/bundler/lib/bundler/dep_proxy.rb +0 -55
- data/bundler/lib/bundler/templates/gems.rb +0 -5
- data/bundler/lib/bundler/templates/newgem/ext/newgem/extconf.rb.tt +0 -5
- data/bundler/lib/bundler/templates/newgem/travis.yml.tt +0 -6
- data/bundler/lib/bundler/vendor/molinillo/LICENSE +0 -9
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/delegates/resolution_state.rb +0 -57
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/delegates/specification_provider.rb +0 -88
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/action.rb +0 -36
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/add_edge_no_circular.rb +0 -66
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/add_vertex.rb +0 -62
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/delete_edge.rb +0 -63
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/detach_vertex_named.rb +0 -61
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/log.rb +0 -126
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/set_payload.rb +0 -46
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/tag.rb +0 -36
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/vertex.rb +0 -164
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph.rb +0 -255
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/errors.rb +0 -149
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/gem_metadata.rb +0 -6
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/modules/specification_provider.rb +0 -112
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/modules/ui.rb +0 -67
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/resolution.rb +0 -839
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/resolver.rb +0 -46
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/state.rb +0 -58
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo.rb +0 -11
- data/bundler/lib/bundler/vendor/tmpdir/lib/tmpdir.rb +0 -154
- data/bundler/lib/bundler/vendored_molinillo.rb +0 -4
- data/bundler/lib/bundler/version_ranges.rb +0 -122
- data/test/rubygems/test_gem_ext_cargo_builder/custom_name/build.rb +0 -21
- data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/build.rb +0 -21
@@ -30,7 +30,7 @@
|
|
30
30
|
# class RSYNC < Generic
|
31
31
|
# DEFAULT_PORT = 873
|
32
32
|
# end
|
33
|
-
#
|
33
|
+
# register_scheme 'RSYNC', RSYNC
|
34
34
|
# end
|
35
35
|
# #=> Bundler::URI::RSYNC
|
36
36
|
#
|
@@ -70,7 +70,6 @@
|
|
70
70
|
# - Bundler::URI::REGEXP - (in uri/common.rb)
|
71
71
|
# - Bundler::URI::REGEXP::PATTERN - (in uri/common.rb)
|
72
72
|
# - Bundler::URI::Util - (in uri/common.rb)
|
73
|
-
# - Bundler::URI::Escape - (in uri/common.rb)
|
74
73
|
# - Bundler::URI::Error - (in uri/common.rb)
|
75
74
|
# - Bundler::URI::InvalidURIError - (in uri/common.rb)
|
76
75
|
# - Bundler::URI::InvalidComponentError - (in uri/common.rb)
|
@@ -101,3 +100,5 @@ require_relative 'uri/https'
|
|
101
100
|
require_relative 'uri/ldap'
|
102
101
|
require_relative 'uri/ldaps'
|
103
102
|
require_relative 'uri/mailto'
|
103
|
+
require_relative 'uri/ws'
|
104
|
+
require_relative 'uri/wss'
|
@@ -11,37 +11,5 @@ end
|
|
11
11
|
require_relative "vendor/net-http-persistent/lib/net/http/persistent"
|
12
12
|
|
13
13
|
module Bundler
|
14
|
-
|
15
|
-
def connection_for(uri)
|
16
|
-
super(uri) do |connection|
|
17
|
-
result = yield connection
|
18
|
-
warn_old_tls_version_rubygems_connection(uri, connection)
|
19
|
-
result
|
20
|
-
end
|
21
|
-
end
|
22
|
-
|
23
|
-
def warn_old_tls_version_rubygems_connection(uri, connection)
|
24
|
-
return unless connection.http.use_ssl?
|
25
|
-
return unless (uri.host || "").end_with?("rubygems.org")
|
26
|
-
|
27
|
-
socket = connection.instance_variable_get(:@socket)
|
28
|
-
return unless socket
|
29
|
-
socket_io = socket.io
|
30
|
-
return unless socket_io.respond_to?(:ssl_version)
|
31
|
-
ssl_version = socket_io.ssl_version
|
32
|
-
|
33
|
-
case ssl_version
|
34
|
-
when /TLSv([\d\.]+)/
|
35
|
-
version = Gem::Version.new($1)
|
36
|
-
if version < Gem::Version.new("1.2")
|
37
|
-
Bundler.ui.warn \
|
38
|
-
"Warning: Your Ruby version is compiled against a copy of OpenSSL that is very old. " \
|
39
|
-
"Starting in January 2018, RubyGems.org will refuse connection requests from these " \
|
40
|
-
"very old versions of OpenSSL. If you will need to continue installing gems after " \
|
41
|
-
"January 2018, please follow this guide to upgrade: http://ruby.to/tls-outdated.",
|
42
|
-
:wrap => true
|
43
|
-
end
|
44
|
-
end
|
45
|
-
end
|
46
|
-
end
|
14
|
+
PersistentHTTP = Persistent::Net::HTTP::Persistent
|
47
15
|
end
|
@@ -1,9 +1,13 @@
|
|
1
1
|
# frozen_string_literal: false
|
2
2
|
|
3
3
|
module Bundler
|
4
|
-
VERSION = "2.
|
4
|
+
VERSION = "2.4.19".freeze
|
5
5
|
|
6
6
|
def self.bundler_major_version
|
7
7
|
@bundler_major_version ||= VERSION.split(".").first.to_i
|
8
8
|
end
|
9
|
+
|
10
|
+
def self.gem_version
|
11
|
+
@gem_version ||= Gem::Version.create(VERSION)
|
12
|
+
end
|
9
13
|
end
|
@@ -87,14 +87,12 @@ module Bundler
|
|
87
87
|
creation_errors = []
|
88
88
|
|
89
89
|
@threads = Array.new(@size) do |i|
|
90
|
-
|
91
|
-
|
92
|
-
thread.name = "#{name} Worker ##{i}" if thread.respond_to?(:name=)
|
93
|
-
end
|
94
|
-
rescue ThreadError => e
|
95
|
-
creation_errors << e
|
96
|
-
nil
|
90
|
+
Thread.start { process_queue(i) }.tap do |thread|
|
91
|
+
thread.name = "#{name} Worker ##{i}" if thread.respond_to?(:name=)
|
97
92
|
end
|
93
|
+
rescue ThreadError => e
|
94
|
+
creation_errors << e
|
95
|
+
nil
|
98
96
|
end.compact
|
99
97
|
|
100
98
|
add_interrupt_handler unless @threads.empty?
|
data/bundler/lib/bundler.rb
CHANGED
@@ -41,7 +41,6 @@ module Bundler
|
|
41
41
|
|
42
42
|
autoload :Definition, File.expand_path("bundler/definition", __dir__)
|
43
43
|
autoload :Dependency, File.expand_path("bundler/dependency", __dir__)
|
44
|
-
autoload :DepProxy, File.expand_path("bundler/dep_proxy", __dir__)
|
45
44
|
autoload :Deprecate, File.expand_path("bundler/deprecate", __dir__)
|
46
45
|
autoload :Digest, File.expand_path("bundler/digest", __dir__)
|
47
46
|
autoload :Dsl, File.expand_path("bundler/dsl", __dir__)
|
@@ -58,7 +57,7 @@ module Bundler
|
|
58
57
|
autoload :Installer, File.expand_path("bundler/installer", __dir__)
|
59
58
|
autoload :LazySpecification, File.expand_path("bundler/lazy_specification", __dir__)
|
60
59
|
autoload :LockfileParser, File.expand_path("bundler/lockfile_parser", __dir__)
|
61
|
-
autoload :
|
60
|
+
autoload :MatchRemoteMetadata, File.expand_path("bundler/match_remote_metadata", __dir__)
|
62
61
|
autoload :ProcessLock, File.expand_path("bundler/process_lock", __dir__)
|
63
62
|
autoload :RemoteSpecification, File.expand_path("bundler/remote_specification", __dir__)
|
64
63
|
autoload :Resolver, File.expand_path("bundler/resolver", __dir__)
|
@@ -76,11 +75,12 @@ module Bundler
|
|
76
75
|
autoload :StubSpecification, File.expand_path("bundler/stub_specification", __dir__)
|
77
76
|
autoload :UI, File.expand_path("bundler/ui", __dir__)
|
78
77
|
autoload :URICredentialsFilter, File.expand_path("bundler/uri_credentials_filter", __dir__)
|
79
|
-
autoload :
|
78
|
+
autoload :URINormalizer, File.expand_path("bundler/uri_normalizer", __dir__)
|
79
|
+
autoload :SafeMarshal, File.expand_path("bundler/safe_marshal", __dir__)
|
80
80
|
|
81
81
|
class << self
|
82
82
|
def configure
|
83
|
-
@
|
83
|
+
@configure ||= configure_gem_home_and_path
|
84
84
|
end
|
85
85
|
|
86
86
|
def ui
|
@@ -210,9 +210,10 @@ module Bundler
|
|
210
210
|
end
|
211
211
|
|
212
212
|
def frozen_bundle?
|
213
|
-
frozen = settings[:
|
214
|
-
frozen
|
215
|
-
|
213
|
+
frozen = settings[:frozen]
|
214
|
+
return frozen unless frozen.nil?
|
215
|
+
|
216
|
+
settings[:deployment]
|
216
217
|
end
|
217
218
|
|
218
219
|
def locked_gems
|
@@ -331,9 +332,9 @@ module Bundler
|
|
331
332
|
FileUtils.remove_entry_secure(path) if path && File.exist?(path)
|
332
333
|
rescue ArgumentError
|
333
334
|
message = <<EOF
|
334
|
-
It is a security vulnerability to allow your home directory to be world-writable, and bundler
|
335
|
+
It is a security vulnerability to allow your home directory to be world-writable, and bundler cannot continue.
|
335
336
|
You should probably consider fixing this issue by running `chmod o-w ~` on *nix.
|
336
|
-
Please refer to https://ruby-doc.org/stdlib-
|
337
|
+
Please refer to https://ruby-doc.org/stdlib-3.1.2/libdoc/fileutils/rdoc/FileUtils.html#method-c-remove_entry_secure for details.
|
337
338
|
EOF
|
338
339
|
File.world_writable?(path) ? Bundler.ui.warn(message) : raise
|
339
340
|
raise PathError, "Please fix the world-writable issue with your #{path} directory"
|
@@ -455,7 +456,7 @@ EOF
|
|
455
456
|
end
|
456
457
|
|
457
458
|
def local_platform
|
458
|
-
return Gem::Platform::RUBY if settings[:force_ruby_platform]
|
459
|
+
return Gem::Platform::RUBY if settings[:force_ruby_platform]
|
459
460
|
Gem::Platform.local
|
460
461
|
end
|
461
462
|
|
@@ -488,41 +489,9 @@ EOF
|
|
488
489
|
configured_bundle_path.use_system_gems?
|
489
490
|
end
|
490
491
|
|
491
|
-
def requires_sudo?
|
492
|
-
return @requires_sudo if defined?(@requires_sudo_ran)
|
493
|
-
|
494
|
-
sudo_present = which "sudo" if settings.allow_sudo?
|
495
|
-
|
496
|
-
if sudo_present
|
497
|
-
# the bundle path and subdirectories need to be writable for RubyGems
|
498
|
-
# to be able to unpack and install gems without exploding
|
499
|
-
path = bundle_path
|
500
|
-
path = path.parent until path.exist?
|
501
|
-
|
502
|
-
# bins are written to a different location on OS X
|
503
|
-
bin_dir = Pathname.new(Bundler.system_bindir)
|
504
|
-
bin_dir = bin_dir.parent until bin_dir.exist?
|
505
|
-
|
506
|
-
# if any directory is not writable, we need sudo
|
507
|
-
files = [path, bin_dir] | Dir[bundle_path.join("build_info/*").to_s] | Dir[bundle_path.join("*").to_s]
|
508
|
-
unwritable_files = files.reject {|f| File.writable?(f) }
|
509
|
-
sudo_needed = !unwritable_files.empty?
|
510
|
-
if sudo_needed
|
511
|
-
Bundler.ui.warn "Following files may not be writable, so sudo is needed:\n #{unwritable_files.map(&:to_s).sort.join("\n ")}"
|
512
|
-
end
|
513
|
-
end
|
514
|
-
|
515
|
-
@requires_sudo_ran = true
|
516
|
-
@requires_sudo = settings.allow_sudo? && sudo_present && sudo_needed
|
517
|
-
end
|
518
|
-
|
519
492
|
def mkdir_p(path, options = {})
|
520
|
-
|
521
|
-
|
522
|
-
else
|
523
|
-
SharedHelpers.filesystem_access(path, :write) do |p|
|
524
|
-
FileUtils.mkdir_p(p)
|
525
|
-
end
|
493
|
+
SharedHelpers.filesystem_access(path, :write) do |p|
|
494
|
+
FileUtils.mkdir_p(p)
|
526
495
|
end
|
527
496
|
end
|
528
497
|
|
@@ -530,7 +499,7 @@ EOF
|
|
530
499
|
if File.file?(executable) && File.executable?(executable)
|
531
500
|
executable
|
532
501
|
elsif paths = ENV["PATH"]
|
533
|
-
quote = '"'
|
502
|
+
quote = '"'
|
534
503
|
paths.split(File::PATH_SEPARATOR).find do |path|
|
535
504
|
path = path[1..-2] if path.start_with?(quote) && path.end_with?(quote)
|
536
505
|
executable_path = File.expand_path(executable, path)
|
@@ -539,41 +508,14 @@ EOF
|
|
539
508
|
end
|
540
509
|
end
|
541
510
|
|
542
|
-
def sudo(str)
|
543
|
-
SUDO_MUTEX.synchronize do
|
544
|
-
prompt = "\n\n" + <<-PROMPT.gsub(/^ {6}/, "").strip + " "
|
545
|
-
Your user account isn't allowed to install to the system RubyGems.
|
546
|
-
You can cancel this installation and run:
|
547
|
-
|
548
|
-
bundle config set --local path 'vendor/bundle'
|
549
|
-
bundle install
|
550
|
-
|
551
|
-
to install the gems into ./vendor/bundle/, or you can enter your password
|
552
|
-
and install the bundled gems to RubyGems using sudo.
|
553
|
-
|
554
|
-
Password:
|
555
|
-
PROMPT
|
556
|
-
|
557
|
-
unless @prompted_for_sudo ||= system(%(sudo -k -p "#{prompt}" true))
|
558
|
-
raise SudoNotPermittedError,
|
559
|
-
"Bundler requires sudo access to install at the moment. " \
|
560
|
-
"Try installing again, granting Bundler sudo access when prompted, or installing into a different path."
|
561
|
-
end
|
562
|
-
|
563
|
-
`sudo -p "#{prompt}" #{str}`
|
564
|
-
end
|
565
|
-
end
|
566
|
-
|
567
511
|
def read_file(file)
|
568
512
|
SharedHelpers.filesystem_access(file, :read) do
|
569
513
|
File.open(file, "r:UTF-8", &:read)
|
570
514
|
end
|
571
515
|
end
|
572
516
|
|
573
|
-
def
|
574
|
-
|
575
|
-
rescue TypeError => e
|
576
|
-
raise MarshalError, "#{e.class}: #{e.message}"
|
517
|
+
def safe_load_marshal(data)
|
518
|
+
load_marshal(data, :marshal_proc => SafeMarshal.proc)
|
577
519
|
end
|
578
520
|
|
579
521
|
def load_gemspec(file, validate = false)
|
@@ -582,7 +524,7 @@ EOF
|
|
582
524
|
@gemspec_cache[key] ||= load_gemspec_uncached(file, validate)
|
583
525
|
# Protect against caching side-effected gemspecs by returning a
|
584
526
|
# new instance each time.
|
585
|
-
@gemspec_cache[key]
|
527
|
+
@gemspec_cache[key]&.dup
|
586
528
|
end
|
587
529
|
|
588
530
|
def load_gemspec_uncached(file, validate = false)
|
@@ -609,7 +551,7 @@ EOF
|
|
609
551
|
|
610
552
|
def git_present?
|
611
553
|
return @git_present if defined?(@git_present)
|
612
|
-
@git_present = Bundler.which("git"
|
554
|
+
@git_present = Bundler.which("git#{RbConfig::CONFIG["EXEEXT"]}")
|
613
555
|
end
|
614
556
|
|
615
557
|
def feature_flag
|
@@ -631,7 +573,7 @@ EOF
|
|
631
573
|
@bin_path = nil
|
632
574
|
@bundler_major_version = nil
|
633
575
|
@bundle_path = nil
|
634
|
-
@
|
576
|
+
@configure = nil
|
635
577
|
@configured_bundle_path = nil
|
636
578
|
@definition = nil
|
637
579
|
@load = nil
|
@@ -664,6 +606,12 @@ EOF
|
|
664
606
|
|
665
607
|
private
|
666
608
|
|
609
|
+
def load_marshal(data, marshal_proc: nil)
|
610
|
+
Marshal.load(data, marshal_proc)
|
611
|
+
rescue TypeError => e
|
612
|
+
raise MarshalError, "#{e.class}: #{e.message}"
|
613
|
+
end
|
614
|
+
|
667
615
|
def eval_yaml_gemspec(path, contents)
|
668
616
|
Kernel.require "psych"
|
669
617
|
|
data/{bin → exe}/gem
RENAMED
@@ -1,13 +1,12 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
2
4
|
#--
|
3
5
|
# Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others.
|
4
6
|
# All rights reserved.
|
5
7
|
# See LICENSE.txt for permissions.
|
6
8
|
#++
|
7
9
|
|
8
|
-
require
|
9
|
-
require 'rubygems/gem_runner'
|
10
|
-
|
11
|
-
args = ARGV.clone
|
10
|
+
require "rubygems/gem_runner"
|
12
11
|
|
13
|
-
Gem::GemRunner.new.run
|
12
|
+
Gem::GemRunner.new.run ARGV.clone
|
data/{bin → exe}/update_rubygems
RENAMED
@@ -1,26 +1,28 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
2
4
|
#--
|
3
5
|
# Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others.
|
4
6
|
# All rights reserved.
|
5
7
|
# See LICENSE.txt for permissions.
|
6
8
|
#++
|
7
9
|
|
8
|
-
require
|
10
|
+
require "rubygems"
|
9
11
|
|
10
|
-
if ARGV.include?
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
12
|
+
if ARGV.include?("-h") || ARGV.include?("--help")
|
13
|
+
warn "rubygems_update [options]"
|
14
|
+
warn ""
|
15
|
+
warn "This will install the latest version of RubyGems."
|
16
|
+
warn ""
|
17
|
+
warn "\t--version=X.Y\tUpdate RubyGems from the X.Y version."
|
16
18
|
exit
|
17
19
|
end
|
18
20
|
|
19
21
|
unless ARGV.grep(/--version=([\d\.]*)/).empty?
|
20
|
-
exec Gem.ruby,
|
22
|
+
exec Gem.ruby, "-S", $PROGRAM_NAME, "_#{$1}_"
|
21
23
|
end
|
22
24
|
|
23
|
-
update_dir = $LOAD_PATH.find {|dir| dir
|
25
|
+
update_dir = $LOAD_PATH.find {|dir| dir.include?("rubygems-update") }
|
24
26
|
|
25
27
|
if update_dir.nil?
|
26
28
|
puts "Error: Cannot find RubyGems update path!"
|
@@ -32,5 +34,5 @@ else
|
|
32
34
|
update_dir = File.dirname(update_dir)
|
33
35
|
Dir.chdir update_dir
|
34
36
|
ENV["GEM_PREV_VER"] = Gem::VERSION
|
35
|
-
abort unless system(Gem.ruby,
|
37
|
+
abort unless system(Gem.ruby, "setup.rb", *ARGV)
|
36
38
|
end
|
@@ -1,4 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
class Gem::AvailableSet
|
3
4
|
include Enumerable
|
4
5
|
|
@@ -26,7 +27,7 @@ class Gem::AvailableSet
|
|
26
27
|
s = o.set
|
27
28
|
when Array
|
28
29
|
s = o.map do |sp,so|
|
29
|
-
if !sp.kind_of?(Gem::Specification)
|
30
|
+
if !sp.kind_of?(Gem::Specification) || !so.kind_of?(Gem::Source)
|
30
31
|
raise TypeError, "Array must be in [[spec, source], ...] form"
|
31
32
|
end
|
32
33
|
|
@@ -149,8 +150,8 @@ class Gem::AvailableSet
|
|
149
150
|
@set.reject! do |t|
|
150
151
|
# already locally installed
|
151
152
|
Gem::Specification.any? do |installed_spec|
|
152
|
-
dep.name == installed_spec.name
|
153
|
-
dep.requirement.satisfied_by?
|
153
|
+
dep.name == installed_spec.name &&
|
154
|
+
dep.requirement.satisfied_by?(installed_spec.version)
|
154
155
|
end
|
155
156
|
end
|
156
157
|
|
@@ -1,4 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
##
|
3
4
|
# BasicSpecification is an abstract class which implements some common code
|
4
5
|
# used by both Specification and StubSpecification.
|
@@ -47,7 +48,7 @@ class Gem::BasicSpecification
|
|
47
48
|
# directory.
|
48
49
|
|
49
50
|
def gem_build_complete_path # :nodoc:
|
50
|
-
File.join extension_dir,
|
51
|
+
File.join extension_dir, "gem.build_complete"
|
51
52
|
end
|
52
53
|
|
53
54
|
##
|
@@ -77,7 +78,7 @@ class Gem::BasicSpecification
|
|
77
78
|
|
78
79
|
if Gem::Platform::RUBY == platform || Gem::Platform.local === platform
|
79
80
|
warn "Ignoring #{full_name} because its extensions are not built. " +
|
80
|
-
|
81
|
+
"Try: gem pristine #{name} --version #{version}"
|
81
82
|
end
|
82
83
|
|
83
84
|
return false
|
@@ -103,7 +104,7 @@ class Gem::BasicSpecification
|
|
103
104
|
|
104
105
|
def extensions_dir
|
105
106
|
Gem.default_ext_dir_for(base_dir) ||
|
106
|
-
File.join(base_dir,
|
107
|
+
File.join(base_dir, "extensions", Gem::Platform.local.to_s,
|
107
108
|
Gem.extension_api_version)
|
108
109
|
end
|
109
110
|
|
@@ -131,7 +132,7 @@ class Gem::BasicSpecification
|
|
131
132
|
# default Ruby platform.
|
132
133
|
|
133
134
|
def full_name
|
134
|
-
if platform == Gem::Platform::RUBY
|
135
|
+
if platform == Gem::Platform::RUBY || platform.nil?
|
135
136
|
"#{name}-#{version}".dup.tap(&Gem::UNTAINT)
|
136
137
|
else
|
137
138
|
"#{name}-#{version}-#{platform}".dup.tap(&Gem::UNTAINT)
|
@@ -21,7 +21,7 @@ module Gem::BundlerVersionFinder
|
|
21
21
|
end
|
22
22
|
|
23
23
|
def self.bundle_update_bundler_version
|
24
|
-
return unless File.basename($0) == "bundle"
|
24
|
+
return unless File.basename($0) == "bundle"
|
25
25
|
return unless "update".start_with?(ARGV.first || " ")
|
26
26
|
bundler_version = nil
|
27
27
|
update_index = nil
|
@@ -47,7 +47,7 @@ module Gem::BundlerVersionFinder
|
|
47
47
|
|
48
48
|
def self.lockfile_contents
|
49
49
|
gemfile = ENV["BUNDLE_GEMFILE"]
|
50
|
-
gemfile = nil if gemfile
|
50
|
+
gemfile = nil if gemfile&.empty?
|
51
51
|
|
52
52
|
unless gemfile
|
53
53
|
begin
|
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
|
-
require_relative
|
9
|
-
require_relative
|
10
|
-
require_relative
|
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
|
@@ -76,7 +77,7 @@ class Gem::Command
|
|
76
77
|
when Array
|
77
78
|
@extra_args = value
|
78
79
|
when String
|
79
|
-
@extra_args = value.split(
|
80
|
+
@extra_args = value.split(" ")
|
80
81
|
end
|
81
82
|
end
|
82
83
|
|
@@ -159,11 +160,11 @@ class Gem::Command
|
|
159
160
|
gem = "'#{gem_name}' (#{version})"
|
160
161
|
msg = String.new "Could not find a valid gem #{gem}"
|
161
162
|
|
162
|
-
if errors
|
163
|
+
if errors && !errors.empty?
|
163
164
|
msg << ", here is why:\n"
|
164
165
|
errors.each {|x| msg << " #{x.wordy}\n" }
|
165
166
|
else
|
166
|
-
if required_by
|
167
|
+
if required_by && gem != required_by
|
167
168
|
msg << " (required by #{required_by}) in any repository"
|
168
169
|
else
|
169
170
|
msg << " in any repository"
|
@@ -186,7 +187,7 @@ class Gem::Command
|
|
186
187
|
def get_all_gem_names
|
187
188
|
args = options[:args]
|
188
189
|
|
189
|
-
if args.nil?
|
190
|
+
if args.nil? || args.empty?
|
190
191
|
raise Gem::CommandLineError,
|
191
192
|
"Please specify at least one gem name (e.g. gem build GEMNAME)"
|
192
193
|
end
|
@@ -201,11 +202,15 @@ class Gem::Command
|
|
201
202
|
# respectively.
|
202
203
|
def get_all_gem_names_and_versions
|
203
204
|
get_all_gem_names.map do |name|
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
|
208
|
-
|
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]
|
209
214
|
end
|
210
215
|
end
|
211
216
|
|
@@ -216,7 +221,7 @@ class Gem::Command
|
|
216
221
|
def get_one_gem_name
|
217
222
|
args = options[:args]
|
218
223
|
|
219
|
-
if args.nil?
|
224
|
+
if args.nil? || args.empty?
|
220
225
|
raise Gem::CommandLineError,
|
221
226
|
"Please specify a gem name on the command line (e.g. gem build GEMNAME)"
|
222
227
|
end
|
@@ -554,9 +559,9 @@ class Gem::Command
|
|
554
559
|
end
|
555
560
|
|
556
561
|
def configure_options(header, option_list)
|
557
|
-
return if option_list.nil?
|
562
|
+
return if option_list.nil? || option_list.empty?
|
558
563
|
|
559
|
-
header = header.to_s.empty? ?
|
564
|
+
header = header.to_s.empty? ? "" : "#{header} "
|
560
565
|
@parser.separator " #{header}Options:"
|
561
566
|
|
562
567
|
option_list.each do |args, handler|
|
@@ -565,7 +570,7 @@ class Gem::Command
|
|
565
570
|
end
|
566
571
|
end
|
567
572
|
|
568
|
-
@parser.separator
|
573
|
+
@parser.separator ""
|
569
574
|
end
|
570
575
|
|
571
576
|
##
|
@@ -578,22 +583,22 @@ class Gem::Command
|
|
578
583
|
# ----------------------------------------------------------------
|
579
584
|
# Add the options common to all commands.
|
580
585
|
|
581
|
-
add_common_option(
|
582
|
-
|
586
|
+
add_common_option("-h", "--help",
|
587
|
+
"Get help on this command") do |value, options|
|
583
588
|
options[:help] = true
|
584
589
|
end
|
585
590
|
|
586
|
-
add_common_option(
|
587
|
-
|
591
|
+
add_common_option("-V", "--[no-]verbose",
|
592
|
+
"Set the verbose level of output") do |value, options|
|
588
593
|
# Set us to "really verbose" so the progress meter works
|
589
|
-
if Gem.configuration.verbose
|
594
|
+
if Gem.configuration.verbose && value
|
590
595
|
Gem.configuration.verbose = 1
|
591
596
|
else
|
592
597
|
Gem.configuration.verbose = value
|
593
598
|
end
|
594
599
|
end
|
595
600
|
|
596
|
-
add_common_option(
|
601
|
+
add_common_option("-q", "--quiet", "Silence command progress meter") do |value, options|
|
597
602
|
Gem.configuration.verbose = false
|
598
603
|
end
|
599
604
|
|
@@ -606,31 +611,35 @@ class Gem::Command
|
|
606
611
|
# commands. Both options are actually handled before the other
|
607
612
|
# options get parsed.
|
608
613
|
|
609
|
-
add_common_option(
|
610
|
-
|
614
|
+
add_common_option("--config-file FILE",
|
615
|
+
"Use this config file instead of default") do
|
611
616
|
end
|
612
617
|
|
613
|
-
add_common_option(
|
614
|
-
|
618
|
+
add_common_option("--backtrace",
|
619
|
+
"Show stack backtrace on errors") do
|
615
620
|
end
|
616
621
|
|
617
|
-
add_common_option(
|
618
|
-
|
622
|
+
add_common_option("--debug",
|
623
|
+
"Turn on Ruby debugging") do
|
619
624
|
end
|
620
625
|
|
621
|
-
add_common_option(
|
622
|
-
|
626
|
+
add_common_option("--norc",
|
627
|
+
"Avoid loading any .gemrc file") do
|
623
628
|
end
|
624
629
|
|
625
630
|
# :stopdoc:
|
626
631
|
|
627
|
-
HELP = <<-HELP
|
632
|
+
HELP = <<-HELP
|
628
633
|
RubyGems is a package manager for Ruby.
|
629
634
|
|
630
635
|
Usage:
|
631
636
|
gem -h/--help
|
632
637
|
gem -v/--version
|
633
|
-
gem command [arguments...] [options...]
|
638
|
+
gem [global options...] command [arguments...] [options...]
|
639
|
+
|
640
|
+
Global options:
|
641
|
+
-C PATH run as if gem was started in <PATH>
|
642
|
+
instead of the current working directory
|
634
643
|
|
635
644
|
Examples:
|
636
645
|
gem install rake
|