rubygems-update 3.5.5 → 3.6.9
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 +606 -1
- data/CODE_OF_CONDUCT.md +79 -28
- data/Manifest.txt +114 -73
- data/README.md +16 -11
- data/bundler/CHANGELOG.md +506 -6
- data/bundler/README.md +2 -2
- data/bundler/bundler.gemspec +2 -2
- data/bundler/lib/bundler/build_metadata.rb +2 -2
- data/bundler/lib/bundler/checksum.rb +22 -12
- data/bundler/lib/bundler/cli/add.rb +3 -1
- data/bundler/lib/bundler/cli/binstubs.rb +1 -1
- data/bundler/lib/bundler/cli/check.rb +3 -3
- data/bundler/lib/bundler/cli/console.rb +8 -10
- data/bundler/lib/bundler/cli/doctor/diagnose.rb +167 -0
- data/bundler/lib/bundler/cli/doctor/ssl.rb +249 -0
- data/bundler/lib/bundler/cli/doctor.rb +27 -151
- data/bundler/lib/bundler/cli/exec.rb +1 -0
- data/bundler/lib/bundler/cli/fund.rb +1 -1
- data/bundler/lib/bundler/cli/gem.rb +13 -17
- data/bundler/lib/bundler/cli/info.rb +6 -6
- data/bundler/lib/bundler/cli/inject.rb +3 -3
- data/bundler/lib/bundler/cli/install.rb +14 -5
- data/bundler/lib/bundler/cli/issue.rb +3 -3
- data/bundler/lib/bundler/cli/lock.rb +32 -11
- data/bundler/lib/bundler/cli/outdated.rb +22 -22
- data/bundler/lib/bundler/cli/plugin.rb +3 -2
- data/bundler/lib/bundler/cli/pristine.rb +1 -1
- data/bundler/lib/bundler/cli/show.rb +3 -3
- data/bundler/lib/bundler/cli.rb +51 -107
- data/bundler/lib/bundler/compact_index_client/cache.rb +48 -73
- data/bundler/lib/bundler/compact_index_client/cache_file.rb +0 -5
- data/bundler/lib/bundler/compact_index_client/parser.rb +84 -0
- data/bundler/lib/bundler/compact_index_client/updater.rb +2 -12
- data/bundler/lib/bundler/compact_index_client.rb +51 -80
- data/bundler/lib/bundler/constants.rb +8 -1
- data/bundler/lib/bundler/current_ruby.rb +23 -33
- data/bundler/lib/bundler/definition.rb +485 -313
- data/bundler/lib/bundler/dependency.rb +92 -46
- data/bundler/lib/bundler/dsl.rb +135 -101
- data/bundler/lib/bundler/endpoint_specification.rb +30 -3
- data/bundler/lib/bundler/env.rb +1 -1
- data/bundler/lib/bundler/environment_preserver.rb +5 -23
- data/bundler/lib/bundler/errors.rb +53 -5
- data/bundler/lib/bundler/feature_flag.rb +3 -6
- data/bundler/lib/bundler/fetcher/compact_index.rb +16 -25
- data/bundler/lib/bundler/fetcher/downloader.rb +1 -1
- data/bundler/lib/bundler/fetcher.rb +14 -7
- data/bundler/lib/bundler/force_platform.rb +0 -2
- data/bundler/lib/bundler/friendly_errors.rb +1 -1
- data/bundler/lib/bundler/gem_helper.rb +1 -1
- data/bundler/lib/bundler/gem_helpers.rb +36 -19
- data/bundler/lib/bundler/gem_version_promoter.rb +42 -40
- data/bundler/lib/bundler/injector.rb +14 -16
- data/bundler/lib/bundler/inline.rb +42 -17
- data/bundler/lib/bundler/installer/gem_installer.rb +4 -3
- data/bundler/lib/bundler/installer/parallel_installer.rb +3 -2
- data/bundler/lib/bundler/installer/standalone.rb +2 -5
- data/bundler/lib/bundler/installer.rb +17 -41
- data/bundler/lib/bundler/lazy_specification.rb +117 -46
- data/bundler/lib/bundler/lockfile_generator.rb +1 -1
- data/bundler/lib/bundler/lockfile_parser.rb +18 -7
- data/bundler/lib/bundler/man/bundle-add.1 +44 -27
- data/bundler/lib/bundler/man/bundle-add.1.ronn +52 -23
- data/bundler/lib/bundler/man/bundle-binstubs.1 +9 -6
- data/bundler/lib/bundler/man/bundle-binstubs.1.ronn +6 -3
- data/bundler/lib/bundler/man/bundle-cache.1 +32 -4
- data/bundler/lib/bundler/man/bundle-cache.1.ronn +31 -2
- data/bundler/lib/bundler/man/bundle-check.1 +7 -5
- data/bundler/lib/bundler/man/bundle-check.1.ronn +7 -2
- data/bundler/lib/bundler/man/bundle-clean.1 +3 -3
- data/bundler/lib/bundler/man/bundle-config.1 +11 -15
- data/bundler/lib/bundler/man/bundle-config.1.ronn +12 -15
- data/bundler/lib/bundler/man/bundle-console.1 +4 -6
- data/bundler/lib/bundler/man/bundle-console.1.ronn +2 -7
- data/bundler/lib/bundler/man/bundle-doctor.1 +4 -4
- data/bundler/lib/bundler/man/bundle-doctor.1.ronn +1 -1
- data/bundler/lib/bundler/man/bundle-env.1 +9 -0
- data/bundler/lib/bundler/man/bundle-env.1.ronn +10 -0
- data/bundler/lib/bundler/man/bundle-exec.1 +9 -6
- data/bundler/lib/bundler/man/bundle-exec.1.ronn +6 -3
- data/bundler/lib/bundler/man/bundle-fund.1 +22 -0
- data/bundler/lib/bundler/man/bundle-fund.1.ronn +25 -0
- data/bundler/lib/bundler/man/bundle-gem.1 +25 -7
- data/bundler/lib/bundler/man/bundle-gem.1.ronn +38 -6
- data/bundler/lib/bundler/man/bundle-help.1 +3 -3
- data/bundler/lib/bundler/man/bundle-info.1 +7 -4
- data/bundler/lib/bundler/man/bundle-info.1.ronn +6 -2
- data/bundler/lib/bundler/man/bundle-init.1 +5 -5
- data/bundler/lib/bundler/man/bundle-init.1.ronn +3 -2
- data/bundler/lib/bundler/man/bundle-inject.1 +12 -4
- data/bundler/lib/bundler/man/bundle-inject.1.ronn +9 -1
- data/bundler/lib/bundler/man/bundle-install.1 +19 -16
- data/bundler/lib/bundler/man/bundle-install.1.ronn +24 -20
- data/bundler/lib/bundler/man/bundle-issue.1 +45 -0
- data/bundler/lib/bundler/man/bundle-issue.1.ronn +37 -0
- data/bundler/lib/bundler/man/bundle-licenses.1 +9 -0
- data/bundler/lib/bundler/man/bundle-licenses.1.ronn +10 -0
- data/bundler/lib/bundler/man/bundle-list.1 +3 -3
- data/bundler/lib/bundler/man/bundle-list.1.ronn +4 -1
- data/bundler/lib/bundler/man/bundle-lock.1 +23 -8
- data/bundler/lib/bundler/man/bundle-lock.1.ronn +25 -4
- data/bundler/lib/bundler/man/bundle-open.1 +4 -4
- data/bundler/lib/bundler/man/bundle-open.1.ronn +2 -1
- data/bundler/lib/bundler/man/bundle-outdated.1 +10 -7
- data/bundler/lib/bundler/man/bundle-outdated.1.ronn +8 -4
- data/bundler/lib/bundler/man/bundle-platform.1 +3 -3
- data/bundler/lib/bundler/man/bundle-plugin.1 +9 -6
- data/bundler/lib/bundler/man/bundle-plugin.1.ronn +7 -3
- data/bundler/lib/bundler/man/bundle-pristine.1 +3 -3
- data/bundler/lib/bundler/man/bundle-pristine.1.ronn +1 -1
- data/bundler/lib/bundler/man/bundle-remove.1 +3 -3
- data/bundler/lib/bundler/man/bundle-remove.1.ronn +1 -1
- data/bundler/lib/bundler/man/bundle-show.1 +7 -4
- data/bundler/lib/bundler/man/bundle-show.1.ronn +4 -0
- data/bundler/lib/bundler/man/bundle-update.1 +15 -9
- data/bundler/lib/bundler/man/bundle-update.1.ronn +14 -6
- data/bundler/lib/bundler/man/bundle-version.1 +3 -3
- data/bundler/lib/bundler/man/bundle-viz.1 +6 -6
- data/bundler/lib/bundler/man/bundle-viz.1.ronn +7 -3
- data/bundler/lib/bundler/man/bundle.1 +3 -3
- data/bundler/lib/bundler/man/gemfile.5 +7 -5
- data/bundler/lib/bundler/man/gemfile.5.ronn +8 -2
- data/bundler/lib/bundler/man/index.txt +4 -0
- data/bundler/lib/bundler/match_metadata.rb +13 -0
- data/bundler/lib/bundler/materialization.rb +59 -0
- data/bundler/lib/bundler/mirror.rb +3 -3
- data/bundler/lib/bundler/plugin/api/source.rb +5 -4
- data/bundler/lib/bundler/plugin/events.rb +24 -0
- data/bundler/lib/bundler/plugin/index.rb +5 -1
- data/bundler/lib/bundler/plugin/installer/path.rb +26 -0
- data/bundler/lib/bundler/plugin/installer.rb +37 -17
- data/bundler/lib/bundler/plugin/source_list.rb +4 -4
- data/bundler/lib/bundler/plugin.rb +21 -2
- data/bundler/lib/bundler/process_lock.rb +10 -14
- data/bundler/lib/bundler/remote_specification.rb +6 -1
- data/bundler/lib/bundler/resolver/base.rb +14 -3
- data/bundler/lib/bundler/resolver/candidate.rb +18 -27
- data/bundler/lib/bundler/resolver/package.rb +20 -3
- data/bundler/lib/bundler/resolver/spec_group.rb +22 -27
- data/bundler/lib/bundler/resolver/strategy.rb +40 -0
- data/bundler/lib/bundler/resolver.rb +114 -50
- data/bundler/lib/bundler/retry.rb +1 -1
- data/bundler/lib/bundler/ruby_dsl.rb +12 -3
- data/bundler/lib/bundler/ruby_version.rb +7 -1
- data/bundler/lib/bundler/rubygems_ext.rb +282 -125
- data/bundler/lib/bundler/rubygems_gem_installer.rb +40 -5
- data/bundler/lib/bundler/rubygems_integration.rb +29 -67
- data/bundler/lib/bundler/runtime.rb +48 -35
- data/bundler/lib/bundler/self_manager.rb +27 -7
- data/bundler/lib/bundler/settings.rb +32 -21
- data/bundler/lib/bundler/setup.rb +6 -0
- data/bundler/lib/bundler/shared_helpers.rb +39 -21
- data/bundler/lib/bundler/source/gemspec.rb +1 -4
- data/bundler/lib/bundler/source/git/git_proxy.rb +23 -6
- data/bundler/lib/bundler/source/git.rb +113 -41
- data/bundler/lib/bundler/source/metadata.rb +4 -3
- data/bundler/lib/bundler/source/path.rb +7 -18
- data/bundler/lib/bundler/source/rubygems/remote.rb +12 -4
- data/bundler/lib/bundler/source/rubygems.rb +54 -48
- data/bundler/lib/bundler/source.rb +2 -0
- data/bundler/lib/bundler/source_list.rb +53 -7
- data/bundler/lib/bundler/spec_set.rb +187 -88
- data/bundler/lib/bundler/stub_specification.rb +29 -2
- data/bundler/lib/bundler/templates/newgem/CODE_OF_CONDUCT.md.tt +77 -29
- data/bundler/lib/bundler/templates/newgem/Gemfile.tt +1 -3
- data/bundler/lib/bundler/templates/newgem/README.md.tt +7 -3
- data/bundler/lib/bundler/templates/newgem/github/workflows/main.yml.tt +15 -15
- data/bundler/lib/bundler/templates/newgem/newgem.gemspec.tt +8 -7
- data/bundler/lib/bundler/templates/newgem/rubocop.yml.tt +0 -5
- data/bundler/lib/bundler/ui/shell.rb +24 -2
- data/bundler/lib/bundler/ui/silent.rb +12 -1
- data/bundler/lib/bundler/uri_credentials_filter.rb +3 -3
- data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/timed_stack.rb +53 -3
- data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/version.rb +1 -1
- data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool.rb +11 -0
- data/bundler/lib/bundler/vendor/fileutils/lib/fileutils.rb +15 -13
- data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb +68 -30
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/basic_package_source.rb +4 -24
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/static_package_source.rb +1 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/strategy.rb +42 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_range.rb +20 -8
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_solver.rb +17 -29
- data/bundler/lib/bundler/vendor/securerandom/COPYING +56 -0
- data/bundler/lib/bundler/vendor/securerandom/lib/securerandom.rb +102 -0
- data/bundler/lib/bundler/vendor/thor/lib/thor/actions/file_manipulation.rb +3 -5
- data/bundler/lib/bundler/vendor/thor/lib/thor/group.rb +11 -0
- data/bundler/lib/bundler/vendor/thor/lib/thor/parser/argument.rb +1 -4
- data/bundler/lib/bundler/vendor/thor/lib/thor/parser/option.rb +2 -2
- data/bundler/lib/bundler/vendor/thor/lib/thor/parser/options.rb +2 -1
- data/bundler/lib/bundler/vendor/thor/lib/thor/shell/basic.rb +9 -9
- data/bundler/lib/bundler/vendor/thor/lib/thor/shell/html.rb +1 -1
- data/bundler/lib/bundler/vendor/thor/lib/thor/shell/table_printer.rb +5 -21
- data/bundler/lib/bundler/vendor/thor/lib/thor/util.rb +1 -1
- data/bundler/lib/bundler/vendor/thor/lib/thor/version.rb +1 -1
- data/bundler/lib/bundler/vendor/thor/lib/thor.rb +11 -0
- data/bundler/lib/bundler/vendor/uri/COPYING +56 -0
- data/bundler/lib/bundler/vendor/uri/lib/uri/common.rb +43 -16
- data/bundler/lib/bundler/vendor/uri/lib/uri/file.rb +3 -3
- data/bundler/lib/bundler/vendor/uri/lib/uri/ftp.rb +1 -1
- data/bundler/lib/bundler/vendor/uri/lib/uri/generic.rb +28 -37
- data/bundler/lib/bundler/vendor/uri/lib/uri/http.rb +2 -2
- data/bundler/lib/bundler/vendor/uri/lib/uri/rfc2396_parser.rb +16 -9
- data/bundler/lib/bundler/vendor/uri/lib/uri/rfc3986_parser.rb +26 -3
- data/bundler/lib/bundler/vendor/uri/lib/uri/version.rb +1 -1
- data/bundler/lib/bundler/vendor/uri/lib/uri.rb +9 -9
- data/bundler/lib/bundler/vendored_net_http.rb +20 -5
- data/bundler/lib/bundler/vendored_securerandom.rb +12 -0
- data/bundler/lib/bundler/vendored_timeout.rb +7 -3
- data/bundler/lib/bundler/vendored_uri.rb +18 -1
- data/bundler/lib/bundler/version.rb +1 -1
- data/bundler/lib/bundler/yaml_serializer.rb +12 -7
- data/bundler/lib/bundler.rb +89 -51
- data/{CONTRIBUTING.md → doc/rubygems/CONTRIBUTING.md} +10 -14
- data/{POLICIES.md → doc/rubygems/POLICIES.md} +81 -12
- data/exe/update_rubygems +1 -1
- data/lib/rubygems/basic_specification.rb +43 -10
- data/lib/rubygems/bundler_version_finder.rb +1 -1
- data/lib/rubygems/command.rb +1 -4
- data/lib/rubygems/command_manager.rb +5 -6
- data/lib/rubygems/commands/build_command.rb +2 -11
- data/lib/rubygems/commands/cleanup_command.rb +3 -13
- data/lib/rubygems/commands/contents_command.rb +17 -10
- data/lib/rubygems/commands/environment_command.rb +5 -0
- data/lib/rubygems/commands/exec_command.rb +18 -11
- data/lib/rubygems/commands/fetch_command.rb +14 -0
- data/lib/rubygems/commands/help_command.rb +2 -2
- data/lib/rubygems/commands/install_command.rb +0 -4
- data/lib/rubygems/commands/pristine_command.rb +30 -17
- data/lib/rubygems/commands/push_command.rb +31 -6
- data/lib/rubygems/commands/rdoc_command.rb +3 -10
- data/lib/rubygems/commands/rebuild_command.rb +262 -0
- data/lib/rubygems/commands/setup_command.rb +11 -16
- data/lib/rubygems/commands/sources_command.rb +2 -2
- data/lib/rubygems/commands/uninstall_command.rb +9 -4
- data/lib/rubygems/commands/unpack_command.rb +0 -6
- data/lib/rubygems/commands/update_command.rb +10 -17
- data/lib/rubygems/config_file.rb +45 -16
- data/lib/rubygems/core_ext/kernel_warn.rb +2 -6
- data/lib/rubygems/defaults.rb +6 -6
- data/lib/rubygems/dependency.rb +12 -16
- data/lib/rubygems/dependency_list.rb +1 -1
- data/lib/rubygems/deprecate.rb +79 -77
- data/lib/rubygems/errors.rb +2 -1
- data/lib/rubygems/exceptions.rb +2 -9
- data/lib/rubygems/ext/builder.rb +21 -8
- data/lib/rubygems/ext/cargo_builder.rb +12 -26
- data/lib/rubygems/ext/cmake_builder.rb +7 -2
- data/lib/rubygems/ext/configure_builder.rb +7 -2
- data/lib/rubygems/ext/ext_conf_builder.rb +9 -5
- data/lib/rubygems/ext/rake_builder.rb +7 -4
- data/lib/rubygems/gem_runner.rb +9 -0
- data/lib/rubygems/gemcutter_utilities/webauthn_listener.rb +1 -1
- data/lib/rubygems/gemcutter_utilities/webauthn_poller.rb +3 -1
- data/lib/rubygems/gemcutter_utilities.rb +52 -26
- data/lib/rubygems/gemspec_helpers.rb +19 -0
- data/lib/rubygems/install_update_options.rb +5 -0
- data/lib/rubygems/installer.rb +31 -40
- data/lib/rubygems/local_remote_options.rb +8 -8
- data/lib/rubygems/package/tar_header.rb +31 -4
- data/lib/rubygems/package/tar_reader/entry.rb +1 -5
- data/lib/rubygems/package/tar_writer.rb +5 -4
- data/lib/rubygems/package.rb +13 -8
- data/lib/rubygems/platform.rb +7 -5
- data/lib/rubygems/psych_tree.rb +4 -0
- data/lib/rubygems/query_utils.rb +2 -2
- data/lib/rubygems/rdoc.rb +16 -3
- data/lib/rubygems/remote_fetcher.rb +3 -4
- data/lib/rubygems/request.rb +5 -5
- data/lib/rubygems/request_set/gem_dependency_api.rb +1 -1
- data/lib/rubygems/request_set.rb +1 -1
- data/lib/rubygems/requirement.rb +16 -12
- data/lib/rubygems/resolver/activation_request.rb +1 -1
- data/lib/rubygems/resolver/api_set/gem_parser.rb +2 -5
- data/lib/rubygems/resolver/api_set.rb +13 -8
- data/lib/rubygems/resolver/best_set.rb +0 -28
- data/lib/rubygems/resolver/composed_set.rb +3 -3
- data/lib/rubygems/resolver/git_set.rb +0 -1
- data/lib/rubygems/resolver/index_set.rb +2 -2
- data/lib/rubygems/resolver/spec_specification.rb +7 -0
- data/lib/rubygems/resolver.rb +7 -7
- data/lib/rubygems/s3_uri_signer.rb +3 -3
- data/lib/rubygems/safe_marshal/reader.rb +31 -14
- data/lib/rubygems/safe_marshal/visitors/to_ruby.rb +29 -16
- data/lib/rubygems/safe_yaml.rb +10 -1
- data/lib/rubygems/security.rb +1 -1
- data/lib/rubygems/source/git.rb +22 -17
- data/lib/rubygems/source/installed.rb +3 -1
- data/lib/rubygems/source/local.rb +8 -4
- data/lib/rubygems/source/specific_file.rb +5 -3
- data/lib/rubygems/source.rb +10 -8
- data/lib/rubygems/source_list.rb +1 -1
- data/lib/rubygems/spec_fetcher.rb +47 -15
- data/lib/rubygems/specification.rb +107 -180
- data/lib/rubygems/specification_policy.rb +33 -13
- data/lib/rubygems/specification_record.rb +212 -0
- data/lib/rubygems/stub_specification.rb +32 -10
- data/lib/rubygems/target_rbconfig.rb +50 -0
- data/lib/rubygems/uninstaller.rb +42 -22
- data/lib/rubygems/uri.rb +6 -6
- data/lib/rubygems/util/licenses.rb +97 -1
- data/lib/rubygems/util.rb +1 -1
- data/lib/rubygems/vendor/molinillo/lib/molinillo/delegates/resolution_state.rb +57 -0
- data/lib/rubygems/{resolver → vendor}/molinillo/lib/molinillo/delegates/specification_provider.rb +11 -11
- data/lib/rubygems/{resolver → vendor}/molinillo/lib/molinillo/dependency_graph/action.rb +1 -1
- data/lib/rubygems/{resolver → vendor}/molinillo/lib/molinillo/dependency_graph/add_edge_no_circular.rb +1 -1
- data/lib/rubygems/{resolver → vendor}/molinillo/lib/molinillo/dependency_graph/add_vertex.rb +1 -1
- data/lib/rubygems/{resolver → vendor}/molinillo/lib/molinillo/dependency_graph/delete_edge.rb +1 -1
- data/lib/rubygems/{resolver → vendor}/molinillo/lib/molinillo/dependency_graph/detach_vertex_named.rb +1 -1
- data/lib/rubygems/{resolver → vendor}/molinillo/lib/molinillo/dependency_graph/log.rb +1 -1
- data/lib/rubygems/{resolver → vendor}/molinillo/lib/molinillo/dependency_graph/set_payload.rb +1 -1
- data/lib/rubygems/{resolver → vendor}/molinillo/lib/molinillo/dependency_graph/tag.rb +1 -1
- data/lib/rubygems/{resolver → vendor}/molinillo/lib/molinillo/dependency_graph/vertex.rb +1 -1
- data/lib/rubygems/{resolver → vendor}/molinillo/lib/molinillo/dependency_graph.rb +2 -2
- data/lib/rubygems/{resolver → vendor}/molinillo/lib/molinillo/errors.rb +1 -1
- data/lib/rubygems/vendor/molinillo/lib/molinillo/gem_metadata.rb +6 -0
- data/lib/rubygems/{resolver → vendor}/molinillo/lib/molinillo/modules/specification_provider.rb +2 -2
- data/lib/rubygems/{resolver → vendor}/molinillo/lib/molinillo/modules/ui.rb +1 -1
- data/lib/rubygems/{resolver → vendor}/molinillo/lib/molinillo/resolution.rb +4 -4
- data/lib/rubygems/{resolver → vendor}/molinillo/lib/molinillo/resolver.rb +1 -1
- data/lib/rubygems/{resolver → vendor}/molinillo/lib/molinillo/state.rb +1 -1
- data/lib/rubygems/{resolver → vendor}/molinillo/lib/molinillo.rb +2 -2
- data/lib/rubygems/vendor/net-http/COPYING +56 -0
- data/lib/rubygems/{net-http → vendor/net-http}/lib/net/http/generic_request.rb +9 -9
- data/lib/rubygems/{net-http → vendor/net-http}/lib/net/http/header.rb +3 -3
- data/lib/rubygems/{net-http → vendor/net-http}/lib/net/http/request.rb +3 -3
- data/lib/rubygems/{net-http → vendor/net-http}/lib/net/http/requests.rb +35 -30
- data/lib/rubygems/{net-http → vendor/net-http}/lib/net/http/response.rb +2 -2
- data/lib/rubygems/{net-http → vendor/net-http}/lib/net/http/responses.rb +6 -6
- data/lib/rubygems/{net-http → vendor/net-http}/lib/net/http/status.rb +1 -1
- data/lib/rubygems/{net-http → vendor/net-http}/lib/net/http.rb +135 -51
- data/lib/rubygems/{net-http → vendor/net-http}/lib/net/https.rb +1 -1
- data/lib/rubygems/vendor/optparse/COPYING +56 -0
- data/lib/rubygems/{optparse → vendor/optparse}/lib/optparse/ac.rb +16 -0
- data/lib/rubygems/{optparse → vendor/optparse}/lib/optparse/kwargs.rb +8 -3
- data/lib/rubygems/vendor/optparse/lib/optparse/uri.rb +7 -0
- data/lib/rubygems/{optparse → vendor/optparse}/lib/optparse/version.rb +9 -0
- data/lib/rubygems/{optparse → vendor/optparse}/lib/optparse.rb +158 -62
- data/lib/rubygems/vendor/resolv/COPYING +56 -0
- data/lib/rubygems/{resolv → vendor/resolv}/lib/resolv.rb +117 -49
- data/lib/rubygems/vendor/securerandom/COPYING +56 -0
- data/lib/rubygems/vendor/securerandom/lib/securerandom.rb +102 -0
- data/lib/rubygems/vendor/timeout/.document +1 -0
- data/lib/rubygems/vendor/timeout/COPYING +56 -0
- data/lib/rubygems/{timeout → vendor/timeout}/lib/timeout.rb +10 -11
- data/lib/rubygems/vendor/tsort/.document +1 -0
- data/lib/rubygems/{tsort → vendor/tsort}/lib/tsort.rb +2 -2
- data/lib/rubygems/vendor/uri/.document +1 -0
- data/lib/rubygems/vendor/uri/COPYING +56 -0
- data/lib/rubygems/vendor/uri/lib/uri/common.rb +880 -0
- data/lib/rubygems/vendor/uri/lib/uri/file.rb +100 -0
- data/lib/rubygems/vendor/uri/lib/uri/ftp.rb +267 -0
- data/lib/rubygems/vendor/uri/lib/uri/generic.rb +1579 -0
- data/lib/rubygems/vendor/uri/lib/uri/http.rb +125 -0
- data/lib/rubygems/vendor/uri/lib/uri/https.rb +23 -0
- data/lib/rubygems/vendor/uri/lib/uri/ldap.rb +261 -0
- data/lib/rubygems/vendor/uri/lib/uri/ldaps.rb +22 -0
- data/lib/rubygems/vendor/uri/lib/uri/mailto.rb +293 -0
- data/lib/rubygems/vendor/uri/lib/uri/rfc2396_parser.rb +546 -0
- data/lib/rubygems/vendor/uri/lib/uri/rfc3986_parser.rb +206 -0
- data/lib/rubygems/vendor/uri/lib/uri/version.rb +6 -0
- data/lib/rubygems/vendor/uri/lib/uri/ws.rb +83 -0
- data/lib/rubygems/vendor/uri/lib/uri/wss.rb +23 -0
- data/lib/rubygems/vendor/uri/lib/uri.rb +104 -0
- data/lib/rubygems/vendored_molinillo.rb +3 -0
- data/lib/rubygems/vendored_net_http.rb +5 -0
- data/lib/rubygems/vendored_optparse.rb +3 -0
- data/lib/rubygems/vendored_securerandom.rb +3 -0
- data/lib/rubygems/vendored_timeout.rb +5 -0
- data/lib/rubygems/vendored_tsort.rb +3 -0
- data/lib/rubygems/version.rb +26 -9
- data/lib/rubygems/yaml_serializer.rb +12 -7
- data/lib/rubygems.rb +82 -47
- data/rubygems-update.gemspec +11 -6
- data/setup.rb +1 -1
- metadata +131 -86
- data/bundler/lib/bundler/compact_index_client/gem_parser.rb +0 -32
- data/lib/rubygems/net/http.rb +0 -3
- data/lib/rubygems/net-http/LICENSE.txt +0 -22
- data/lib/rubygems/net-http/lib/net/http/backward.rb +0 -40
- data/lib/rubygems/net-protocol/LICENSE.txt +0 -22
- data/lib/rubygems/optparse/lib/optparse/uri.rb +0 -7
- data/lib/rubygems/optparse.rb +0 -3
- data/lib/rubygems/resolv/LICENSE.txt +0 -22
- data/lib/rubygems/resolver/molinillo/lib/molinillo/delegates/resolution_state.rb +0 -57
- data/lib/rubygems/resolver/molinillo/lib/molinillo/gem_metadata.rb +0 -6
- data/lib/rubygems/resolver/molinillo.rb +0 -3
- data/lib/rubygems/shellwords.rb +0 -3
- data/lib/rubygems/timeout/LICENSE.txt +0 -22
- data/lib/rubygems/timeout.rb +0 -3
- data/lib/rubygems/tsort/LICENSE.txt +0 -22
- data/lib/rubygems/tsort.rb +0 -3
- /data/{lib/rubygems/optparse → bundler/lib/bundler/vendor/fileutils}/COPYING +0 -0
- /data/{lib/rubygems/net-http → bundler/lib/bundler/vendor/securerandom}/.document +0 -0
- /data/{MAINTAINERS.txt → doc/MAINTAINERS.txt} +0 -0
- /data/{bundler → doc/bundler}/UPGRADING.md +0 -0
- /data/{UPGRADING.md → doc/rubygems/UPGRADING.md} +0 -0
- /data/lib/rubygems/{net-protocol → vendor/molinillo}/.document +0 -0
- /data/lib/rubygems/{resolver → vendor}/molinillo/LICENSE +0 -0
- /data/lib/rubygems/{optparse → vendor/net-http}/.document +0 -0
- /data/lib/rubygems/{net-http → vendor/net-http}/lib/net/http/exceptions.rb +0 -0
- /data/lib/rubygems/{net-http → vendor/net-http}/lib/net/http/proxy_delta.rb +0 -0
- /data/lib/rubygems/{resolv → vendor/net-protocol}/.document +0 -0
- /data/{bundler/lib/bundler/vendor/fileutils → lib/rubygems/vendor/net-protocol}/LICENSE.txt +0 -0
- /data/lib/rubygems/{net-protocol → vendor/net-protocol}/lib/net/protocol.rb +0 -0
- /data/lib/rubygems/{resolver/molinillo → vendor/optparse}/.document +0 -0
- /data/lib/rubygems/{optparse → vendor/optparse}/lib/optionparser.rb +0 -0
- /data/lib/rubygems/{optparse → vendor/optparse}/lib/optparse/date.rb +0 -0
- /data/lib/rubygems/{optparse → vendor/optparse}/lib/optparse/shellwords.rb +0 -0
- /data/lib/rubygems/{optparse → vendor/optparse}/lib/optparse/time.rb +0 -0
- /data/lib/rubygems/{timeout → vendor/resolv}/.document +0 -0
- /data/lib/rubygems/{tsort → vendor/securerandom}/.document +0 -0
- /data/{bundler/lib/bundler/vendor/uri → lib/rubygems/vendor/tsort}/LICENSE.txt +0 -0
|
@@ -20,10 +20,6 @@ module Bundler
|
|
|
20
20
|
Gem::Requirement.new(req_str).satisfied_by?(version)
|
|
21
21
|
end
|
|
22
22
|
|
|
23
|
-
def supports_bundler_trampolining?
|
|
24
|
-
provides?(">= 3.3.0.a")
|
|
25
|
-
end
|
|
26
|
-
|
|
27
23
|
def build_args
|
|
28
24
|
require "rubygems/command"
|
|
29
25
|
Gem::Command.build_args
|
|
@@ -34,6 +30,10 @@ module Bundler
|
|
|
34
30
|
Gem::Command.build_args = args
|
|
35
31
|
end
|
|
36
32
|
|
|
33
|
+
def set_target_rbconfig(path)
|
|
34
|
+
Gem.set_target_rbconfig(path)
|
|
35
|
+
end
|
|
36
|
+
|
|
37
37
|
def loaded_specs(name)
|
|
38
38
|
Gem.loaded_specs[name]
|
|
39
39
|
end
|
|
@@ -48,7 +48,7 @@ module Bundler
|
|
|
48
48
|
end
|
|
49
49
|
|
|
50
50
|
def validate(spec)
|
|
51
|
-
Bundler.ui.silence { spec.
|
|
51
|
+
Bundler.ui.silence { spec.validate_for_resolution }
|
|
52
52
|
rescue Gem::InvalidSpecificationException => e
|
|
53
53
|
error_message = "The gemspec at #{spec.loaded_from} is not valid. Please fix this gemspec.\n" \
|
|
54
54
|
"The validation error was '#{e.message}'\n"
|
|
@@ -57,28 +57,6 @@ module Bundler
|
|
|
57
57
|
nil
|
|
58
58
|
end
|
|
59
59
|
|
|
60
|
-
def set_installed_by_version(spec, installed_by_version = Gem::VERSION)
|
|
61
|
-
return unless spec.respond_to?(:installed_by_version=)
|
|
62
|
-
spec.installed_by_version = Gem::Version.create(installed_by_version)
|
|
63
|
-
end
|
|
64
|
-
|
|
65
|
-
def spec_missing_extensions?(spec, default = true)
|
|
66
|
-
return spec.missing_extensions? if spec.respond_to?(:missing_extensions?)
|
|
67
|
-
|
|
68
|
-
return false if spec.default_gem?
|
|
69
|
-
return false if spec.extensions.empty?
|
|
70
|
-
|
|
71
|
-
default
|
|
72
|
-
end
|
|
73
|
-
|
|
74
|
-
def spec_matches_for_glob(spec, glob)
|
|
75
|
-
return spec.matches_for_glob(glob) if spec.respond_to?(:matches_for_glob)
|
|
76
|
-
|
|
77
|
-
spec.load_paths.flat_map do |lp|
|
|
78
|
-
Dir["#{lp}/#{glob}#{suffix_pattern}"]
|
|
79
|
-
end
|
|
80
|
-
end
|
|
81
|
-
|
|
82
60
|
def stub_set_spec(stub, spec)
|
|
83
61
|
stub.instance_variable_set(:@spec, spec)
|
|
84
62
|
end
|
|
@@ -199,12 +177,12 @@ module Bundler
|
|
|
199
177
|
end
|
|
200
178
|
end
|
|
201
179
|
|
|
202
|
-
def replace_gem(
|
|
180
|
+
def replace_gem(specs_by_name)
|
|
203
181
|
executables = nil
|
|
204
182
|
|
|
205
183
|
[::Kernel.singleton_class, ::Kernel].each do |kernel_class|
|
|
206
184
|
redefine_method(kernel_class, :gem) do |dep, *reqs|
|
|
207
|
-
if executables&.include?(File.basename(
|
|
185
|
+
if executables&.include?(File.basename(caller_locations(1, 1).first.path))
|
|
208
186
|
break
|
|
209
187
|
end
|
|
210
188
|
|
|
@@ -242,9 +220,7 @@ module Bundler
|
|
|
242
220
|
end
|
|
243
221
|
end
|
|
244
222
|
|
|
245
|
-
# Used to
|
|
246
|
-
# under bundler. The new Gem.bin_path only considers gems in
|
|
247
|
-
# +specs+
|
|
223
|
+
# Used to give better error messages when activating specs outside of the current bundle
|
|
248
224
|
def replace_bin_path(specs_by_name)
|
|
249
225
|
gem_class = (class << Gem; self; end)
|
|
250
226
|
|
|
@@ -283,31 +259,6 @@ module Bundler
|
|
|
283
259
|
|
|
284
260
|
spec
|
|
285
261
|
end
|
|
286
|
-
|
|
287
|
-
redefine_method(gem_class, :activate_bin_path) do |name, *args|
|
|
288
|
-
exec_name = args.first
|
|
289
|
-
return ENV["BUNDLE_BIN_PATH"] if exec_name == "bundle"
|
|
290
|
-
|
|
291
|
-
# Copy of Rubygems activate_bin_path impl
|
|
292
|
-
requirement = args.last
|
|
293
|
-
spec = find_spec_for_exe name, exec_name, [requirement]
|
|
294
|
-
|
|
295
|
-
gem_bin = File.join(spec.full_gem_path, spec.bindir, exec_name)
|
|
296
|
-
gem_from_path_bin = File.join(File.dirname(spec.loaded_from), spec.bindir, exec_name)
|
|
297
|
-
File.exist?(gem_bin) ? gem_bin : gem_from_path_bin
|
|
298
|
-
end
|
|
299
|
-
|
|
300
|
-
redefine_method(gem_class, :bin_path) do |name, *args|
|
|
301
|
-
exec_name = args.first
|
|
302
|
-
return ENV["BUNDLE_BIN_PATH"] if exec_name == "bundle"
|
|
303
|
-
|
|
304
|
-
spec = find_spec_for_exe(name, *args)
|
|
305
|
-
exec_name ||= spec.default_executable
|
|
306
|
-
|
|
307
|
-
gem_bin = File.join(spec.full_gem_path, spec.bindir, exec_name)
|
|
308
|
-
gem_from_path_bin = File.join(File.dirname(spec.loaded_from), spec.bindir, exec_name)
|
|
309
|
-
File.exist?(gem_bin) ? gem_bin : gem_from_path_bin
|
|
310
|
-
end
|
|
311
262
|
end
|
|
312
263
|
|
|
313
264
|
# Replace or hook into RubyGems to provide a bundlerized view
|
|
@@ -323,8 +274,8 @@ module Bundler
|
|
|
323
274
|
else
|
|
324
275
|
Gem::BUNDLED_GEMS.replace_require(specs) if Gem::BUNDLED_GEMS.respond_to?(:replace_require)
|
|
325
276
|
end
|
|
326
|
-
replace_gem(
|
|
327
|
-
stub_rubygems(
|
|
277
|
+
replace_gem(specs_by_name)
|
|
278
|
+
stub_rubygems(specs_by_name.values)
|
|
328
279
|
replace_bin_path(specs_by_name)
|
|
329
280
|
|
|
330
281
|
Gem.clear_paths
|
|
@@ -342,7 +293,6 @@ module Bundler
|
|
|
342
293
|
default_spec_name = default_spec.name
|
|
343
294
|
next if specs_by_name.key?(default_spec_name)
|
|
344
295
|
|
|
345
|
-
specs << default_spec
|
|
346
296
|
specs_by_name[default_spec_name] = default_spec
|
|
347
297
|
end
|
|
348
298
|
|
|
@@ -353,11 +303,7 @@ module Bundler
|
|
|
353
303
|
@replaced_methods.each do |(sym, klass), method|
|
|
354
304
|
redefine_method(klass, sym, method)
|
|
355
305
|
end
|
|
356
|
-
|
|
357
|
-
post_reset_hooks.reject! {|proc| proc.binding.source_location[0] == __FILE__ }
|
|
358
|
-
else
|
|
359
|
-
post_reset_hooks.reject! {|proc| proc.binding.eval("__FILE__") == __FILE__ }
|
|
360
|
-
end
|
|
306
|
+
post_reset_hooks.reject! {|proc| proc.binding.source_location[0] == __FILE__ }
|
|
361
307
|
@replaced_methods.clear
|
|
362
308
|
end
|
|
363
309
|
|
|
@@ -434,7 +380,9 @@ module Bundler
|
|
|
434
380
|
def download_gem(spec, uri, cache_dir, fetcher)
|
|
435
381
|
require "rubygems/remote_fetcher"
|
|
436
382
|
uri = Bundler.settings.mirror_for(uri)
|
|
437
|
-
|
|
383
|
+
redacted_uri = Gem::Uri.redact(uri)
|
|
384
|
+
|
|
385
|
+
Bundler::Retry.new("download gem from #{redacted_uri}").attempts do
|
|
438
386
|
gem_file_name = spec.file_name
|
|
439
387
|
local_gem_path = File.join cache_dir, gem_file_name
|
|
440
388
|
return if File.exist? local_gem_path
|
|
@@ -456,7 +404,7 @@ module Bundler
|
|
|
456
404
|
end
|
|
457
405
|
end
|
|
458
406
|
rescue Gem::RemoteFetcher::FetchError => e
|
|
459
|
-
raise Bundler::HTTPError, "Could not download gem from #{
|
|
407
|
+
raise Bundler::HTTPError, "Could not download gem from #{redacted_uri} due to underlying error <#{e.message}>"
|
|
460
408
|
end
|
|
461
409
|
|
|
462
410
|
def build(spec, skip_validation = false)
|
|
@@ -469,11 +417,25 @@ module Bundler
|
|
|
469
417
|
end
|
|
470
418
|
|
|
471
419
|
def all_specs
|
|
420
|
+
SharedHelpers.major_deprecation 2, "Bundler.rubygems.all_specs has been removed in favor of Bundler.rubygems.installed_specs"
|
|
421
|
+
|
|
472
422
|
Gem::Specification.stubs.map do |stub|
|
|
473
423
|
StubSpecification.from_stub(stub)
|
|
474
424
|
end
|
|
475
425
|
end
|
|
476
426
|
|
|
427
|
+
def installed_specs
|
|
428
|
+
Gem::Specification.stubs.reject(&:default_gem?).map do |stub|
|
|
429
|
+
StubSpecification.from_stub(stub)
|
|
430
|
+
end
|
|
431
|
+
end
|
|
432
|
+
|
|
433
|
+
def default_specs
|
|
434
|
+
Gem::Specification.default_stubs.map do |stub|
|
|
435
|
+
StubSpecification.from_stub(stub)
|
|
436
|
+
end
|
|
437
|
+
end
|
|
438
|
+
|
|
477
439
|
def find_bundler(version)
|
|
478
440
|
find_name("bundler").find {|s| s.version.to_s == version }
|
|
479
441
|
end
|
|
@@ -10,7 +10,7 @@ module Bundler
|
|
|
10
10
|
end
|
|
11
11
|
|
|
12
12
|
def setup(*groups)
|
|
13
|
-
@definition.ensure_equivalent_gemfile_and_lockfile
|
|
13
|
+
@definition.ensure_equivalent_gemfile_and_lockfile
|
|
14
14
|
|
|
15
15
|
# Has to happen first
|
|
16
16
|
clean_load_path
|
|
@@ -41,42 +41,48 @@ module Bundler
|
|
|
41
41
|
groups.map!(&:to_sym)
|
|
42
42
|
groups = [:default] if groups.empty?
|
|
43
43
|
|
|
44
|
-
@definition.dependencies.
|
|
45
|
-
#
|
|
46
|
-
#
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
required_file = nil
|
|
44
|
+
dependencies = @definition.dependencies.select do |dep|
|
|
45
|
+
# Select the dependency if it is in any of the requested groups, and
|
|
46
|
+
# for the current platform, and matches the gem constraints.
|
|
47
|
+
(dep.groups & groups).any? && dep.should_include?
|
|
48
|
+
end
|
|
50
49
|
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
50
|
+
Plugin.hook(Plugin::Events::GEM_BEFORE_REQUIRE_ALL, dependencies)
|
|
51
|
+
|
|
52
|
+
dependencies.each do |dep|
|
|
53
|
+
Plugin.hook(Plugin::Events::GEM_BEFORE_REQUIRE, dep)
|
|
54
|
+
|
|
55
|
+
# Loop through all the specified autorequires for the
|
|
56
|
+
# dependency. If there are none, use the dependency's name
|
|
57
|
+
# as the autorequire.
|
|
58
|
+
Array(dep.autorequire || dep.name).each do |file|
|
|
59
|
+
# Allow `require: true` as an alias for `require: <name>`
|
|
60
|
+
file = dep.name if file == true
|
|
61
|
+
required_file = file
|
|
62
|
+
begin
|
|
63
|
+
Kernel.require required_file
|
|
64
|
+
rescue LoadError => e
|
|
65
|
+
if dep.autorequire.nil? && e.path == required_file
|
|
66
|
+
if required_file.include?("-")
|
|
67
|
+
required_file = required_file.tr("-", "/")
|
|
68
|
+
retry
|
|
69
|
+
end
|
|
70
|
+
else
|
|
63
71
|
raise Bundler::GemRequireError.new e,
|
|
64
72
|
"There was an error while trying to load the gem '#{file}'."
|
|
65
73
|
end
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
if dep.autorequire.nil? && dep.name.include?("-")
|
|
71
|
-
begin
|
|
72
|
-
namespaced_file = dep.name.tr("-", "/")
|
|
73
|
-
Kernel.require namespaced_file
|
|
74
|
-
rescue LoadError => e
|
|
75
|
-
raise if e.path != namespaced_file
|
|
76
|
-
end
|
|
74
|
+
rescue RuntimeError => e
|
|
75
|
+
raise Bundler::GemRequireError.new e,
|
|
76
|
+
"There was an error while trying to load the gem '#{file}'."
|
|
77
77
|
end
|
|
78
78
|
end
|
|
79
|
+
|
|
80
|
+
Plugin.hook(Plugin::Events::GEM_AFTER_REQUIRE, dep)
|
|
79
81
|
end
|
|
82
|
+
|
|
83
|
+
Plugin.hook(Plugin::Events::GEM_AFTER_REQUIRE_ALL, dependencies)
|
|
84
|
+
|
|
85
|
+
dependencies
|
|
80
86
|
end
|
|
81
87
|
|
|
82
88
|
def self.definition_method(meth)
|
|
@@ -95,7 +101,7 @@ module Bundler
|
|
|
95
101
|
|
|
96
102
|
def lock(opts = {})
|
|
97
103
|
return if @definition.no_resolve_needed?
|
|
98
|
-
@definition.lock(
|
|
104
|
+
@definition.lock(opts[:preserve_unknown_sections])
|
|
99
105
|
end
|
|
100
106
|
|
|
101
107
|
alias_method :gems, :specs
|
|
@@ -124,8 +130,15 @@ module Bundler
|
|
|
124
130
|
|
|
125
131
|
specs_to_cache.each do |spec|
|
|
126
132
|
next if spec.name == "bundler"
|
|
127
|
-
|
|
128
|
-
|
|
133
|
+
|
|
134
|
+
source = spec.source
|
|
135
|
+
next if source.is_a?(Source::Gemspec)
|
|
136
|
+
|
|
137
|
+
if source.respond_to?(:migrate_cache)
|
|
138
|
+
source.migrate_cache(custom_path, local: local)
|
|
139
|
+
elsif source.respond_to?(:cache)
|
|
140
|
+
source.cache(spec, custom_path)
|
|
141
|
+
end
|
|
129
142
|
end
|
|
130
143
|
|
|
131
144
|
Dir[cache_path.join("*/.git")].each do |git_dir|
|
|
@@ -257,10 +270,10 @@ module Bundler
|
|
|
257
270
|
|
|
258
271
|
def setup_manpath
|
|
259
272
|
# Add man/ subdirectories from activated bundles to MANPATH for man(1)
|
|
260
|
-
manuals = $LOAD_PATH.
|
|
273
|
+
manuals = $LOAD_PATH.filter_map do |path|
|
|
261
274
|
man_subdir = path.sub(/lib$/, "man")
|
|
262
275
|
man_subdir unless Dir[man_subdir + "/man?/"].empty?
|
|
263
|
-
end
|
|
276
|
+
end
|
|
264
277
|
|
|
265
278
|
return if manuals.empty?
|
|
266
279
|
Bundler::SharedHelpers.set_env "MANPATH", manuals.concat(
|
|
@@ -70,8 +70,24 @@ module Bundler
|
|
|
70
70
|
configured_gem_home = ENV["GEM_HOME"]
|
|
71
71
|
configured_gem_path = ENV["GEM_PATH"]
|
|
72
72
|
|
|
73
|
-
|
|
74
|
-
|
|
73
|
+
# Bundler specs need some stuff to be required before Bundler starts
|
|
74
|
+
# running, for example, for faking the compact index API. However, these
|
|
75
|
+
# flags are lost when we reexec to a different version of Bundler. In the
|
|
76
|
+
# future, we may be able to properly reconstruct the original Ruby
|
|
77
|
+
# invocation (see https://bugs.ruby-lang.org/issues/6648), but for now
|
|
78
|
+
# there's no way to do it, so we need to be explicit about how to re-exec.
|
|
79
|
+
# This may be a feature end users request at some point, but maybe by that
|
|
80
|
+
# time, we have builtin tools to do. So for now, we use an undocumented
|
|
81
|
+
# ENV variable only for our specs.
|
|
82
|
+
bundler_spec_original_cmd = ENV["BUNDLER_SPEC_ORIGINAL_CMD"]
|
|
83
|
+
if bundler_spec_original_cmd
|
|
84
|
+
require "shellwords"
|
|
85
|
+
cmd = [*Shellwords.shellsplit(bundler_spec_original_cmd), *ARGV]
|
|
86
|
+
else
|
|
87
|
+
argv0 = File.exist?($PROGRAM_NAME) ? $PROGRAM_NAME : Process.argv0
|
|
88
|
+
cmd = [argv0, *ARGV]
|
|
89
|
+
cmd.unshift(Gem.ruby) unless File.executable?(argv0)
|
|
90
|
+
end
|
|
75
91
|
|
|
76
92
|
Bundler.with_original_env do
|
|
77
93
|
Kernel.exec(
|
|
@@ -83,15 +99,15 @@ module Bundler
|
|
|
83
99
|
|
|
84
100
|
def needs_switching?
|
|
85
101
|
autoswitching_applies? &&
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
!
|
|
89
|
-
|
|
102
|
+
Bundler.settings[:version] != "system" &&
|
|
103
|
+
released?(restart_version) &&
|
|
104
|
+
!running?(restart_version) &&
|
|
105
|
+
!updating?
|
|
90
106
|
end
|
|
91
107
|
|
|
92
108
|
def autoswitching_applies?
|
|
93
109
|
ENV["BUNDLER_VERSION"].nil? &&
|
|
94
|
-
|
|
110
|
+
ruby_can_restart_with_same_arguments? &&
|
|
95
111
|
SharedHelpers.in_bundle? &&
|
|
96
112
|
lockfile_version
|
|
97
113
|
end
|
|
@@ -151,6 +167,10 @@ module Bundler
|
|
|
151
167
|
!version.to_s.end_with?(".dev")
|
|
152
168
|
end
|
|
153
169
|
|
|
170
|
+
def ruby_can_restart_with_same_arguments?
|
|
171
|
+
$PROGRAM_NAME != "-e"
|
|
172
|
+
end
|
|
173
|
+
|
|
154
174
|
def updating?
|
|
155
175
|
"update".start_with?(ARGV.first || " ") && ARGV[1..-1].any? {|a| a.start_with?("--bundler") }
|
|
156
176
|
end
|
|
@@ -7,7 +7,6 @@ module Bundler
|
|
|
7
7
|
autoload :Validator, File.expand_path("settings/validator", __dir__)
|
|
8
8
|
|
|
9
9
|
BOOL_KEYS = %w[
|
|
10
|
-
allow_deployment_source_credential_changes
|
|
11
10
|
allow_offline_install
|
|
12
11
|
auto_clean_without_path
|
|
13
12
|
auto_install
|
|
@@ -33,6 +32,7 @@ module Bundler
|
|
|
33
32
|
ignore_messages
|
|
34
33
|
init_gems_rb
|
|
35
34
|
inline
|
|
35
|
+
lockfile_checksums
|
|
36
36
|
no_install
|
|
37
37
|
no_prune
|
|
38
38
|
path_relative_to_cwd
|
|
@@ -104,6 +104,7 @@ module Bundler
|
|
|
104
104
|
def initialize(root = nil)
|
|
105
105
|
@root = root
|
|
106
106
|
@local_config = load_config(local_config_file)
|
|
107
|
+
@local_root = root || Pathname.new(".bundle").expand_path
|
|
107
108
|
|
|
108
109
|
@env_config = ENV.to_h
|
|
109
110
|
@env_config.select! {|key, _value| key.start_with?("BUNDLE_") }
|
|
@@ -143,7 +144,7 @@ module Bundler
|
|
|
143
144
|
end
|
|
144
145
|
|
|
145
146
|
def set_local(key, value)
|
|
146
|
-
local_config_file
|
|
147
|
+
local_config_file = @local_root.join("config")
|
|
147
148
|
|
|
148
149
|
set_key(key, value, @local_config, local_config_file)
|
|
149
150
|
end
|
|
@@ -189,7 +190,7 @@ module Bundler
|
|
|
189
190
|
def mirror_for(uri)
|
|
190
191
|
if uri.is_a?(String)
|
|
191
192
|
require_relative "vendored_uri"
|
|
192
|
-
uri =
|
|
193
|
+
uri = Gem::URI(uri)
|
|
193
194
|
end
|
|
194
195
|
|
|
195
196
|
gem_mirrors.for(uri.to_s).uri
|
|
@@ -425,8 +426,12 @@ module Bundler
|
|
|
425
426
|
Validator.validate!(raw_key, converted_value(value, raw_key), hash)
|
|
426
427
|
|
|
427
428
|
return unless file
|
|
429
|
+
|
|
430
|
+
SharedHelpers.filesystem_access(file.dirname, :create) do |p|
|
|
431
|
+
FileUtils.mkdir_p(p)
|
|
432
|
+
end
|
|
433
|
+
|
|
428
434
|
SharedHelpers.filesystem_access(file) do |p|
|
|
429
|
-
FileUtils.mkdir_p(p.dirname)
|
|
430
435
|
p.open("w") {|f| f.write(serializer_class.dump(hash)) }
|
|
431
436
|
end
|
|
432
437
|
end
|
|
@@ -492,16 +497,23 @@ module Bundler
|
|
|
492
497
|
valid_file = file.exist? && !file.size.zero?
|
|
493
498
|
return {} unless valid_file
|
|
494
499
|
serializer_class.load(file.read).inject({}) do |config, (k, v)|
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
"Please edit #{file} and replace any dashes in configuration keys with a triple underscore (`___`)."
|
|
500
|
+
k = k.dup
|
|
501
|
+
k << "/" if /https?:/i.match?(k) && !k.end_with?("/", "__#{FALLBACK_TIMEOUT_URI_OPTION.upcase}")
|
|
502
|
+
k.gsub!(".", "__")
|
|
499
503
|
|
|
500
|
-
|
|
501
|
-
|
|
504
|
+
unless k.start_with?("#")
|
|
505
|
+
if k.include?("-")
|
|
506
|
+
Bundler.ui.warn "Your #{file} config includes `#{k}`, which contains the dash character (`-`).\n" \
|
|
507
|
+
"This is deprecated, because configuration through `ENV` should be possible, but `ENV` keys cannot include dashes.\n" \
|
|
508
|
+
"Please edit #{file} and replace any dashes in configuration keys with a triple underscore (`___`)."
|
|
509
|
+
|
|
510
|
+
# string hash keys are frozen
|
|
511
|
+
k = k.gsub("-", "___")
|
|
512
|
+
end
|
|
513
|
+
|
|
514
|
+
config[k] = v
|
|
502
515
|
end
|
|
503
516
|
|
|
504
|
-
config[k] = v
|
|
505
517
|
config
|
|
506
518
|
end
|
|
507
519
|
end
|
|
@@ -516,26 +528,25 @@ module Bundler
|
|
|
516
528
|
YAMLSerializer
|
|
517
529
|
end
|
|
518
530
|
|
|
519
|
-
|
|
520
|
-
fallback_timeout
|
|
521
|
-
].freeze
|
|
531
|
+
FALLBACK_TIMEOUT_URI_OPTION = "fallback_timeout"
|
|
522
532
|
|
|
523
533
|
NORMALIZE_URI_OPTIONS_PATTERN =
|
|
524
534
|
/
|
|
525
535
|
\A
|
|
526
536
|
(\w+\.)? # optional prefix key
|
|
527
537
|
(https?.*?) # URI
|
|
528
|
-
(\.#{
|
|
538
|
+
(\.#{FALLBACK_TIMEOUT_URI_OPTION})? # optional suffix key
|
|
529
539
|
\z
|
|
530
540
|
/ix
|
|
531
541
|
|
|
532
542
|
def self.key_for(key)
|
|
533
|
-
key =
|
|
534
|
-
key =
|
|
543
|
+
key = key_to_s(key)
|
|
544
|
+
key = normalize_uri(key) if key.start_with?("http", "mirror.http")
|
|
545
|
+
key = key.gsub(".", "__")
|
|
535
546
|
key.gsub!("-", "___")
|
|
536
547
|
key.upcase!
|
|
537
548
|
|
|
538
|
-
key.
|
|
549
|
+
key.gsub(/\A([ #]*)/, '\1BUNDLE_')
|
|
539
550
|
end
|
|
540
551
|
|
|
541
552
|
# TODO: duplicates Rubygems#normalize_uri
|
|
@@ -549,7 +560,7 @@ module Bundler
|
|
|
549
560
|
end
|
|
550
561
|
uri = URINormalizer.normalize_suffix(uri)
|
|
551
562
|
require_relative "vendored_uri"
|
|
552
|
-
uri =
|
|
563
|
+
uri = Gem::URI(uri)
|
|
553
564
|
unless uri.absolute?
|
|
554
565
|
raise ArgumentError, format("Gem sources must be absolute. You provided '%s'.", uri)
|
|
555
566
|
end
|
|
@@ -564,7 +575,7 @@ module Bundler
|
|
|
564
575
|
key
|
|
565
576
|
when Symbol
|
|
566
577
|
key.name
|
|
567
|
-
when
|
|
578
|
+
when Gem::URI::HTTP
|
|
568
579
|
key.to_s
|
|
569
580
|
else
|
|
570
581
|
raise ArgumentError, "Invalid key: #{key.inspect}"
|
|
@@ -577,7 +588,7 @@ module Bundler
|
|
|
577
588
|
key
|
|
578
589
|
when Symbol
|
|
579
590
|
key.to_s
|
|
580
|
-
when
|
|
591
|
+
when Gem::URI::HTTP
|
|
581
592
|
key.to_s
|
|
582
593
|
else
|
|
583
594
|
raise ArgumentError, "Invalid key: #{key.inspect}"
|
|
@@ -5,6 +5,12 @@ require_relative "shared_helpers"
|
|
|
5
5
|
if Bundler::SharedHelpers.in_bundle?
|
|
6
6
|
require_relative "../bundler"
|
|
7
7
|
|
|
8
|
+
# autoswitch to locked Bundler version if available
|
|
9
|
+
Bundler.auto_switch
|
|
10
|
+
|
|
11
|
+
# try to auto_install first before we get to the `Bundler.ui.silence`, so user knows what is happening
|
|
12
|
+
Bundler.auto_install
|
|
13
|
+
|
|
8
14
|
if STDOUT.tty? || ENV["BUNDLER_FORCE_TTY"]
|
|
9
15
|
begin
|
|
10
16
|
Bundler.ui.silence { Bundler.setup }
|
|
@@ -1,14 +1,16 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
require "pathname"
|
|
4
|
-
require "rbconfig"
|
|
5
|
-
|
|
6
3
|
require_relative "version"
|
|
7
|
-
require_relative "constants"
|
|
8
4
|
require_relative "rubygems_integration"
|
|
9
5
|
require_relative "current_ruby"
|
|
10
6
|
|
|
7
|
+
autoload :Pathname, "pathname"
|
|
8
|
+
|
|
11
9
|
module Bundler
|
|
10
|
+
autoload :WINDOWS, File.expand_path("constants", __dir__)
|
|
11
|
+
autoload :FREEBSD, File.expand_path("constants", __dir__)
|
|
12
|
+
autoload :NULL, File.expand_path("constants", __dir__)
|
|
13
|
+
|
|
12
14
|
module SharedHelpers
|
|
13
15
|
def root
|
|
14
16
|
gemfile = find_gemfile
|
|
@@ -94,14 +96,16 @@ module Bundler
|
|
|
94
96
|
# given block
|
|
95
97
|
#
|
|
96
98
|
# @example
|
|
97
|
-
# filesystem_access("vendor/cache", :
|
|
99
|
+
# filesystem_access("vendor/cache", :create) do
|
|
98
100
|
# FileUtils.mkdir_p("vendor/cache")
|
|
99
101
|
# end
|
|
100
102
|
#
|
|
101
103
|
# @see {Bundler::PermissionError}
|
|
102
104
|
def filesystem_access(path, action = :write, &block)
|
|
103
105
|
yield(path.dup)
|
|
104
|
-
rescue Errno::EACCES
|
|
106
|
+
rescue Errno::EACCES => e
|
|
107
|
+
raise unless e.message.include?(path.to_s) || action == :create
|
|
108
|
+
|
|
105
109
|
raise PermissionError.new(path, action)
|
|
106
110
|
rescue Errno::EAGAIN
|
|
107
111
|
raise TemporaryResourceError.new(path, action)
|
|
@@ -111,10 +115,14 @@ module Bundler
|
|
|
111
115
|
raise NoSpaceOnDeviceError.new(path, action)
|
|
112
116
|
rescue Errno::ENOTSUP
|
|
113
117
|
raise OperationNotSupportedError.new(path, action)
|
|
118
|
+
rescue Errno::EPERM
|
|
119
|
+
raise OperationNotPermittedError.new(path, action)
|
|
120
|
+
rescue Errno::EROFS
|
|
121
|
+
raise ReadOnlyFileSystemError.new(path, action)
|
|
114
122
|
rescue Errno::EEXIST, Errno::ENOENT
|
|
115
123
|
raise
|
|
116
124
|
rescue SystemCallError => e
|
|
117
|
-
raise GenericSystemCallError.new(e, "There was an error accessing `#{path}`.")
|
|
125
|
+
raise GenericSystemCallError.new(e, "There was an error #{[:create, :write].include?(action) ? "creating" : "accessing"} `#{path}`.")
|
|
118
126
|
end
|
|
119
127
|
|
|
120
128
|
def major_deprecation(major_version, message, removed_message: nil, print_caller_location: false)
|
|
@@ -158,10 +166,10 @@ module Bundler
|
|
|
158
166
|
extra_deps = new_deps - old_deps
|
|
159
167
|
return if extra_deps.empty?
|
|
160
168
|
|
|
161
|
-
Bundler.ui.debug "#{spec.full_name} from #{spec.remote} has
|
|
169
|
+
Bundler.ui.debug "#{spec.full_name} from #{spec.remote} has corrupted API dependencies" \
|
|
162
170
|
" (was expecting #{old_deps.map(&:to_s)}, but the real spec has #{new_deps.map(&:to_s)})"
|
|
163
171
|
raise APIResponseMismatchError,
|
|
164
|
-
"Downloading #{spec.full_name} revealed dependencies not in the API
|
|
172
|
+
"Downloading #{spec.full_name} revealed dependencies not in the API (#{extra_deps.join(", ")})." \
|
|
165
173
|
"\nRunning `bundle update #{spec.name}` should fix the problem."
|
|
166
174
|
end
|
|
167
175
|
|
|
@@ -272,15 +280,7 @@ module Bundler
|
|
|
272
280
|
until !File.directory?(current) || current == previous
|
|
273
281
|
if ENV["BUNDLER_SPEC_RUN"]
|
|
274
282
|
# avoid stepping above the tmp directory when testing
|
|
275
|
-
|
|
276
|
-
# for Ruby Core
|
|
277
|
-
"lib/bundler/bundler.gemspec"
|
|
278
|
-
else
|
|
279
|
-
"bundler.gemspec"
|
|
280
|
-
end
|
|
281
|
-
|
|
282
|
-
# avoid stepping above the tmp directory when testing
|
|
283
|
-
return nil if File.file?(File.join(current, gemspec))
|
|
283
|
+
return nil if File.directory?(File.join(current, "tmp"))
|
|
284
284
|
end
|
|
285
285
|
|
|
286
286
|
names.each do |name|
|
|
@@ -312,18 +312,36 @@ module Bundler
|
|
|
312
312
|
|
|
313
313
|
def bundle_bin_path
|
|
314
314
|
# bundler exe & lib folders have same root folder, typical gem installation
|
|
315
|
-
exe_file = File.
|
|
315
|
+
exe_file = File.join(source_root, "exe/bundle")
|
|
316
316
|
|
|
317
317
|
# for Ruby core repository testing
|
|
318
|
-
exe_file = File.
|
|
318
|
+
exe_file = File.join(source_root, "libexec/bundle") unless File.exist?(exe_file)
|
|
319
319
|
|
|
320
320
|
# bundler is a default gem, exe path is separate
|
|
321
|
-
exe_file =
|
|
321
|
+
exe_file = Gem.bin_path("bundler", "bundle", VERSION) unless File.exist?(exe_file)
|
|
322
322
|
|
|
323
323
|
exe_file
|
|
324
324
|
end
|
|
325
325
|
public :bundle_bin_path
|
|
326
326
|
|
|
327
|
+
def gemspec_path
|
|
328
|
+
# inside a gem repository, typical gem installation
|
|
329
|
+
gemspec_file = File.join(source_root, "../../specifications/bundler-#{VERSION}.gemspec")
|
|
330
|
+
|
|
331
|
+
# for Ruby core repository testing
|
|
332
|
+
gemspec_file = File.expand_path("bundler.gemspec", __dir__) unless File.exist?(gemspec_file)
|
|
333
|
+
|
|
334
|
+
# bundler is a default gem
|
|
335
|
+
gemspec_file = File.join(Gem.default_specifications_dir, "bundler-#{VERSION}.gemspec") unless File.exist?(gemspec_file)
|
|
336
|
+
|
|
337
|
+
gemspec_file
|
|
338
|
+
end
|
|
339
|
+
public :gemspec_path
|
|
340
|
+
|
|
341
|
+
def source_root
|
|
342
|
+
File.expand_path("../..", __dir__)
|
|
343
|
+
end
|
|
344
|
+
|
|
327
345
|
def set_path
|
|
328
346
|
validate_bundle_path
|
|
329
347
|
paths = (ENV["PATH"] || "").split(File::PATH_SEPARATOR)
|
|
@@ -4,15 +4,12 @@ module Bundler
|
|
|
4
4
|
class Source
|
|
5
5
|
class Gemspec < Path
|
|
6
6
|
attr_reader :gemspec
|
|
7
|
+
attr_writer :checksum_store
|
|
7
8
|
|
|
8
9
|
def initialize(options)
|
|
9
10
|
super
|
|
10
11
|
@gemspec = options["gemspec"]
|
|
11
12
|
end
|
|
12
|
-
|
|
13
|
-
def as_path_source
|
|
14
|
-
Path.new(options)
|
|
15
|
-
end
|
|
16
13
|
end
|
|
17
14
|
end
|
|
18
15
|
end
|