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
@@ -9,11 +9,13 @@ bundle-update(1) -- Update your gems to the latest available versions
|
|
9
9
|
[--local]
|
10
10
|
[--ruby]
|
11
11
|
[--bundler[=VERSION]]
|
12
|
+
[--force]
|
12
13
|
[--full-index]
|
13
|
-
[--
|
14
|
+
[--gemfile=GEMFILE]
|
15
|
+
[--jobs=NUMBER]
|
14
16
|
[--quiet]
|
15
17
|
[--patch|--minor|--major]
|
16
|
-
[--
|
18
|
+
[--pre]
|
17
19
|
[--strict]
|
18
20
|
[--conservative]
|
19
21
|
|
@@ -32,13 +34,13 @@ gem.
|
|
32
34
|
* `--all`:
|
33
35
|
Update all gems specified in Gemfile.
|
34
36
|
|
35
|
-
* `--group=<
|
37
|
+
* `--group=<list>`, `-g=<list>`:
|
36
38
|
Only update the gems in the specified group. For instance, you can update all gems
|
37
39
|
in the development group with `bundle update --group development`. You can also
|
38
40
|
call `bundle update rails --group test` to update the rails gem and all gems in
|
39
41
|
the test group, for example.
|
40
42
|
|
41
|
-
* `--source=<
|
43
|
+
* `--source=<list>`:
|
42
44
|
The name of a `:git` or `:path` source used in the Gemfile(5). For
|
43
45
|
instance, with a `:git` source of `http://github.com/rails/rails.git`,
|
44
46
|
you would call `bundle update --source rails`
|
@@ -49,13 +51,19 @@ gem.
|
|
49
51
|
* `--ruby`:
|
50
52
|
Update the locked version of Ruby to the current version of Ruby.
|
51
53
|
|
52
|
-
* `--bundler`:
|
54
|
+
* `--bundler[=BUNDLER]`:
|
53
55
|
Update the locked version of bundler to the invoked bundler version.
|
54
56
|
|
57
|
+
* `--force`, `--redownload`:
|
58
|
+
Force reinstalling every gem, even if already installed.
|
59
|
+
|
55
60
|
* `--full-index`:
|
56
61
|
Fall back to using the single-file index of all gems.
|
57
62
|
|
58
|
-
* `--
|
63
|
+
* `--gemfile=GEMFILE`:
|
64
|
+
Use the specified gemfile instead of [`Gemfile(5)`][Gemfile(5)].
|
65
|
+
|
66
|
+
* `--jobs=<number>`, `-j=<number>`:
|
59
67
|
Specify the number of jobs to run in parallel. The default is the number of
|
60
68
|
available processors.
|
61
69
|
|
@@ -65,9 +73,6 @@ gem.
|
|
65
73
|
* `--quiet`:
|
66
74
|
Only output warnings and errors.
|
67
75
|
|
68
|
-
* `--redownload`:
|
69
|
-
Force downloading every gem.
|
70
|
-
|
71
76
|
* `--patch`:
|
72
77
|
Prefer updating only to next patch version.
|
73
78
|
|
@@ -77,6 +82,9 @@ gem.
|
|
77
82
|
* `--major`:
|
78
83
|
Prefer updating to next major version (default).
|
79
84
|
|
85
|
+
* `--pre`:
|
86
|
+
Always choose the highest allowed version, regardless of prerelease status.
|
87
|
+
|
80
88
|
* `--strict`:
|
81
89
|
Do not allow any gem to be updated past latest `--patch` | `--minor` | `--major`.
|
82
90
|
|
@@ -1,6 +1,6 @@
|
|
1
|
-
.\" generated with
|
2
|
-
.\"
|
3
|
-
.TH "BUNDLE\-VERSION" "1" "
|
1
|
+
.\" generated with Ronn-NG/v0.10.1
|
2
|
+
.\" http://github.com/apjanke/ronn-ng/tree/0.10.1
|
3
|
+
.TH "BUNDLE\-VERSION" "1" "July 2025" ""
|
4
4
|
.SH "NAME"
|
5
5
|
\fBbundle\-version\fR \- Prints Bundler version information
|
6
6
|
.SH "SYNOPSIS"
|
@@ -1,6 +1,6 @@
|
|
1
|
-
.\" generated with
|
2
|
-
.\"
|
3
|
-
.TH "BUNDLE\-VIZ" "1" "
|
1
|
+
.\" generated with Ronn-NG/v0.10.1
|
2
|
+
.\" http://github.com/apjanke/ronn-ng/tree/0.10.1
|
3
|
+
.TH "BUNDLE\-VIZ" "1" "July 2025" ""
|
4
4
|
.SH "NAME"
|
5
5
|
\fBbundle\-viz\fR \- Generates a visual dependency graph for your Gemfile
|
6
6
|
.SH "SYNOPSIS"
|
@@ -13,10 +13,10 @@ The associated gems must also be installed via \fBbundle install(1)\fR \fIbundle
|
|
13
13
|
\fBviz\fR command was deprecated in Bundler 2\.2\. Use bundler\-graph plugin \fIhttps://github\.com/rubygems/bundler\-graph\fR instead\.
|
14
14
|
.SH "OPTIONS"
|
15
15
|
.TP
|
16
|
-
\fB\-\-file\fR, \fB\-f\fR
|
16
|
+
\fB\-\-file=FILE\fR, \fB\-f=FILE\fR
|
17
17
|
The name to use for the generated file\. See \fB\-\-format\fR option
|
18
18
|
.TP
|
19
|
-
\fB\-\-format\fR, \fB\-F\fR
|
19
|
+
\fB\-\-format=FORMAT\fR, \fB\-F=FORMAT\fR
|
20
20
|
This is output format option\. Supported format is png, jpg, svg, dot \|\.\|\.\|\.
|
21
21
|
.TP
|
22
22
|
\fB\-\-requirements\fR, \fB\-R\fR
|
@@ -25,6 +25,6 @@ Set to show the version of each required dependency\.
|
|
25
25
|
\fB\-\-version\fR, \fB\-v\fR
|
26
26
|
Set to show each gem version\.
|
27
27
|
.TP
|
28
|
-
\fB\-\-without
|
28
|
+
\fB\-\-without=<list>\fR, \fB\-W=<list>\fR
|
29
29
|
Exclude gems that are part of the specified named group\.
|
30
30
|
|
@@ -20,13 +20,17 @@ The associated gems must also be installed via [`bundle install(1)`](bundle-inst
|
|
20
20
|
|
21
21
|
## OPTIONS
|
22
22
|
|
23
|
-
* `--file`, `-f`:
|
23
|
+
* `--file=FILE`, `-f=FILE`:
|
24
24
|
The name to use for the generated file. See `--format` option
|
25
|
-
|
25
|
+
|
26
|
+
* `--format=FORMAT`, `-F=FORMAT`:
|
26
27
|
This is output format option. Supported format is png, jpg, svg, dot ...
|
28
|
+
|
27
29
|
* `--requirements`, `-R`:
|
28
30
|
Set to show the version of each required dependency.
|
31
|
+
|
29
32
|
* `--version`, `-v`:
|
30
33
|
Set to show each gem version.
|
31
|
-
|
34
|
+
|
35
|
+
* `--without=<list>`, `-W=<list>`:
|
32
36
|
Exclude gems that are part of the specified named group.
|
@@ -1,6 +1,6 @@
|
|
1
|
-
.\" generated with
|
2
|
-
.\"
|
3
|
-
.TH "BUNDLE" "1" "
|
1
|
+
.\" generated with Ronn-NG/v0.10.1
|
2
|
+
.\" http://github.com/apjanke/ronn-ng/tree/0.10.1
|
3
|
+
.TH "BUNDLE" "1" "July 2025" ""
|
4
4
|
.SH "NAME"
|
5
5
|
\fBbundle\fR \- Ruby Dependency Management
|
6
6
|
.SH "SYNOPSIS"
|
@@ -1,6 +1,6 @@
|
|
1
|
-
.\" generated with
|
2
|
-
.\"
|
3
|
-
.TH "GEMFILE" "5" "
|
1
|
+
.\" generated with Ronn-NG/v0.10.1
|
2
|
+
.\" http://github.com/apjanke/ronn-ng/tree/0.10.1
|
3
|
+
.TH "GEMFILE" "5" "July 2025" ""
|
4
4
|
.SH "NAME"
|
5
5
|
\fBGemfile\fR \- A format for describing gem dependencies for Ruby programs
|
6
6
|
.SH "SYNOPSIS"
|
@@ -72,7 +72,7 @@ A Ruby engine is an implementation of the Ruby language\.
|
|
72
72
|
.IP "\(bu" 4
|
73
73
|
For background: the reference or original implementation of the Ruby programming language is called Matz's Ruby Interpreter \fIhttps://en\.wikipedia\.org/wiki/Ruby_MRI\fR, or MRI for short\. This is named after Ruby creator Yukihiro Matsumoto, also known as Matz\. MRI is also known as CRuby, because it is written in C\. MRI is the most widely used Ruby engine\.
|
74
74
|
.IP "\(bu" 4
|
75
|
-
Other implementations \fIhttps://www\.ruby\-lang\.org/en/about/\fR of Ruby exist\. Some of the more well\-known implementations include JRuby \
|
75
|
+
Other implementations \fIhttps://www\.ruby\-lang\.org/en/about/\fR of Ruby exist\. Some of the more well\-known implementations include JRuby \fIhttps://www\.jruby\.org/\fR and TruffleRuby \fIhttps://www\.graalvm\.org/ruby/\fR\. Rubinius is an alternative implementation of Ruby written in Ruby\. JRuby is an implementation of Ruby on the JVM, short for Java Virtual Machine\. TruffleRuby is a Ruby implementation on the GraalVM, a language toolkit built on the JVM\.
|
76
76
|
.IP "" 0
|
77
77
|
.SS "ENGINE VERSION"
|
78
78
|
Each application \fImay\fR specify a Ruby engine version\. If an engine version is specified, an engine \fImust\fR also be specified\. If the engine is "ruby" the engine version specified \fImust\fR match the Ruby version\.
|
@@ -216,6 +216,8 @@ The following platform values are deprecated and should be replaced with \fBwind
|
|
216
216
|
.IP "\(bu" 4
|
217
217
|
\fBmswin\fR, \fBmswin64\fR, \fBmingw32\fR, \fBx64_mingw\fR
|
218
218
|
.IP "" 0
|
219
|
+
.P
|
220
|
+
Note that, while unfortunately using the same terminology, the values of this option are different from the values that \fBbundle lock \-\-add\-platform\fR can take\. The values of this option are more closer to "Ruby Implementation" while the values that \fBbundle lock \-\-add\-platform\fR understands are more related to OS and architecture of the different systems where your lockfile will be used\.
|
219
221
|
.SS "FORCE_RUBY_PLATFORM"
|
220
222
|
If you always want the pure ruby variant of a gem to be chosen over platform specific variants, you can use the \fBforce_ruby_platform\fR option:
|
221
223
|
.IP "" 4
|
@@ -449,7 +451,7 @@ end
|
|
449
451
|
.fi
|
450
452
|
.IP "" 0
|
451
453
|
.SH "GEMSPEC"
|
452
|
-
The \fB\.gemspec\fR \
|
454
|
+
The \fB\.gemspec\fR \fIhttps://guides\.rubygems\.org/specification\-reference/\fR file is where you provide metadata about your gem to Rubygems\. Some required Gemspec attributes include the name, description, and homepage of your gem\. This is also where you specify the dependencies your gem needs to run\.
|
453
455
|
.P
|
454
456
|
If you wish to use Bundler to help install dependencies for a gem while it is being developed, use the \fBgemspec\fR method to pull in the dependencies listed in the \fB\.gemspec\fR file\.
|
455
457
|
.P
|
@@ -96,7 +96,7 @@ What exactly is an Engine?
|
|
96
96
|
|
97
97
|
- [Other implementations](https://www.ruby-lang.org/en/about/) of Ruby exist.
|
98
98
|
Some of the more well-known implementations include
|
99
|
-
[JRuby](
|
99
|
+
[JRuby](https://www.jruby.org/) and [TruffleRuby](https://www.graalvm.org/ruby/).
|
100
100
|
Rubinius is an alternative implementation of Ruby written in Ruby.
|
101
101
|
JRuby is an implementation of Ruby on the JVM, short for Java Virtual Machine.
|
102
102
|
TruffleRuby is a Ruby implementation on the GraalVM, a language toolkit built on the JVM.
|
@@ -242,6 +242,12 @@ The following platform values are deprecated and should be replaced with `window
|
|
242
242
|
|
243
243
|
* `mswin`, `mswin64`, `mingw32`, `x64_mingw`
|
244
244
|
|
245
|
+
Note that, while unfortunately using the same terminology, the values of this
|
246
|
+
option are different from the values that `bundle lock --add-platform` can take.
|
247
|
+
The values of this option are more closer to "Ruby Implementation" while the
|
248
|
+
values that `bundle lock --add-platform` understands are more related to OS and
|
249
|
+
architecture of the different systems where your lockfile will be used.
|
250
|
+
|
245
251
|
### FORCE_RUBY_PLATFORM
|
246
252
|
|
247
253
|
If you always want the pure ruby variant of a gem to be chosen over platform
|
@@ -509,7 +515,7 @@ software is installed or some other conditions are met.
|
|
509
515
|
|
510
516
|
## GEMSPEC
|
511
517
|
|
512
|
-
The [`.gemspec`](
|
518
|
+
The [`.gemspec`](https://guides.rubygems.org/specification-reference/) file is where
|
513
519
|
you provide metadata about your gem to Rubygems. Some required Gemspec
|
514
520
|
attributes include the name, description, and homepage of your gem. This is
|
515
521
|
also where you specify the dependencies your gem needs to run.
|
@@ -8,13 +8,17 @@ bundle-clean(1) bundle-clean.1
|
|
8
8
|
bundle-config(1) bundle-config.1
|
9
9
|
bundle-console(1) bundle-console.1
|
10
10
|
bundle-doctor(1) bundle-doctor.1
|
11
|
+
bundle-env(1) bundle-env.1
|
11
12
|
bundle-exec(1) bundle-exec.1
|
13
|
+
bundle-fund(1) bundle-fund.1
|
12
14
|
bundle-gem(1) bundle-gem.1
|
13
15
|
bundle-help(1) bundle-help.1
|
14
16
|
bundle-info(1) bundle-info.1
|
15
17
|
bundle-init(1) bundle-init.1
|
16
18
|
bundle-inject(1) bundle-inject.1
|
17
19
|
bundle-install(1) bundle-install.1
|
20
|
+
bundle-issue(1) bundle-issue.1
|
21
|
+
bundle-licenses(1) bundle-licenses.1
|
18
22
|
bundle-list(1) bundle-list.1
|
19
23
|
bundle-lock(1) bundle-lock.1
|
20
24
|
bundle-open(1) bundle-open.1
|
@@ -13,5 +13,18 @@ module Bundler
|
|
13
13
|
def matches_current_rubygems?
|
14
14
|
@required_rubygems_version.satisfied_by?(Gem.rubygems_version)
|
15
15
|
end
|
16
|
+
|
17
|
+
def expanded_dependencies
|
18
|
+
runtime_dependencies + [
|
19
|
+
metadata_dependency("Ruby", @required_ruby_version),
|
20
|
+
metadata_dependency("RubyGems", @required_rubygems_version),
|
21
|
+
].compact
|
22
|
+
end
|
23
|
+
|
24
|
+
def metadata_dependency(name, requirement)
|
25
|
+
return if requirement.nil? || requirement.none?
|
26
|
+
|
27
|
+
Gem::Dependency.new("#{name}\0", requirement)
|
28
|
+
end
|
16
29
|
end
|
17
30
|
end
|
@@ -1,23 +1,42 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require_relative "gem_helpers"
|
4
|
-
|
5
3
|
module Bundler
|
6
4
|
module MatchPlatform
|
7
|
-
|
5
|
+
def installable_on_platform?(target_platform) # :nodoc:
|
6
|
+
return true if [Gem::Platform::RUBY, nil, target_platform].include?(platform)
|
7
|
+
return true if Gem::Platform.new(platform) === target_platform
|
8
8
|
|
9
|
-
|
10
|
-
MatchPlatform.platforms_match?(platform, p)
|
9
|
+
false
|
11
10
|
end
|
12
11
|
|
13
|
-
def self.
|
14
|
-
|
15
|
-
return true if gemspec_platform == Gem::Platform::RUBY
|
16
|
-
return true if local_platform == gemspec_platform
|
17
|
-
gemspec_platform = Gem::Platform.new(gemspec_platform)
|
18
|
-
return true if gemspec_platform === local_platform
|
12
|
+
def self.select_best_platform_match(specs, platform, force_ruby: false, prefer_locked: false)
|
13
|
+
matching = select_all_platform_match(specs, platform, force_ruby: force_ruby, prefer_locked: prefer_locked)
|
19
14
|
|
20
|
-
|
15
|
+
Gem::Platform.sort_and_filter_best_platform_match(matching, platform)
|
16
|
+
end
|
17
|
+
|
18
|
+
def self.select_best_local_platform_match(specs, force_ruby: false)
|
19
|
+
local = Bundler.local_platform
|
20
|
+
matching = select_all_platform_match(specs, local, force_ruby: force_ruby).filter_map(&:materialized_for_installation)
|
21
|
+
|
22
|
+
Gem::Platform.sort_best_platform_match(matching, local)
|
23
|
+
end
|
24
|
+
|
25
|
+
def self.select_all_platform_match(specs, platform, force_ruby: false, prefer_locked: false)
|
26
|
+
matching = specs.select {|spec| spec.installable_on_platform?(force_ruby ? Gem::Platform::RUBY : platform) }
|
27
|
+
|
28
|
+
specs.each(&:force_ruby_platform!) if force_ruby
|
29
|
+
|
30
|
+
if prefer_locked
|
31
|
+
locked_originally = matching.select {|spec| spec.is_a?(::Bundler::LazySpecification) }
|
32
|
+
return locked_originally if locked_originally.any?
|
33
|
+
end
|
34
|
+
|
35
|
+
matching
|
36
|
+
end
|
37
|
+
|
38
|
+
def self.generic_local_platform_is_ruby?
|
39
|
+
Bundler.generic_local_platform == Gem::Platform::RUBY
|
21
40
|
end
|
22
41
|
end
|
23
42
|
end
|
@@ -0,0 +1,59 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Bundler
|
4
|
+
#
|
5
|
+
# This class materializes a set of resolved specifications (`LazySpecification`)
|
6
|
+
# for a given gem into the most appropriate real specifications
|
7
|
+
# (`StubSepecification`, `EndpointSpecification`, etc), given a dependency and a
|
8
|
+
# target platform.
|
9
|
+
#
|
10
|
+
class Materialization
|
11
|
+
def initialize(dep, platform, candidates:)
|
12
|
+
@dep = dep
|
13
|
+
@platform = platform
|
14
|
+
@candidates = candidates
|
15
|
+
end
|
16
|
+
|
17
|
+
def complete?
|
18
|
+
specs.any?
|
19
|
+
end
|
20
|
+
|
21
|
+
def specs
|
22
|
+
@specs ||= if @candidates.nil?
|
23
|
+
[]
|
24
|
+
elsif platform
|
25
|
+
MatchPlatform.select_best_platform_match(@candidates, platform, force_ruby: dep.force_ruby_platform)
|
26
|
+
else
|
27
|
+
MatchPlatform.select_best_local_platform_match(@candidates, force_ruby: dep.force_ruby_platform || dep.default_force_ruby_platform)
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
def dependencies
|
32
|
+
specs.first.runtime_dependencies.map {|d| [d, platform] }
|
33
|
+
end
|
34
|
+
|
35
|
+
def materialized_spec
|
36
|
+
specs.reject(&:missing?).first&.materialization
|
37
|
+
end
|
38
|
+
|
39
|
+
def completely_missing_specs
|
40
|
+
return [] unless specs.all?(&:missing?)
|
41
|
+
|
42
|
+
specs
|
43
|
+
end
|
44
|
+
|
45
|
+
def partially_missing_specs
|
46
|
+
specs.select(&:missing?)
|
47
|
+
end
|
48
|
+
|
49
|
+
def incomplete_specs
|
50
|
+
return [] if complete?
|
51
|
+
|
52
|
+
@candidates || LazySpecification.new(dep.name, nil, nil)
|
53
|
+
end
|
54
|
+
|
55
|
+
private
|
56
|
+
|
57
|
+
attr_reader :dep, :platform
|
58
|
+
end
|
59
|
+
end
|
@@ -47,7 +47,7 @@ module Bundler
|
|
47
47
|
|
48
48
|
def fetch_valid_mirror_for(uri)
|
49
49
|
downcased = uri.to_s.downcase
|
50
|
-
mirror = @mirrors[downcased] || @mirrors[
|
50
|
+
mirror = @mirrors[downcased] || @mirrors[Gem::URI(downcased).host] || Mirror.new(uri)
|
51
51
|
mirror.validate!(@prober)
|
52
52
|
mirror = Mirror.new(uri) unless mirror.valid?
|
53
53
|
mirror
|
@@ -74,7 +74,7 @@ module Bundler
|
|
74
74
|
@uri = if uri.nil?
|
75
75
|
nil
|
76
76
|
else
|
77
|
-
|
77
|
+
Gem::URI(uri.to_s)
|
78
78
|
end
|
79
79
|
@valid = nil
|
80
80
|
end
|
@@ -126,7 +126,7 @@ module Bundler
|
|
126
126
|
if uri == "all"
|
127
127
|
@all = true
|
128
128
|
else
|
129
|
-
@uri =
|
129
|
+
@uri = Gem::URI(uri).absolute? ? Settings.normalize_uri(uri) : uri
|
130
130
|
end
|
131
131
|
@value = value
|
132
132
|
end
|
@@ -67,7 +67,7 @@ module Bundler
|
|
67
67
|
# to check out same version of gem later.
|
68
68
|
#
|
69
69
|
# There options are passed when the source plugin is created from the
|
70
|
-
#
|
70
|
+
# lockfile.
|
71
71
|
#
|
72
72
|
# @return [Hash]
|
73
73
|
def options_to_lock
|
@@ -107,7 +107,7 @@ module Bundler
|
|
107
107
|
def install_path
|
108
108
|
@install_path ||=
|
109
109
|
begin
|
110
|
-
base_name = File.basename(
|
110
|
+
base_name = File.basename(Gem::URI.parse(uri).normalize.path)
|
111
111
|
|
112
112
|
gem_install_dir.join("#{base_name}-#{uri_hash[0..11]}")
|
113
113
|
end
|
@@ -131,7 +131,7 @@ module Bundler
|
|
131
131
|
Bundler::Index.build do |index|
|
132
132
|
files.each do |file|
|
133
133
|
next unless spec = Bundler.load_gemspec(file)
|
134
|
-
|
134
|
+
spec.installed_by_version = Gem::VERSION
|
135
135
|
|
136
136
|
spec.source = self
|
137
137
|
Bundler.rubygems.validate(spec)
|
@@ -176,7 +176,7 @@ module Bundler
|
|
176
176
|
#
|
177
177
|
# This is used by `app_cache_path`
|
178
178
|
def app_cache_dirname
|
179
|
-
base_name = File.basename(
|
179
|
+
base_name = File.basename(Gem::URI.parse(uri).normalize.path)
|
180
180
|
"#{base_name}-#{uri_hash}"
|
181
181
|
end
|
182
182
|
|
@@ -196,6 +196,7 @@ module Bundler
|
|
196
196
|
|
197
197
|
FileUtils.rm_rf(new_cache_path)
|
198
198
|
FileUtils.cp_r(install_path, new_cache_path)
|
199
|
+
FileUtils.rm_rf(app_cache_path.join(".git"))
|
199
200
|
FileUtils.touch(app_cache_path.join(".bundlecache"))
|
200
201
|
end
|
201
202
|
|
@@ -56,6 +56,30 @@ module Bundler
|
|
56
56
|
# Includes an Array of Bundler::Dependency objects
|
57
57
|
# GEM_AFTER_INSTALL_ALL = "after-install-all"
|
58
58
|
define :GEM_AFTER_INSTALL_ALL, "after-install-all"
|
59
|
+
|
60
|
+
# @!parse
|
61
|
+
# A hook called before each individual gem is required
|
62
|
+
# Includes a Bundler::Dependency.
|
63
|
+
# GEM_BEFORE_REQUIRE = "before-require"
|
64
|
+
define :GEM_BEFORE_REQUIRE, "before-require"
|
65
|
+
|
66
|
+
# @!parse
|
67
|
+
# A hook called after each individual gem is required
|
68
|
+
# Includes a Bundler::Dependency.
|
69
|
+
# GEM_AFTER_REQUIRE = "after-require"
|
70
|
+
define :GEM_AFTER_REQUIRE, "after-require"
|
71
|
+
|
72
|
+
# @!parse
|
73
|
+
# A hook called before any gems require
|
74
|
+
# Includes an Array of Bundler::Dependency objects.
|
75
|
+
# GEM_BEFORE_REQUIRE_ALL = "before-require-all"
|
76
|
+
define :GEM_BEFORE_REQUIRE_ALL, "before-require-all"
|
77
|
+
|
78
|
+
# @!parse
|
79
|
+
# A hook called after all gems required
|
80
|
+
# Includes an Array of Bundler::Dependency objects.
|
81
|
+
# GEM_AFTER_REQUIRE_ALL = "after-require-all"
|
82
|
+
define :GEM_AFTER_REQUIRE_ALL, "after-require-all"
|
59
83
|
end
|
60
84
|
end
|
61
85
|
end
|
@@ -31,9 +31,13 @@ module Bundler
|
|
31
31
|
|
32
32
|
begin
|
33
33
|
load_index(global_index_file, true)
|
34
|
-
rescue
|
34
|
+
rescue PermissionError
|
35
35
|
# no need to fail when on a read-only FS, for example
|
36
36
|
nil
|
37
|
+
rescue ArgumentError => e
|
38
|
+
# ruby 3.4 checks writability in Dir.tmpdir
|
39
|
+
raise unless e.message&.include?("could not find a temporary directory")
|
40
|
+
nil
|
37
41
|
end
|
38
42
|
load_index(local_index_file) if SharedHelpers.in_bundle?
|
39
43
|
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Bundler
|
4
|
+
module Plugin
|
5
|
+
class Installer
|
6
|
+
class Path < Bundler::Source::Path
|
7
|
+
def root
|
8
|
+
SharedHelpers.in_bundle? ? Bundler.root : Plugin.root
|
9
|
+
end
|
10
|
+
|
11
|
+
def eql?(other)
|
12
|
+
return unless other.class == self.class
|
13
|
+
expanded_original_path == other.expanded_original_path &&
|
14
|
+
version == other.version
|
15
|
+
end
|
16
|
+
|
17
|
+
alias_method :==, :eql?
|
18
|
+
|
19
|
+
def generate_bin(spec, disable_extensions = false)
|
20
|
+
# Need to find a way without code duplication
|
21
|
+
# For now, we can ignore this
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -10,6 +10,7 @@ module Bundler
|
|
10
10
|
class Installer
|
11
11
|
autoload :Rubygems, File.expand_path("installer/rubygems", __dir__)
|
12
12
|
autoload :Git, File.expand_path("installer/git", __dir__)
|
13
|
+
autoload :Path, File.expand_path("installer/path", __dir__)
|
13
14
|
|
14
15
|
def install(names, options)
|
15
16
|
check_sources_consistency!(options)
|
@@ -18,8 +19,8 @@ module Bundler
|
|
18
19
|
|
19
20
|
if options[:git]
|
20
21
|
install_git(names, version, options)
|
21
|
-
elsif options[:
|
22
|
-
|
22
|
+
elsif options[:path]
|
23
|
+
install_path(names, version, options[:path])
|
23
24
|
else
|
24
25
|
sources = options[:source] || Gem.sources
|
25
26
|
install_rubygems(names, version, sources)
|
@@ -33,7 +34,7 @@ module Bundler
|
|
33
34
|
# @return [Hash] map of names to their specs they are installed with
|
34
35
|
def install_definition(definition)
|
35
36
|
def definition.lock(*); end
|
36
|
-
definition.
|
37
|
+
definition.remotely!
|
37
38
|
specs = definition.specs
|
38
39
|
|
39
40
|
install_from_specs specs
|
@@ -45,20 +46,40 @@ module Bundler
|
|
45
46
|
if options.key?(:git) && options.key?(:local_git)
|
46
47
|
raise InvalidOption, "Remote and local plugin git sources can't be both specified"
|
47
48
|
end
|
49
|
+
|
50
|
+
# back-compat; local_git is an alias for git
|
51
|
+
if options.key?(:local_git)
|
52
|
+
Bundler::SharedHelpers.major_deprecation(2, "--local_git is deprecated, use --git")
|
53
|
+
options[:git] = options.delete(:local_git)
|
54
|
+
end
|
55
|
+
|
56
|
+
if (options.keys & [:source, :git, :path]).length > 1
|
57
|
+
raise InvalidOption, "Only one of --source, --git, or --path may be specified"
|
58
|
+
end
|
59
|
+
|
60
|
+
if (options.key?(:branch) || options.key?(:ref)) && !options.key?(:git)
|
61
|
+
raise InvalidOption, "--#{options.key?(:branch) ? "branch" : "ref"} can only be used with git sources"
|
62
|
+
end
|
63
|
+
|
64
|
+
if options.key?(:branch) && options.key?(:ref)
|
65
|
+
raise InvalidOption, "--branch and --ref can't be both specified"
|
66
|
+
end
|
48
67
|
end
|
49
68
|
|
50
69
|
def install_git(names, version, options)
|
51
|
-
|
52
|
-
|
70
|
+
source_list = SourceList.new
|
71
|
+
source = source_list.add_git_source({ "uri" => options[:git],
|
72
|
+
"branch" => options[:branch],
|
73
|
+
"ref" => options[:ref] })
|
53
74
|
|
54
|
-
install_all_sources(names, version,
|
75
|
+
install_all_sources(names, version, source_list, source)
|
55
76
|
end
|
56
77
|
|
57
|
-
def
|
58
|
-
|
59
|
-
|
78
|
+
def install_path(names, version, path)
|
79
|
+
source_list = SourceList.new
|
80
|
+
source = source_list.add_path_source({ "path" => path, "root_path" => SharedHelpers.pwd })
|
60
81
|
|
61
|
-
install_all_sources(names, version,
|
82
|
+
install_all_sources(names, version, source_list, source)
|
62
83
|
end
|
63
84
|
|
64
85
|
# Installs the plugin from rubygems source and returns the path where the
|
@@ -70,16 +91,15 @@ module Bundler
|
|
70
91
|
#
|
71
92
|
# @return [Hash] map of names to the specs of plugins installed
|
72
93
|
def install_rubygems(names, version, sources)
|
73
|
-
install_all_sources(names, version, nil, sources)
|
74
|
-
end
|
75
|
-
|
76
|
-
def install_all_sources(names, version, git_source_options, rubygems_source)
|
77
94
|
source_list = SourceList.new
|
78
95
|
|
79
|
-
source_list.
|
80
|
-
|
96
|
+
Array(sources).each {|remote| source_list.add_global_rubygems_remote(remote) }
|
97
|
+
|
98
|
+
install_all_sources(names, version, source_list)
|
99
|
+
end
|
81
100
|
|
82
|
-
|
101
|
+
def install_all_sources(names, version, source_list, source = nil)
|
102
|
+
deps = names.map {|name| Dependency.new(name, version, { "source" => source }) }
|
83
103
|
|
84
104
|
Bundler.configure_gem_home_and_path(Plugin.root)
|
85
105
|
|
@@ -9,6 +9,10 @@ module Bundler
|
|
9
9
|
add_source_to_list Plugin::Installer::Git.new(options), git_sources
|
10
10
|
end
|
11
11
|
|
12
|
+
def add_path_source(options = {})
|
13
|
+
add_source_to_list Plugin::Installer::Path.new(options), path_sources
|
14
|
+
end
|
15
|
+
|
12
16
|
def add_rubygems_source(options = {})
|
13
17
|
add_source_to_list Plugin::Installer::Rubygems.new(options), @rubygems_sources
|
14
18
|
end
|
@@ -17,10 +21,6 @@ module Bundler
|
|
17
21
|
path_sources + git_sources + rubygems_sources + [metadata_source]
|
18
22
|
end
|
19
23
|
|
20
|
-
def default_source
|
21
|
-
git_sources.first || global_rubygems_source
|
22
|
-
end
|
23
|
-
|
24
24
|
private
|
25
25
|
|
26
26
|
def rubygems_aggregate_class
|