rubygems-update 3.5.3 → 3.7.1
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 +1410 -686
- data/CODE_OF_CONDUCT.md +79 -28
- data/CONTRIBUTING.md +4 -226
- data/Manifest.txt +107 -83
- data/README.md +16 -11
- data/SECURITY.md +7 -0
- data/bundler/CHANGELOG.md +1525 -931
- data/bundler/README.md +9 -9
- data/bundler/bundler.gemspec +2 -2
- data/bundler/lib/bundler/build_metadata.rb +10 -11
- 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/common.rb +1 -1
- data/bundler/lib/bundler/cli/config.rb +2 -2
- 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 +74 -46
- 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 +19 -10
- 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 +23 -23
- 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/update.rb +3 -3
- data/bundler/lib/bundler/cli.rb +75 -145
- 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 +6 -16
- data/bundler/lib/bundler/compact_index_client.rb +52 -85
- data/bundler/lib/bundler/constants.rb +8 -1
- data/bundler/lib/bundler/current_ruby.rb +48 -34
- data/bundler/lib/bundler/definition.rb +501 -328
- data/bundler/lib/bundler/dependency.rb +93 -47
- data/bundler/lib/bundler/dsl.rb +147 -103
- 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 +18 -18
- data/bundler/lib/bundler/fetcher/compact_index.rb +16 -25
- data/bundler/lib/bundler/fetcher/dependency.rb +2 -1
- data/bundler/lib/bundler/fetcher/downloader.rb +34 -8
- data/bundler/lib/bundler/fetcher.rb +63 -26
- data/bundler/lib/bundler/force_platform.rb +0 -2
- data/bundler/lib/bundler/friendly_errors.rb +3 -2
- data/bundler/lib/bundler/gem_helper.rb +1 -1
- data/bundler/lib/bundler/gem_version_promoter.rb +42 -40
- data/bundler/lib/bundler/index.rb +7 -2
- 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 +22 -45
- data/bundler/lib/bundler/lazy_specification.rb +121 -48
- data/bundler/lib/bundler/lockfile_generator.rb +1 -1
- data/bundler/lib/bundler/lockfile_parser.rb +36 -9
- 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 +180 -138
- data/bundler/lib/bundler/man/bundle-config.1.ronn +96 -99
- 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 +46 -7
- data/bundler/lib/bundler/man/bundle-doctor.1.ronn +49 -5
- 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 +69 -28
- data/bundler/lib/bundler/man/bundle-gem.1.ronn +42 -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 +13 -5
- data/bundler/lib/bundler/man/bundle-inject.1.ronn +10 -2
- data/bundler/lib/bundler/man/bundle-install.1 +20 -17
- data/bundler/lib/bundler/man/bundle-install.1.ronn +26 -23
- 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 +17 -11
- data/bundler/lib/bundler/man/bundle-update.1.ronn +17 -9
- 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/match_platform.rb +31 -12
- 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 -52
- 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 +303 -150
- data/bundler/lib/bundler/rubygems_gem_installer.rb +40 -5
- data/bundler/lib/bundler/rubygems_integration.rb +40 -73
- data/bundler/lib/bundler/runtime.rb +48 -35
- data/bundler/lib/bundler/self_manager.rb +36 -26
- data/bundler/lib/bundler/settings/validator.rb +0 -23
- data/bundler/lib/bundler/settings.rb +36 -27
- data/bundler/lib/bundler/setup.rb +6 -0
- data/bundler/lib/bundler/shared_helpers.rb +45 -25
- data/bundler/lib/bundler/source/gemspec.rb +1 -4
- data/bundler/lib/bundler/source/git/git_proxy.rb +26 -9
- 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 +14 -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 +54 -12
- data/bundler/lib/bundler/source_map.rb +1 -1
- data/bundler/lib/bundler/spec_set.rb +227 -103
- data/bundler/lib/bundler/stub_specification.rb +29 -2
- data/bundler/lib/bundler/templates/Executable +0 -11
- 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 +17 -15
- data/bundler/lib/bundler/templates/newgem/newgem.gemspec.tt +14 -12
- data/bundler/lib/bundler/templates/newgem/rubocop.yml.tt +0 -5
- data/bundler/lib/bundler/ui/shell.rb +26 -4
- 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/README.rdoc +1 -1
- data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/timed_stack_multi.rb +2 -1
- data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb +134 -57
- 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 +10 -2
- data/bundler/lib/bundler/worker.rb +1 -1
- data/bundler/lib/bundler/yaml_serializer.rb +12 -7
- data/bundler/lib/bundler.rb +101 -61
- data/{bundler → doc/bundler}/UPGRADING.md +132 -127
- data/doc/rubygems/CONTRIBUTING.md +227 -0
- data/{POLICIES.md → doc/rubygems/POLICIES.md} +86 -17
- data/exe/update_rubygems +1 -1
- data/lib/rubygems/basic_specification.rb +50 -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 +29 -19
- 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 +13 -18
- 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 +13 -22
- data/lib/rubygems/config_file.rb +45 -16
- data/lib/rubygems/core_ext/kernel_require.rb +15 -3
- data/lib/rubygems/core_ext/kernel_warn.rb +2 -6
- data/lib/rubygems/defaults.rb +7 -7
- 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 +16 -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 +11 -4
- 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 +76 -90
- 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 +148 -43
- 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 +6 -7
- data/lib/rubygems/request.rb +5 -5
- data/lib/rubygems/request_set/gem_dependency_api.rb +1 -1
- data/lib/rubygems/request_set.rb +4 -7
- 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 +1 -29
- 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/source_set.rb +1 -1
- data/lib/rubygems/resolver/spec_specification.rb +7 -0
- data/lib/rubygems/resolver.rb +8 -8
- data/lib/rubygems/s3_uri_signer.rb +8 -6
- 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 +37 -29
- data/lib/rubygems/source_list.rb +1 -1
- data/lib/rubygems/spec_fetcher.rb +47 -15
- data/lib/rubygems/specification.rb +110 -183
- 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/uri_formatter.rb +2 -1
- data/lib/rubygems/util/licenses.rb +118 -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 +149 -70
- 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 +165 -69
- data/lib/rubygems/vendor/securerandom/COPYING +56 -0
- data/lib/rubygems/vendor/securerandom/lib/securerandom.rb +102 -0
- data/lib/rubygems/vendor/timeout/COPYING +56 -0
- data/lib/rubygems/{timeout → vendor/timeout}/lib/timeout.rb +10 -11
- data/lib/rubygems/{tsort → vendor/tsort}/lib/tsort.rb +2 -2
- 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 +160 -53
- data/rubygems-update.gemspec +11 -6
- data/setup.rb +1 -1
- metadata +124 -96
- data/bundler/lib/bundler/compact_index_client/gem_parser.rb +0 -32
- data/bundler/lib/bundler/gem_helpers.rb +0 -127
- data/bundler/lib/bundler/templates/Executable.bundler +0 -109
- data/bundler/lib/bundler/vendor/fileutils/.document +0 -1
- data/bundler/lib/bundler/vendor/net-http-persistent/.document +0 -1
- data/bundler/lib/bundler/vendor/pub_grub/.document +0 -1
- data/bundler/lib/bundler/vendor/thor/.document +0 -1
- data/bundler/lib/bundler/vendor/tsort/.document +0 -1
- data/bundler/lib/bundler/vendor/uri/.document +0 -1
- data/lib/rubygems/net/http.rb +0 -3
- data/lib/rubygems/net-http/.document +0 -1
- 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/.document +0 -1
- data/lib/rubygems/net-protocol/LICENSE.txt +0 -22
- data/lib/rubygems/optparse/.document +0 -1
- data/lib/rubygems/optparse/lib/optparse/uri.rb +0 -7
- data/lib/rubygems/optparse.rb +0 -3
- data/lib/rubygems/resolv/.document +0 -1
- data/lib/rubygems/resolv/LICENSE.txt +0 -22
- data/lib/rubygems/resolver/molinillo/.document +0 -1
- 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/ssl_certs/rubygems.org/GlobalSignRootCA.pem +0 -21
- data/lib/rubygems/timeout/.document +0 -1
- data/lib/rubygems/timeout/LICENSE.txt +0 -22
- data/lib/rubygems/timeout.rb +0 -3
- data/lib/rubygems/tsort/.document +0 -1
- 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/{MAINTAINERS.txt → doc/MAINTAINERS.txt} +0 -0
- /data/{UPGRADING.md → doc/rubygems/UPGRADING.md} +0 -0
- /data/lib/rubygems/ssl_certs/rubygems.org/{GlobalSignRootCA_R3.pem → GlobalSign.pem} +0 -0
- /data/{bundler/lib/bundler/vendor/connection_pool → lib/rubygems/vendor}/.document +0 -0
- /data/lib/rubygems/{resolver → vendor}/molinillo/LICENSE +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/{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/{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/{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
|
|
@@ -236,18 +214,11 @@ module Bundler
|
|
236
214
|
e.requirement = dep.requirement
|
237
215
|
raise e
|
238
216
|
end
|
239
|
-
|
240
|
-
# backwards compatibility shim, see https://github.com/rubygems/bundler/issues/5102
|
241
|
-
kernel_class.send(:public, :gem) if Bundler.feature_flag.setup_makes_kernel_gem_public?
|
242
217
|
end
|
243
218
|
end
|
244
219
|
|
245
|
-
# Used to
|
246
|
-
# under bundler. The new Gem.bin_path only considers gems in
|
247
|
-
# +specs+
|
220
|
+
# Used to give better error messages when activating specs outside of the current bundle
|
248
221
|
def replace_bin_path(specs_by_name)
|
249
|
-
gem_class = (class << Gem; self; end)
|
250
|
-
|
251
222
|
redefine_method(gem_class, :find_spec_for_exe) do |gem_name, *args|
|
252
223
|
exec_name = args.first
|
253
224
|
raise ArgumentError, "you must supply exec_name" unless exec_name
|
@@ -283,31 +254,6 @@ module Bundler
|
|
283
254
|
|
284
255
|
spec
|
285
256
|
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
257
|
end
|
312
258
|
|
313
259
|
# Replace or hook into RubyGems to provide a bundlerized view
|
@@ -323,8 +269,8 @@ module Bundler
|
|
323
269
|
else
|
324
270
|
Gem::BUNDLED_GEMS.replace_require(specs) if Gem::BUNDLED_GEMS.respond_to?(:replace_require)
|
325
271
|
end
|
326
|
-
replace_gem(
|
327
|
-
stub_rubygems(
|
272
|
+
replace_gem(specs_by_name)
|
273
|
+
stub_rubygems(specs_by_name.values)
|
328
274
|
replace_bin_path(specs_by_name)
|
329
275
|
|
330
276
|
Gem.clear_paths
|
@@ -342,7 +288,6 @@ module Bundler
|
|
342
288
|
default_spec_name = default_spec.name
|
343
289
|
next if specs_by_name.key?(default_spec_name)
|
344
290
|
|
345
|
-
specs << default_spec
|
346
291
|
specs_by_name[default_spec_name] = default_spec
|
347
292
|
end
|
348
293
|
|
@@ -353,11 +298,7 @@ module Bundler
|
|
353
298
|
@replaced_methods.each do |(sym, klass), method|
|
354
299
|
redefine_method(klass, sym, method)
|
355
300
|
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
|
301
|
+
post_reset_hooks.reject! {|proc| proc.binding.source_location[0] == __FILE__ }
|
361
302
|
@replaced_methods.clear
|
362
303
|
end
|
363
304
|
|
@@ -399,9 +340,13 @@ module Bundler
|
|
399
340
|
Gem::Specification.all = specs
|
400
341
|
end
|
401
342
|
|
402
|
-
redefine_method(
|
343
|
+
redefine_method(gem_class, :finish_resolve) do |*|
|
403
344
|
[]
|
404
345
|
end
|
346
|
+
|
347
|
+
redefine_method(gem_class, :load_plugins) do |*|
|
348
|
+
load_plugin_files specs.flat_map(&:plugins)
|
349
|
+
end
|
405
350
|
end
|
406
351
|
|
407
352
|
def plain_specs
|
@@ -434,7 +379,9 @@ module Bundler
|
|
434
379
|
def download_gem(spec, uri, cache_dir, fetcher)
|
435
380
|
require "rubygems/remote_fetcher"
|
436
381
|
uri = Bundler.settings.mirror_for(uri)
|
437
|
-
|
382
|
+
redacted_uri = Gem::Uri.redact(uri)
|
383
|
+
|
384
|
+
Bundler::Retry.new("download gem from #{redacted_uri}").attempts do
|
438
385
|
gem_file_name = spec.file_name
|
439
386
|
local_gem_path = File.join cache_dir, gem_file_name
|
440
387
|
return if File.exist? local_gem_path
|
@@ -456,7 +403,7 @@ module Bundler
|
|
456
403
|
end
|
457
404
|
end
|
458
405
|
rescue Gem::RemoteFetcher::FetchError => e
|
459
|
-
raise Bundler::HTTPError, "Could not download gem from #{
|
406
|
+
raise Bundler::HTTPError, "Could not download gem from #{redacted_uri} due to underlying error <#{e.message}>"
|
460
407
|
end
|
461
408
|
|
462
409
|
def build(spec, skip_validation = false)
|
@@ -469,11 +416,25 @@ module Bundler
|
|
469
416
|
end
|
470
417
|
|
471
418
|
def all_specs
|
419
|
+
SharedHelpers.major_deprecation 2, "Bundler.rubygems.all_specs has been removed in favor of Bundler.rubygems.installed_specs"
|
420
|
+
|
472
421
|
Gem::Specification.stubs.map do |stub|
|
473
422
|
StubSpecification.from_stub(stub)
|
474
423
|
end
|
475
424
|
end
|
476
425
|
|
426
|
+
def installed_specs
|
427
|
+
Gem::Specification.stubs.reject(&:default_gem?).map do |stub|
|
428
|
+
StubSpecification.from_stub(stub)
|
429
|
+
end
|
430
|
+
end
|
431
|
+
|
432
|
+
def default_specs
|
433
|
+
Gem::Specification.default_stubs.map do |stub|
|
434
|
+
StubSpecification.from_stub(stub)
|
435
|
+
end
|
436
|
+
end
|
437
|
+
|
477
438
|
def find_bundler(version)
|
478
439
|
find_name("bundler").find {|s| s.version.to_s == version }
|
479
440
|
end
|
@@ -485,6 +446,12 @@ module Bundler
|
|
485
446
|
def default_stubs
|
486
447
|
Gem::Specification.default_stubs("*.gemspec")
|
487
448
|
end
|
449
|
+
|
450
|
+
private
|
451
|
+
|
452
|
+
def gem_class
|
453
|
+
class << Gem; self; end
|
454
|
+
end
|
488
455
|
end
|
489
456
|
|
490
457
|
def self.rubygems
|
@@ -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 StandardError => 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(
|
@@ -7,13 +7,15 @@ module Bundler
|
|
7
7
|
#
|
8
8
|
class SelfManager
|
9
9
|
def restart_with_locked_bundler_if_needed
|
10
|
-
|
10
|
+
restart_version = find_restart_version
|
11
|
+
return unless restart_version && installed?(restart_version)
|
11
12
|
|
12
13
|
restart_with(restart_version)
|
13
14
|
end
|
14
15
|
|
15
16
|
def install_locked_bundler_and_restart_with_it_if_needed
|
16
|
-
|
17
|
+
restart_version = find_restart_version
|
18
|
+
return unless restart_version
|
17
19
|
|
18
20
|
if restart_version == lockfile_version
|
19
21
|
Bundler.ui.info \
|
@@ -29,8 +31,6 @@ module Bundler
|
|
29
31
|
end
|
30
32
|
|
31
33
|
def update_bundler_and_restart_with_it_if_needed(target)
|
32
|
-
return unless autoswitching_applies?
|
33
|
-
|
34
34
|
spec = resolve_update_version_from(target)
|
35
35
|
return unless spec
|
36
36
|
|
@@ -38,7 +38,7 @@ module Bundler
|
|
38
38
|
|
39
39
|
Bundler.ui.info "Updating bundler to #{version}."
|
40
40
|
|
41
|
-
install(spec)
|
41
|
+
install(spec) unless installed?(version)
|
42
42
|
|
43
43
|
restart_with(version)
|
44
44
|
end
|
@@ -68,31 +68,37 @@ module Bundler
|
|
68
68
|
|
69
69
|
def restart_with(version)
|
70
70
|
configured_gem_home = ENV["GEM_HOME"]
|
71
|
+
configured_orig_gem_home = ENV["BUNDLER_ORIG_GEM_HOME"]
|
71
72
|
configured_gem_path = ENV["GEM_PATH"]
|
73
|
+
configured_orig_gem_path = ENV["BUNDLER_ORIG_GEM_PATH"]
|
72
74
|
|
73
|
-
|
74
|
-
cmd
|
75
|
+
argv0 = File.exist?($PROGRAM_NAME) ? $PROGRAM_NAME : Process.argv0
|
76
|
+
cmd = [argv0, *ARGV]
|
77
|
+
cmd.unshift(Gem.ruby) unless File.executable?(argv0)
|
75
78
|
|
76
79
|
Bundler.with_original_env do
|
77
80
|
Kernel.exec(
|
78
|
-
{
|
81
|
+
{
|
82
|
+
"GEM_HOME" => configured_gem_home,
|
83
|
+
"BUNDLER_ORIG_GEM_HOME" => configured_orig_gem_home,
|
84
|
+
"GEM_PATH" => configured_gem_path,
|
85
|
+
"BUNDLER_ORIG_GEM_PATH" => configured_orig_gem_path,
|
86
|
+
"BUNDLER_VERSION" => version.to_s,
|
87
|
+
},
|
79
88
|
*cmd
|
80
89
|
)
|
81
90
|
end
|
82
91
|
end
|
83
92
|
|
84
|
-
def needs_switching?
|
93
|
+
def needs_switching?(restart_version)
|
85
94
|
autoswitching_applies? &&
|
86
|
-
released?(
|
87
|
-
!running?(
|
88
|
-
!updating? &&
|
89
|
-
Bundler.settings[:version] != "system"
|
95
|
+
released?(restart_version) &&
|
96
|
+
!running?(restart_version)
|
90
97
|
end
|
91
98
|
|
92
99
|
def autoswitching_applies?
|
93
100
|
ENV["BUNDLER_VERSION"].nil? &&
|
94
|
-
|
95
|
-
SharedHelpers.in_bundle? &&
|
101
|
+
ruby_can_restart_with_same_arguments? &&
|
96
102
|
lockfile_version
|
97
103
|
end
|
98
104
|
|
@@ -126,6 +132,7 @@ module Bundler
|
|
126
132
|
end
|
127
133
|
|
128
134
|
def find_latest_matching_spec(requirement)
|
135
|
+
Bundler.configure
|
129
136
|
local_result = find_latest_matching_spec_from_collection(local_specs, requirement)
|
130
137
|
return local_result if local_result && requirement.specific?
|
131
138
|
|
@@ -151,18 +158,18 @@ module Bundler
|
|
151
158
|
!version.to_s.end_with?(".dev")
|
152
159
|
end
|
153
160
|
|
154
|
-
def
|
155
|
-
|
161
|
+
def ruby_can_restart_with_same_arguments?
|
162
|
+
$PROGRAM_NAME != "-e"
|
156
163
|
end
|
157
164
|
|
158
|
-
def installed?
|
165
|
+
def installed?(restart_version)
|
159
166
|
Bundler.configure
|
160
167
|
|
161
168
|
Bundler.rubygems.find_bundler(restart_version.to_s)
|
162
169
|
end
|
163
170
|
|
164
171
|
def current_version
|
165
|
-
@current_version ||=
|
172
|
+
@current_version ||= Bundler.gem_version
|
166
173
|
end
|
167
174
|
|
168
175
|
def lockfile_version
|
@@ -174,13 +181,16 @@ module Bundler
|
|
174
181
|
@lockfile_version = nil
|
175
182
|
end
|
176
183
|
|
177
|
-
def
|
178
|
-
return
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
+
def find_restart_version
|
185
|
+
return unless SharedHelpers.in_bundle?
|
186
|
+
|
187
|
+
configured_version = Bundler.settings[:version]
|
188
|
+
return if configured_version == "system"
|
189
|
+
|
190
|
+
restart_version = configured_version == "lockfile" ? lockfile_version : Gem::Version.new(configured_version)
|
191
|
+
return unless needs_switching?(restart_version)
|
192
|
+
|
193
|
+
restart_version
|
184
194
|
end
|
185
195
|
end
|
186
196
|
end
|
@@ -74,29 +74,6 @@ module Bundler
|
|
74
74
|
fail!(key, value, "`#{other_key}` is current set to #{other_setting.inspect}", "the `#{conflicting.join("`, `")}` groups conflict")
|
75
75
|
end
|
76
76
|
end
|
77
|
-
|
78
|
-
rule %w[path], "relative paths are expanded relative to the current working directory" do |key, value, settings|
|
79
|
-
next if value.nil?
|
80
|
-
|
81
|
-
path = Pathname.new(value)
|
82
|
-
next if !path.relative? || !Bundler.feature_flag.path_relative_to_cwd?
|
83
|
-
|
84
|
-
path = path.expand_path
|
85
|
-
|
86
|
-
root = begin
|
87
|
-
Bundler.root
|
88
|
-
rescue GemfileNotFound
|
89
|
-
Pathname.pwd.expand_path
|
90
|
-
end
|
91
|
-
|
92
|
-
path = begin
|
93
|
-
path.relative_path_from(root)
|
94
|
-
rescue ArgumentError
|
95
|
-
path
|
96
|
-
end
|
97
|
-
|
98
|
-
set(settings, key, path.to_s)
|
99
|
-
end
|
100
77
|
end
|
101
78
|
end
|
102
79
|
end
|