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
data/lib/rubygems/config_file.rb
CHANGED
@@ -1,12 +1,13 @@
|
|
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
|
9
|
+
require_relative "user_interaction"
|
10
|
+
require "rbconfig"
|
10
11
|
|
11
12
|
##
|
12
13
|
# Gem::ConfigFile RubyGems options and gem command options from gemrc.
|
@@ -39,7 +40,7 @@ require 'rbconfig'
|
|
39
40
|
class Gem::ConfigFile
|
40
41
|
include Gem::UserInteraction
|
41
42
|
|
42
|
-
DEFAULT_BACKTRACE =
|
43
|
+
DEFAULT_BACKTRACE = true
|
43
44
|
DEFAULT_BULK_THRESHOLD = 1000
|
44
45
|
DEFAULT_VERBOSITY = true
|
45
46
|
DEFAULT_UPDATE_SOURCES = true
|
@@ -71,7 +72,7 @@ class Gem::ConfigFile
|
|
71
72
|
|
72
73
|
# :startdoc:
|
73
74
|
|
74
|
-
SYSTEM_WIDE_CONFIG_FILE = File.join SYSTEM_CONFIG_PATH,
|
75
|
+
SYSTEM_WIDE_CONFIG_FILE = File.join SYSTEM_CONFIG_PATH, "gemrc"
|
75
76
|
|
76
77
|
##
|
77
78
|
# List of arguments supplied to the config file object.
|
@@ -182,20 +183,20 @@ class Gem::ConfigFile
|
|
182
183
|
@update_sources = DEFAULT_UPDATE_SOURCES
|
183
184
|
@concurrent_downloads = DEFAULT_CONCURRENT_DOWNLOADS
|
184
185
|
@cert_expiration_length_days = DEFAULT_CERT_EXPIRATION_LENGTH_DAYS
|
185
|
-
@ipv4_fallback_enabled = ENV[
|
186
|
+
@ipv4_fallback_enabled = ENV["IPV4_FALLBACK_ENABLED"] == "true" || DEFAULT_IPV4_FALLBACK_ENABLED
|
186
187
|
|
187
188
|
operating_system_config = Marshal.load Marshal.dump(OPERATING_SYSTEM_DEFAULTS)
|
188
189
|
platform_config = Marshal.load Marshal.dump(PLATFORM_DEFAULTS)
|
189
190
|
system_config = load_file SYSTEM_WIDE_CONFIG_FILE
|
190
191
|
user_config = load_file config_file_name.dup.tap(&Gem::UNTAINT)
|
191
192
|
|
192
|
-
environment_config = (ENV[
|
193
|
+
environment_config = (ENV["GEMRC"] || "")
|
193
194
|
.split(File::PATH_SEPARATOR).inject({}) do |result, file|
|
194
195
|
result.merge load_file file
|
195
196
|
end
|
196
197
|
|
197
198
|
@hash = operating_system_config.merge platform_config
|
198
|
-
unless args.index
|
199
|
+
unless args.index "--norc"
|
199
200
|
@hash = @hash.merge system_config
|
200
201
|
@hash = @hash.merge user_config
|
201
202
|
@hash = @hash.merge environment_config
|
@@ -269,7 +270,7 @@ if you believe they were disclosed to a third party.
|
|
269
270
|
# Location of RubyGems.org credentials
|
270
271
|
|
271
272
|
def credentials_path
|
272
|
-
credentials = File.join Gem.user_home,
|
273
|
+
credentials = File.join Gem.user_home, ".gem", "credentials"
|
273
274
|
if File.exist? credentials
|
274
275
|
credentials
|
275
276
|
else
|
@@ -320,13 +321,13 @@ if you believe they were disclosed to a third party.
|
|
320
321
|
config = load_file(credentials_path).merge(host => api_key)
|
321
322
|
|
322
323
|
dirname = File.dirname credentials_path
|
323
|
-
require
|
324
|
+
require "fileutils"
|
324
325
|
FileUtils.mkdir_p(dirname)
|
325
326
|
|
326
327
|
Gem.load_yaml
|
327
328
|
|
328
329
|
permissions = 0600 & (~File.umask)
|
329
|
-
File.open(credentials_path,
|
330
|
+
File.open(credentials_path, "w", permissions) do |f|
|
330
331
|
f.write config.to_yaml
|
331
332
|
end
|
332
333
|
|
@@ -368,7 +369,21 @@ if you believe they were disclosed to a third party.
|
|
368
369
|
|
369
370
|
# True if the backtrace option has been specified, or debug is on.
|
370
371
|
def backtrace
|
371
|
-
@backtrace
|
372
|
+
@backtrace || $DEBUG
|
373
|
+
end
|
374
|
+
|
375
|
+
# Check state file is writable. Creates empty file if not present to ensure we can write to it.
|
376
|
+
def state_file_writable?
|
377
|
+
if File.exist?(state_file_name)
|
378
|
+
File.writable?(state_file_name)
|
379
|
+
else
|
380
|
+
require "fileutils"
|
381
|
+
FileUtils.mkdir_p File.dirname(state_file_name)
|
382
|
+
File.open(state_file_name, "w") {}
|
383
|
+
true
|
384
|
+
end
|
385
|
+
rescue Errno::EACCES
|
386
|
+
false
|
372
387
|
end
|
373
388
|
|
374
389
|
# The name of the configuration file.
|
@@ -376,6 +391,25 @@ if you believe they were disclosed to a third party.
|
|
376
391
|
@config_file_name || Gem.config_file
|
377
392
|
end
|
378
393
|
|
394
|
+
# The name of the state file.
|
395
|
+
def state_file_name
|
396
|
+
Gem.state_file
|
397
|
+
end
|
398
|
+
|
399
|
+
# Reads time of last update check from state file
|
400
|
+
def last_update_check
|
401
|
+
if File.readable?(state_file_name)
|
402
|
+
File.read(state_file_name).to_i
|
403
|
+
else
|
404
|
+
0
|
405
|
+
end
|
406
|
+
end
|
407
|
+
|
408
|
+
# Writes time of last update check to state file
|
409
|
+
def last_update_check=(timestamp)
|
410
|
+
File.write(state_file_name, timestamp.to_s) if state_file_writable?
|
411
|
+
end
|
412
|
+
|
379
413
|
# Delegates to @hash
|
380
414
|
def each(&block)
|
381
415
|
hash = @hash.dup
|
@@ -389,7 +423,7 @@ if you believe they were disclosed to a third party.
|
|
389
423
|
yield :backtrace, @backtrace
|
390
424
|
yield :bulk_threshold, @bulk_threshold
|
391
425
|
|
392
|
-
yield
|
426
|
+
yield "config_file_name", @config_file_name if @config_file_name
|
393
427
|
|
394
428
|
hash.each(&block)
|
395
429
|
end
|
@@ -405,7 +439,7 @@ if you believe they were disclosed to a third party.
|
|
405
439
|
when /^--debug$/ then
|
406
440
|
$DEBUG = true
|
407
441
|
|
408
|
-
warn
|
442
|
+
warn "NOTE: Debugging mode prints all exceptions even when rescued"
|
409
443
|
else
|
410
444
|
@args << arg
|
411
445
|
end
|
@@ -444,7 +478,7 @@ if you believe they were disclosed to a third party.
|
|
444
478
|
@hash[:ssl_client_cert] if @hash.key? :ssl_client_cert
|
445
479
|
|
446
480
|
keys = yaml_hash.keys.map {|key| key.to_s }
|
447
|
-
keys <<
|
481
|
+
keys << "debug"
|
448
482
|
re = Regexp.union(*keys)
|
449
483
|
|
450
484
|
@hash.each do |key, value|
|
@@ -458,10 +492,10 @@ if you believe they were disclosed to a third party.
|
|
458
492
|
|
459
493
|
# Writes out this config file, replacing its source.
|
460
494
|
def write
|
461
|
-
require
|
495
|
+
require "fileutils"
|
462
496
|
FileUtils.mkdir_p File.dirname(config_file_name)
|
463
497
|
|
464
|
-
File.open config_file_name,
|
498
|
+
File.open config_file_name, "w" do |io|
|
465
499
|
io.write to_yaml
|
466
500
|
end
|
467
501
|
end
|
@@ -477,11 +511,11 @@ if you believe they were disclosed to a third party.
|
|
477
511
|
end
|
478
512
|
|
479
513
|
def ==(other) # :nodoc:
|
480
|
-
self.class === other
|
481
|
-
@backtrace == other.backtrace
|
482
|
-
@bulk_threshold == other.bulk_threshold
|
483
|
-
@verbose == other.verbose
|
484
|
-
@update_sources == other.update_sources
|
514
|
+
self.class === other &&
|
515
|
+
@backtrace == other.backtrace &&
|
516
|
+
@bulk_threshold == other.bulk_threshold &&
|
517
|
+
@verbose == other.verbose &&
|
518
|
+
@update_sources == other.update_sources &&
|
485
519
|
@hash == other.hash
|
486
520
|
end
|
487
521
|
|
@@ -1,9 +1,4 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
-
##
|
3
|
-
# RubyGems adds the #gem method to allow activation of specific gem versions
|
4
|
-
# and overrides the #require method on Kernel to make gems appear as if they
|
5
|
-
# live on the <code>$LOAD_PATH</code>. See the documentation of these methods
|
6
|
-
# for further detail.
|
7
2
|
|
8
3
|
module Kernel
|
9
4
|
|
@@ -39,7 +34,7 @@ module Kernel
|
|
39
34
|
# GEM_SKIP=libA:libB ruby -I../libA -I../libB ./mycode.rb
|
40
35
|
|
41
36
|
def gem(gem_name, *requirements) # :doc:
|
42
|
-
skip_list = (ENV[
|
37
|
+
skip_list = (ENV["GEM_SKIP"] || "").split(/:/)
|
43
38
|
raise Gem::LoadError, "skipping #{gem_name}" if skip_list.include? gem_name
|
44
39
|
|
45
40
|
if gem_name.kind_of? Gem::Dependency
|
@@ -1,11 +1,12 @@
|
|
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
|
9
|
+
require "monitor"
|
9
10
|
|
10
11
|
module Kernel
|
11
12
|
|
@@ -13,12 +14,12 @@ module Kernel
|
|
13
14
|
|
14
15
|
# Make sure we have a reference to Ruby's original Kernel#require
|
15
16
|
unless defined?(gem_original_require)
|
17
|
+
# :stopdoc:
|
16
18
|
alias gem_original_require require
|
17
19
|
private :gem_original_require
|
20
|
+
# :startdoc:
|
18
21
|
end
|
19
22
|
|
20
|
-
file = Gem::KERNEL_WARN_IGNORES_INTERNAL_ENTRIES ? "<internal:#{__FILE__}>" : __FILE__
|
21
|
-
module_eval <<'RUBY', file, __LINE__ + 1 # rubocop:disable Style/EvalWithLocation
|
22
23
|
##
|
23
24
|
# When RubyGems is required, Kernel#require is replaced with our own which
|
24
25
|
# is capable of loading gems on demand.
|
@@ -33,142 +34,135 @@ module Kernel
|
|
33
34
|
# The normal <tt>require</tt> functionality of returning false if
|
34
35
|
# that file has already been loaded is preserved.
|
35
36
|
|
36
|
-
def require(path)
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
37
|
+
def require(path) # :doc:
|
38
|
+
return gem_original_require(path) unless Gem.discover_gems_on_require
|
39
|
+
|
40
|
+
begin
|
41
|
+
RUBYGEMS_ACTIVATION_MONITOR.enter
|
42
|
+
|
43
|
+
path = path.to_path if path.respond_to? :to_path
|
44
|
+
|
45
|
+
if spec = Gem.find_unresolved_default_spec(path)
|
46
|
+
# Ensure -I beats a default gem
|
47
|
+
resolved_path = begin
|
48
|
+
rp = nil
|
49
|
+
load_path_check_index = Gem.load_path_insert_index - Gem.activated_gem_paths
|
50
|
+
Gem.suffixes.each do |s|
|
51
|
+
$LOAD_PATH[0...load_path_check_index].each do |lp|
|
52
|
+
safe_lp = lp.dup.tap(&Gem::UNTAINT)
|
53
|
+
begin
|
54
|
+
if File.symlink? safe_lp # for backward compatibility
|
55
|
+
next
|
56
|
+
end
|
57
|
+
rescue SecurityError
|
58
|
+
RUBYGEMS_ACTIVATION_MONITOR.exit
|
59
|
+
raise
|
55
60
|
end
|
56
|
-
rescue SecurityError
|
57
|
-
RUBYGEMS_ACTIVATION_MONITOR.exit
|
58
|
-
raise
|
59
|
-
end
|
60
61
|
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
62
|
+
full_path = File.expand_path(File.join(safe_lp, "#{path}#{s}"))
|
63
|
+
if File.file?(full_path)
|
64
|
+
rp = full_path
|
65
|
+
break
|
66
|
+
end
|
65
67
|
end
|
68
|
+
break if rp
|
66
69
|
end
|
67
|
-
|
70
|
+
rp
|
68
71
|
end
|
69
|
-
rp
|
70
|
-
end
|
71
|
-
|
72
|
-
begin
|
73
|
-
Kernel.send(:gem, spec.name, Gem::Requirement.default_prerelease)
|
74
|
-
rescue Exception
|
75
|
-
RUBYGEMS_ACTIVATION_MONITOR.exit
|
76
|
-
raise
|
77
|
-
end unless resolved_path
|
78
|
-
end
|
79
|
-
|
80
|
-
# If there are no unresolved deps, then we can use just try
|
81
|
-
# normal require handle loading a gem from the rescue below.
|
82
|
-
|
83
|
-
if Gem::Specification.unresolved_deps.empty?
|
84
|
-
RUBYGEMS_ACTIVATION_MONITOR.exit
|
85
|
-
return gem_original_require(path)
|
86
|
-
end
|
87
|
-
|
88
|
-
# If +path+ is for a gem that has already been loaded, don't
|
89
|
-
# bother trying to find it in an unresolved gem, just go straight
|
90
|
-
# to normal require.
|
91
|
-
#--
|
92
|
-
# TODO request access to the C implementation of this to speed up RubyGems
|
93
|
-
|
94
|
-
if Gem::Specification.find_active_stub_by_path(path)
|
95
|
-
RUBYGEMS_ACTIVATION_MONITOR.exit
|
96
|
-
return gem_original_require(path)
|
97
|
-
end
|
98
72
|
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
# For example, given:
|
106
|
-
#
|
107
|
-
# a => b => c => d
|
108
|
-
#
|
109
|
-
# If a and b are currently active with c being unresolved and d.rb is
|
110
|
-
# requested, then find_in_unresolved_tree will find d.rb in d because
|
111
|
-
# it's a dependency of c.
|
112
|
-
#
|
113
|
-
if found_specs.empty?
|
114
|
-
found_specs = Gem::Specification.find_in_unresolved_tree path
|
115
|
-
|
116
|
-
found_specs.each do |found_spec|
|
117
|
-
found_spec.activate
|
73
|
+
begin
|
74
|
+
Kernel.send(:gem, spec.name, Gem::Requirement.default_prerelease)
|
75
|
+
rescue Exception
|
76
|
+
RUBYGEMS_ACTIVATION_MONITOR.exit
|
77
|
+
raise
|
78
|
+
end unless resolved_path
|
118
79
|
end
|
119
80
|
|
120
|
-
|
121
|
-
|
122
|
-
else
|
123
|
-
|
124
|
-
# Check that all the found specs are just different
|
125
|
-
# versions of the same gem
|
126
|
-
names = found_specs.map(&:name).uniq
|
81
|
+
# If there are no unresolved deps, then we can use just try
|
82
|
+
# normal require handle loading a gem from the rescue below.
|
127
83
|
|
128
|
-
if
|
84
|
+
if Gem::Specification.unresolved_deps.empty?
|
129
85
|
RUBYGEMS_ACTIVATION_MONITOR.exit
|
130
|
-
|
86
|
+
return gem_original_require(path)
|
131
87
|
end
|
132
88
|
|
133
|
-
#
|
134
|
-
#
|
135
|
-
|
89
|
+
# If +path+ is for a gem that has already been loaded, don't
|
90
|
+
# bother trying to find it in an unresolved gem, just go straight
|
91
|
+
# to normal require.
|
92
|
+
#--
|
93
|
+
# TODO request access to the C implementation of this to speed up RubyGems
|
136
94
|
|
137
|
-
|
138
|
-
le = Gem::LoadError.new "unable to find a version of '#{names.first}' to activate"
|
139
|
-
le.name = names.first
|
95
|
+
if Gem::Specification.find_active_stub_by_path(path)
|
140
96
|
RUBYGEMS_ACTIVATION_MONITOR.exit
|
141
|
-
|
97
|
+
return gem_original_require(path)
|
142
98
|
end
|
143
99
|
|
144
|
-
|
145
|
-
|
100
|
+
# Attempt to find +path+ in any unresolved gems...
|
101
|
+
|
102
|
+
found_specs = Gem::Specification.find_in_unresolved path
|
103
|
+
|
104
|
+
# If there are no directly unresolved gems, then try and find +path+
|
105
|
+
# in any gems that are available via the currently unresolved gems.
|
106
|
+
# For example, given:
|
107
|
+
#
|
108
|
+
# a => b => c => d
|
109
|
+
#
|
110
|
+
# If a and b are currently active with c being unresolved and d.rb is
|
111
|
+
# requested, then find_in_unresolved_tree will find d.rb in d because
|
112
|
+
# it's a dependency of c.
|
113
|
+
#
|
114
|
+
if found_specs.empty?
|
115
|
+
found_specs = Gem::Specification.find_in_unresolved_tree path
|
116
|
+
|
117
|
+
found_specs.each do |found_spec|
|
118
|
+
found_spec.activate
|
119
|
+
end
|
146
120
|
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
RUBYGEMS_ACTIVATION_MONITOR.enter
|
121
|
+
# We found +path+ directly in an unresolved gem. Now we figure out, of
|
122
|
+
# the possible found specs, which one we should activate.
|
123
|
+
else
|
151
124
|
|
152
|
-
|
153
|
-
|
154
|
-
|
125
|
+
# Check that all the found specs are just different
|
126
|
+
# versions of the same gem
|
127
|
+
names = found_specs.map(&:name).uniq
|
128
|
+
|
129
|
+
if names.size > 1
|
130
|
+
RUBYGEMS_ACTIVATION_MONITOR.exit
|
131
|
+
raise Gem::LoadError, "#{path} found in multiple gems: #{names.join ', '}"
|
132
|
+
end
|
133
|
+
|
134
|
+
# Ok, now find a gem that has no conflicts, starting
|
135
|
+
# at the highest version.
|
136
|
+
valid = found_specs.find {|s| !s.has_conflicts? }
|
137
|
+
|
138
|
+
unless valid
|
139
|
+
le = Gem::LoadError.new "unable to find a version of '#{names.first}' to activate"
|
140
|
+
le.name = names.first
|
141
|
+
RUBYGEMS_ACTIVATION_MONITOR.exit
|
142
|
+
raise le
|
143
|
+
end
|
144
|
+
|
145
|
+
valid.activate
|
155
146
|
end
|
156
|
-
ensure
|
157
|
-
RUBYGEMS_ACTIVATION_MONITOR.exit
|
158
|
-
end
|
159
147
|
|
160
|
-
|
148
|
+
RUBYGEMS_ACTIVATION_MONITOR.exit
|
149
|
+
return gem_original_require(path)
|
150
|
+
rescue LoadError => load_error
|
151
|
+
if load_error.path == path
|
152
|
+
RUBYGEMS_ACTIVATION_MONITOR.enter
|
153
|
+
|
154
|
+
begin
|
155
|
+
require_again = Gem.try_activate(path)
|
156
|
+
ensure
|
157
|
+
RUBYGEMS_ACTIVATION_MONITOR.exit
|
158
|
+
end
|
161
159
|
|
162
|
-
|
163
|
-
ensure
|
164
|
-
if RUBYGEMS_ACTIVATION_MONITOR.respond_to?(:mon_owned?)
|
165
|
-
if monitor_owned != (ow = RUBYGEMS_ACTIVATION_MONITOR.mon_owned?)
|
166
|
-
STDERR.puts [$$, Thread.current, $!, $!.backtrace].inspect if $!
|
167
|
-
raise "CRITICAL: RUBYGEMS_ACTIVATION_MONITOR.owned?: before #{monitor_owned} -> after #{ow}"
|
160
|
+
return gem_original_require(path) if require_again
|
168
161
|
end
|
162
|
+
|
163
|
+
raise load_error
|
169
164
|
end
|
170
165
|
end
|
171
|
-
RUBY
|
172
166
|
|
173
167
|
private :require
|
174
168
|
|
@@ -1,54 +1,50 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
|
4
|
-
|
3
|
+
module Kernel
|
4
|
+
rubygems_path = "#{__dir__}/" # Frames to be skipped start with this path.
|
5
5
|
|
6
|
-
|
7
|
-
rubygems_path = "#{__dir__}/" # Frames to be skipped start with this path.
|
6
|
+
original_warn = instance_method(:warn)
|
8
7
|
|
9
|
-
|
8
|
+
remove_method :warn
|
10
9
|
|
10
|
+
class << self
|
11
11
|
remove_method :warn
|
12
|
+
end
|
12
13
|
|
13
|
-
|
14
|
-
|
14
|
+
module_function define_method(:warn) {|*messages, **kw|
|
15
|
+
unless uplevel = kw[:uplevel]
|
16
|
+
if Gem.java_platform? && RUBY_VERSION < "3.1"
|
17
|
+
return original_warn.bind(self).call(*messages)
|
18
|
+
else
|
19
|
+
return original_warn.bind(self).call(*messages, **kw)
|
20
|
+
end
|
15
21
|
end
|
16
22
|
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
+
# Ensure `uplevel` fits a `long`
|
24
|
+
uplevel, = [uplevel].pack("l!").unpack("l!")
|
25
|
+
|
26
|
+
if uplevel >= 0
|
27
|
+
start = 0
|
28
|
+
while uplevel >= 0
|
29
|
+
loc, = caller_locations(start, 1)
|
30
|
+
unless loc
|
31
|
+
# No more backtrace
|
32
|
+
start += uplevel
|
33
|
+
break
|
23
34
|
end
|
24
|
-
end
|
25
35
|
|
26
|
-
|
27
|
-
uplevel, = [uplevel].pack("l!").unpack("l!")
|
28
|
-
|
29
|
-
if uplevel >= 0
|
30
|
-
start = 0
|
31
|
-
while uplevel >= 0
|
32
|
-
loc, = caller_locations(start, 1)
|
33
|
-
unless loc
|
34
|
-
# No more backtrace
|
35
|
-
start += uplevel
|
36
|
-
break
|
37
|
-
end
|
36
|
+
start += 1
|
38
37
|
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
# Non-rubygems frames
|
44
|
-
uplevel -= 1
|
45
|
-
end
|
38
|
+
if path = loc.path
|
39
|
+
unless path.start_with?(rubygems_path) || path.start_with?("<internal:")
|
40
|
+
# Non-rubygems frames
|
41
|
+
uplevel -= 1
|
46
42
|
end
|
47
43
|
end
|
48
|
-
kw[:uplevel] = start
|
49
44
|
end
|
45
|
+
kw[:uplevel] = start
|
46
|
+
end
|
50
47
|
|
51
|
-
|
52
|
-
|
53
|
-
end
|
48
|
+
original_warn.bind(self).call(*messages, **kw)
|
49
|
+
}
|
54
50
|
end
|