rubygems-update 3.5.5 → 3.6.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +606 -1
- data/CODE_OF_CONDUCT.md +79 -28
- data/Manifest.txt +114 -73
- data/README.md +16 -11
- data/bundler/CHANGELOG.md +506 -6
- data/bundler/README.md +2 -2
- data/bundler/bundler.gemspec +2 -2
- data/bundler/lib/bundler/build_metadata.rb +2 -2
- data/bundler/lib/bundler/checksum.rb +22 -12
- data/bundler/lib/bundler/cli/add.rb +3 -1
- data/bundler/lib/bundler/cli/binstubs.rb +1 -1
- data/bundler/lib/bundler/cli/check.rb +3 -3
- data/bundler/lib/bundler/cli/console.rb +8 -10
- data/bundler/lib/bundler/cli/doctor/diagnose.rb +167 -0
- data/bundler/lib/bundler/cli/doctor/ssl.rb +249 -0
- data/bundler/lib/bundler/cli/doctor.rb +27 -151
- data/bundler/lib/bundler/cli/exec.rb +1 -0
- data/bundler/lib/bundler/cli/fund.rb +1 -1
- data/bundler/lib/bundler/cli/gem.rb +13 -17
- data/bundler/lib/bundler/cli/info.rb +6 -6
- data/bundler/lib/bundler/cli/inject.rb +3 -3
- data/bundler/lib/bundler/cli/install.rb +14 -5
- data/bundler/lib/bundler/cli/issue.rb +3 -3
- data/bundler/lib/bundler/cli/lock.rb +32 -11
- data/bundler/lib/bundler/cli/outdated.rb +22 -22
- data/bundler/lib/bundler/cli/plugin.rb +3 -2
- data/bundler/lib/bundler/cli/pristine.rb +1 -1
- data/bundler/lib/bundler/cli/show.rb +3 -3
- data/bundler/lib/bundler/cli.rb +51 -107
- data/bundler/lib/bundler/compact_index_client/cache.rb +48 -73
- data/bundler/lib/bundler/compact_index_client/cache_file.rb +0 -5
- data/bundler/lib/bundler/compact_index_client/parser.rb +84 -0
- data/bundler/lib/bundler/compact_index_client/updater.rb +2 -12
- data/bundler/lib/bundler/compact_index_client.rb +51 -80
- data/bundler/lib/bundler/constants.rb +8 -1
- data/bundler/lib/bundler/current_ruby.rb +23 -33
- data/bundler/lib/bundler/definition.rb +485 -313
- data/bundler/lib/bundler/dependency.rb +92 -46
- data/bundler/lib/bundler/dsl.rb +135 -101
- data/bundler/lib/bundler/endpoint_specification.rb +30 -3
- data/bundler/lib/bundler/env.rb +1 -1
- data/bundler/lib/bundler/environment_preserver.rb +5 -23
- data/bundler/lib/bundler/errors.rb +53 -5
- data/bundler/lib/bundler/feature_flag.rb +3 -6
- data/bundler/lib/bundler/fetcher/compact_index.rb +16 -25
- data/bundler/lib/bundler/fetcher/downloader.rb +1 -1
- data/bundler/lib/bundler/fetcher.rb +14 -7
- data/bundler/lib/bundler/force_platform.rb +0 -2
- data/bundler/lib/bundler/friendly_errors.rb +1 -1
- data/bundler/lib/bundler/gem_helper.rb +1 -1
- data/bundler/lib/bundler/gem_helpers.rb +36 -19
- data/bundler/lib/bundler/gem_version_promoter.rb +42 -40
- data/bundler/lib/bundler/injector.rb +14 -16
- data/bundler/lib/bundler/inline.rb +42 -17
- data/bundler/lib/bundler/installer/gem_installer.rb +4 -3
- data/bundler/lib/bundler/installer/parallel_installer.rb +3 -2
- data/bundler/lib/bundler/installer/standalone.rb +2 -5
- data/bundler/lib/bundler/installer.rb +17 -41
- data/bundler/lib/bundler/lazy_specification.rb +117 -46
- data/bundler/lib/bundler/lockfile_generator.rb +1 -1
- data/bundler/lib/bundler/lockfile_parser.rb +18 -7
- data/bundler/lib/bundler/man/bundle-add.1 +44 -27
- data/bundler/lib/bundler/man/bundle-add.1.ronn +52 -23
- data/bundler/lib/bundler/man/bundle-binstubs.1 +9 -6
- data/bundler/lib/bundler/man/bundle-binstubs.1.ronn +6 -3
- data/bundler/lib/bundler/man/bundle-cache.1 +32 -4
- data/bundler/lib/bundler/man/bundle-cache.1.ronn +31 -2
- data/bundler/lib/bundler/man/bundle-check.1 +7 -5
- data/bundler/lib/bundler/man/bundle-check.1.ronn +7 -2
- data/bundler/lib/bundler/man/bundle-clean.1 +3 -3
- data/bundler/lib/bundler/man/bundle-config.1 +11 -15
- data/bundler/lib/bundler/man/bundle-config.1.ronn +12 -15
- data/bundler/lib/bundler/man/bundle-console.1 +4 -6
- data/bundler/lib/bundler/man/bundle-console.1.ronn +2 -7
- data/bundler/lib/bundler/man/bundle-doctor.1 +4 -4
- data/bundler/lib/bundler/man/bundle-doctor.1.ronn +1 -1
- data/bundler/lib/bundler/man/bundle-env.1 +9 -0
- data/bundler/lib/bundler/man/bundle-env.1.ronn +10 -0
- data/bundler/lib/bundler/man/bundle-exec.1 +9 -6
- data/bundler/lib/bundler/man/bundle-exec.1.ronn +6 -3
- data/bundler/lib/bundler/man/bundle-fund.1 +22 -0
- data/bundler/lib/bundler/man/bundle-fund.1.ronn +25 -0
- data/bundler/lib/bundler/man/bundle-gem.1 +25 -7
- data/bundler/lib/bundler/man/bundle-gem.1.ronn +38 -6
- data/bundler/lib/bundler/man/bundle-help.1 +3 -3
- data/bundler/lib/bundler/man/bundle-info.1 +7 -4
- data/bundler/lib/bundler/man/bundle-info.1.ronn +6 -2
- data/bundler/lib/bundler/man/bundle-init.1 +5 -5
- data/bundler/lib/bundler/man/bundle-init.1.ronn +3 -2
- data/bundler/lib/bundler/man/bundle-inject.1 +12 -4
- data/bundler/lib/bundler/man/bundle-inject.1.ronn +9 -1
- data/bundler/lib/bundler/man/bundle-install.1 +19 -16
- data/bundler/lib/bundler/man/bundle-install.1.ronn +24 -20
- data/bundler/lib/bundler/man/bundle-issue.1 +45 -0
- data/bundler/lib/bundler/man/bundle-issue.1.ronn +37 -0
- data/bundler/lib/bundler/man/bundle-licenses.1 +9 -0
- data/bundler/lib/bundler/man/bundle-licenses.1.ronn +10 -0
- data/bundler/lib/bundler/man/bundle-list.1 +3 -3
- data/bundler/lib/bundler/man/bundle-list.1.ronn +4 -1
- data/bundler/lib/bundler/man/bundle-lock.1 +23 -8
- data/bundler/lib/bundler/man/bundle-lock.1.ronn +25 -4
- data/bundler/lib/bundler/man/bundle-open.1 +4 -4
- data/bundler/lib/bundler/man/bundle-open.1.ronn +2 -1
- data/bundler/lib/bundler/man/bundle-outdated.1 +10 -7
- data/bundler/lib/bundler/man/bundle-outdated.1.ronn +8 -4
- data/bundler/lib/bundler/man/bundle-platform.1 +3 -3
- data/bundler/lib/bundler/man/bundle-plugin.1 +9 -6
- data/bundler/lib/bundler/man/bundle-plugin.1.ronn +7 -3
- data/bundler/lib/bundler/man/bundle-pristine.1 +3 -3
- data/bundler/lib/bundler/man/bundle-pristine.1.ronn +1 -1
- data/bundler/lib/bundler/man/bundle-remove.1 +3 -3
- data/bundler/lib/bundler/man/bundle-remove.1.ronn +1 -1
- data/bundler/lib/bundler/man/bundle-show.1 +7 -4
- data/bundler/lib/bundler/man/bundle-show.1.ronn +4 -0
- data/bundler/lib/bundler/man/bundle-update.1 +15 -9
- data/bundler/lib/bundler/man/bundle-update.1.ronn +14 -6
- data/bundler/lib/bundler/man/bundle-version.1 +3 -3
- data/bundler/lib/bundler/man/bundle-viz.1 +6 -6
- data/bundler/lib/bundler/man/bundle-viz.1.ronn +7 -3
- data/bundler/lib/bundler/man/bundle.1 +3 -3
- data/bundler/lib/bundler/man/gemfile.5 +7 -5
- data/bundler/lib/bundler/man/gemfile.5.ronn +8 -2
- data/bundler/lib/bundler/man/index.txt +4 -0
- data/bundler/lib/bundler/match_metadata.rb +13 -0
- data/bundler/lib/bundler/materialization.rb +59 -0
- data/bundler/lib/bundler/mirror.rb +3 -3
- data/bundler/lib/bundler/plugin/api/source.rb +5 -4
- data/bundler/lib/bundler/plugin/events.rb +24 -0
- data/bundler/lib/bundler/plugin/index.rb +5 -1
- data/bundler/lib/bundler/plugin/installer/path.rb +26 -0
- data/bundler/lib/bundler/plugin/installer.rb +37 -17
- data/bundler/lib/bundler/plugin/source_list.rb +4 -4
- data/bundler/lib/bundler/plugin.rb +21 -2
- data/bundler/lib/bundler/process_lock.rb +10 -14
- data/bundler/lib/bundler/remote_specification.rb +6 -1
- data/bundler/lib/bundler/resolver/base.rb +14 -3
- data/bundler/lib/bundler/resolver/candidate.rb +18 -27
- data/bundler/lib/bundler/resolver/package.rb +20 -3
- data/bundler/lib/bundler/resolver/spec_group.rb +22 -27
- data/bundler/lib/bundler/resolver/strategy.rb +40 -0
- data/bundler/lib/bundler/resolver.rb +114 -50
- data/bundler/lib/bundler/retry.rb +1 -1
- data/bundler/lib/bundler/ruby_dsl.rb +12 -3
- data/bundler/lib/bundler/ruby_version.rb +7 -1
- data/bundler/lib/bundler/rubygems_ext.rb +282 -125
- data/bundler/lib/bundler/rubygems_gem_installer.rb +40 -5
- data/bundler/lib/bundler/rubygems_integration.rb +29 -67
- data/bundler/lib/bundler/runtime.rb +48 -35
- data/bundler/lib/bundler/self_manager.rb +27 -7
- data/bundler/lib/bundler/settings.rb +32 -21
- data/bundler/lib/bundler/setup.rb +6 -0
- data/bundler/lib/bundler/shared_helpers.rb +39 -21
- data/bundler/lib/bundler/source/gemspec.rb +1 -4
- data/bundler/lib/bundler/source/git/git_proxy.rb +23 -6
- data/bundler/lib/bundler/source/git.rb +113 -41
- data/bundler/lib/bundler/source/metadata.rb +4 -3
- data/bundler/lib/bundler/source/path.rb +7 -18
- data/bundler/lib/bundler/source/rubygems/remote.rb +12 -4
- data/bundler/lib/bundler/source/rubygems.rb +54 -48
- data/bundler/lib/bundler/source.rb +2 -0
- data/bundler/lib/bundler/source_list.rb +53 -7
- data/bundler/lib/bundler/spec_set.rb +187 -88
- data/bundler/lib/bundler/stub_specification.rb +29 -2
- data/bundler/lib/bundler/templates/newgem/CODE_OF_CONDUCT.md.tt +77 -29
- data/bundler/lib/bundler/templates/newgem/Gemfile.tt +1 -3
- data/bundler/lib/bundler/templates/newgem/README.md.tt +7 -3
- data/bundler/lib/bundler/templates/newgem/github/workflows/main.yml.tt +15 -15
- data/bundler/lib/bundler/templates/newgem/newgem.gemspec.tt +8 -7
- data/bundler/lib/bundler/templates/newgem/rubocop.yml.tt +0 -5
- data/bundler/lib/bundler/ui/shell.rb +24 -2
- data/bundler/lib/bundler/ui/silent.rb +12 -1
- data/bundler/lib/bundler/uri_credentials_filter.rb +3 -3
- data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/timed_stack.rb +53 -3
- data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/version.rb +1 -1
- data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool.rb +11 -0
- data/bundler/lib/bundler/vendor/fileutils/lib/fileutils.rb +15 -13
- data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb +68 -30
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/basic_package_source.rb +4 -24
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/static_package_source.rb +1 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/strategy.rb +42 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_range.rb +20 -8
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_solver.rb +17 -29
- data/bundler/lib/bundler/vendor/securerandom/COPYING +56 -0
- data/bundler/lib/bundler/vendor/securerandom/lib/securerandom.rb +102 -0
- data/bundler/lib/bundler/vendor/thor/lib/thor/actions/file_manipulation.rb +3 -5
- data/bundler/lib/bundler/vendor/thor/lib/thor/group.rb +11 -0
- data/bundler/lib/bundler/vendor/thor/lib/thor/parser/argument.rb +1 -4
- data/bundler/lib/bundler/vendor/thor/lib/thor/parser/option.rb +2 -2
- data/bundler/lib/bundler/vendor/thor/lib/thor/parser/options.rb +2 -1
- data/bundler/lib/bundler/vendor/thor/lib/thor/shell/basic.rb +9 -9
- data/bundler/lib/bundler/vendor/thor/lib/thor/shell/html.rb +1 -1
- data/bundler/lib/bundler/vendor/thor/lib/thor/shell/table_printer.rb +5 -21
- data/bundler/lib/bundler/vendor/thor/lib/thor/util.rb +1 -1
- data/bundler/lib/bundler/vendor/thor/lib/thor/version.rb +1 -1
- data/bundler/lib/bundler/vendor/thor/lib/thor.rb +11 -0
- data/bundler/lib/bundler/vendor/uri/COPYING +56 -0
- data/bundler/lib/bundler/vendor/uri/lib/uri/common.rb +43 -16
- data/bundler/lib/bundler/vendor/uri/lib/uri/file.rb +3 -3
- data/bundler/lib/bundler/vendor/uri/lib/uri/ftp.rb +1 -1
- data/bundler/lib/bundler/vendor/uri/lib/uri/generic.rb +28 -37
- data/bundler/lib/bundler/vendor/uri/lib/uri/http.rb +2 -2
- data/bundler/lib/bundler/vendor/uri/lib/uri/rfc2396_parser.rb +16 -9
- data/bundler/lib/bundler/vendor/uri/lib/uri/rfc3986_parser.rb +26 -3
- data/bundler/lib/bundler/vendor/uri/lib/uri/version.rb +1 -1
- data/bundler/lib/bundler/vendor/uri/lib/uri.rb +9 -9
- data/bundler/lib/bundler/vendored_net_http.rb +20 -5
- data/bundler/lib/bundler/vendored_securerandom.rb +12 -0
- data/bundler/lib/bundler/vendored_timeout.rb +7 -3
- data/bundler/lib/bundler/vendored_uri.rb +18 -1
- data/bundler/lib/bundler/version.rb +1 -1
- data/bundler/lib/bundler/yaml_serializer.rb +12 -7
- data/bundler/lib/bundler.rb +89 -51
- data/{CONTRIBUTING.md → doc/rubygems/CONTRIBUTING.md} +10 -14
- data/{POLICIES.md → doc/rubygems/POLICIES.md} +81 -12
- data/exe/update_rubygems +1 -1
- data/lib/rubygems/basic_specification.rb +43 -10
- data/lib/rubygems/bundler_version_finder.rb +1 -1
- data/lib/rubygems/command.rb +1 -4
- data/lib/rubygems/command_manager.rb +5 -6
- data/lib/rubygems/commands/build_command.rb +2 -11
- data/lib/rubygems/commands/cleanup_command.rb +3 -13
- data/lib/rubygems/commands/contents_command.rb +17 -10
- data/lib/rubygems/commands/environment_command.rb +5 -0
- data/lib/rubygems/commands/exec_command.rb +18 -11
- data/lib/rubygems/commands/fetch_command.rb +14 -0
- data/lib/rubygems/commands/help_command.rb +2 -2
- data/lib/rubygems/commands/install_command.rb +0 -4
- data/lib/rubygems/commands/pristine_command.rb +30 -17
- data/lib/rubygems/commands/push_command.rb +31 -6
- data/lib/rubygems/commands/rdoc_command.rb +3 -10
- data/lib/rubygems/commands/rebuild_command.rb +262 -0
- data/lib/rubygems/commands/setup_command.rb +11 -16
- data/lib/rubygems/commands/sources_command.rb +2 -2
- data/lib/rubygems/commands/uninstall_command.rb +9 -4
- data/lib/rubygems/commands/unpack_command.rb +0 -6
- data/lib/rubygems/commands/update_command.rb +10 -17
- data/lib/rubygems/config_file.rb +45 -16
- data/lib/rubygems/core_ext/kernel_warn.rb +2 -6
- data/lib/rubygems/defaults.rb +6 -6
- data/lib/rubygems/dependency.rb +12 -16
- data/lib/rubygems/dependency_list.rb +1 -1
- data/lib/rubygems/deprecate.rb +79 -77
- data/lib/rubygems/errors.rb +2 -1
- data/lib/rubygems/exceptions.rb +2 -9
- data/lib/rubygems/ext/builder.rb +21 -8
- data/lib/rubygems/ext/cargo_builder.rb +12 -26
- data/lib/rubygems/ext/cmake_builder.rb +7 -2
- data/lib/rubygems/ext/configure_builder.rb +7 -2
- data/lib/rubygems/ext/ext_conf_builder.rb +9 -5
- data/lib/rubygems/ext/rake_builder.rb +7 -4
- data/lib/rubygems/gem_runner.rb +9 -0
- data/lib/rubygems/gemcutter_utilities/webauthn_listener.rb +1 -1
- data/lib/rubygems/gemcutter_utilities/webauthn_poller.rb +3 -1
- data/lib/rubygems/gemcutter_utilities.rb +52 -26
- data/lib/rubygems/gemspec_helpers.rb +19 -0
- data/lib/rubygems/install_update_options.rb +5 -0
- data/lib/rubygems/installer.rb +31 -40
- data/lib/rubygems/local_remote_options.rb +8 -8
- data/lib/rubygems/package/tar_header.rb +31 -4
- data/lib/rubygems/package/tar_reader/entry.rb +1 -5
- data/lib/rubygems/package/tar_writer.rb +5 -4
- data/lib/rubygems/package.rb +13 -8
- data/lib/rubygems/platform.rb +7 -5
- data/lib/rubygems/psych_tree.rb +4 -0
- data/lib/rubygems/query_utils.rb +2 -2
- data/lib/rubygems/rdoc.rb +16 -3
- data/lib/rubygems/remote_fetcher.rb +3 -4
- data/lib/rubygems/request.rb +5 -5
- data/lib/rubygems/request_set/gem_dependency_api.rb +1 -1
- data/lib/rubygems/request_set.rb +1 -1
- data/lib/rubygems/requirement.rb +16 -12
- data/lib/rubygems/resolver/activation_request.rb +1 -1
- data/lib/rubygems/resolver/api_set/gem_parser.rb +2 -5
- data/lib/rubygems/resolver/api_set.rb +13 -8
- data/lib/rubygems/resolver/best_set.rb +0 -28
- data/lib/rubygems/resolver/composed_set.rb +3 -3
- data/lib/rubygems/resolver/git_set.rb +0 -1
- data/lib/rubygems/resolver/index_set.rb +2 -2
- data/lib/rubygems/resolver/spec_specification.rb +7 -0
- data/lib/rubygems/resolver.rb +7 -7
- data/lib/rubygems/s3_uri_signer.rb +3 -3
- data/lib/rubygems/safe_marshal/reader.rb +31 -14
- data/lib/rubygems/safe_marshal/visitors/to_ruby.rb +29 -16
- data/lib/rubygems/safe_yaml.rb +10 -1
- data/lib/rubygems/security.rb +1 -1
- data/lib/rubygems/source/git.rb +22 -17
- data/lib/rubygems/source/installed.rb +3 -1
- data/lib/rubygems/source/local.rb +8 -4
- data/lib/rubygems/source/specific_file.rb +5 -3
- data/lib/rubygems/source.rb +10 -8
- data/lib/rubygems/source_list.rb +1 -1
- data/lib/rubygems/spec_fetcher.rb +47 -15
- data/lib/rubygems/specification.rb +107 -180
- data/lib/rubygems/specification_policy.rb +33 -13
- data/lib/rubygems/specification_record.rb +212 -0
- data/lib/rubygems/stub_specification.rb +32 -10
- data/lib/rubygems/target_rbconfig.rb +50 -0
- data/lib/rubygems/uninstaller.rb +42 -22
- data/lib/rubygems/uri.rb +6 -6
- data/lib/rubygems/util/licenses.rb +97 -1
- data/lib/rubygems/util.rb +1 -1
- data/lib/rubygems/vendor/molinillo/lib/molinillo/delegates/resolution_state.rb +57 -0
- data/lib/rubygems/{resolver → vendor}/molinillo/lib/molinillo/delegates/specification_provider.rb +11 -11
- data/lib/rubygems/{resolver → vendor}/molinillo/lib/molinillo/dependency_graph/action.rb +1 -1
- data/lib/rubygems/{resolver → vendor}/molinillo/lib/molinillo/dependency_graph/add_edge_no_circular.rb +1 -1
- data/lib/rubygems/{resolver → vendor}/molinillo/lib/molinillo/dependency_graph/add_vertex.rb +1 -1
- data/lib/rubygems/{resolver → vendor}/molinillo/lib/molinillo/dependency_graph/delete_edge.rb +1 -1
- data/lib/rubygems/{resolver → vendor}/molinillo/lib/molinillo/dependency_graph/detach_vertex_named.rb +1 -1
- data/lib/rubygems/{resolver → vendor}/molinillo/lib/molinillo/dependency_graph/log.rb +1 -1
- data/lib/rubygems/{resolver → vendor}/molinillo/lib/molinillo/dependency_graph/set_payload.rb +1 -1
- data/lib/rubygems/{resolver → vendor}/molinillo/lib/molinillo/dependency_graph/tag.rb +1 -1
- data/lib/rubygems/{resolver → vendor}/molinillo/lib/molinillo/dependency_graph/vertex.rb +1 -1
- data/lib/rubygems/{resolver → vendor}/molinillo/lib/molinillo/dependency_graph.rb +2 -2
- data/lib/rubygems/{resolver → vendor}/molinillo/lib/molinillo/errors.rb +1 -1
- data/lib/rubygems/vendor/molinillo/lib/molinillo/gem_metadata.rb +6 -0
- data/lib/rubygems/{resolver → vendor}/molinillo/lib/molinillo/modules/specification_provider.rb +2 -2
- data/lib/rubygems/{resolver → vendor}/molinillo/lib/molinillo/modules/ui.rb +1 -1
- data/lib/rubygems/{resolver → vendor}/molinillo/lib/molinillo/resolution.rb +4 -4
- data/lib/rubygems/{resolver → vendor}/molinillo/lib/molinillo/resolver.rb +1 -1
- data/lib/rubygems/{resolver → vendor}/molinillo/lib/molinillo/state.rb +1 -1
- data/lib/rubygems/{resolver → vendor}/molinillo/lib/molinillo.rb +2 -2
- data/lib/rubygems/vendor/net-http/COPYING +56 -0
- data/lib/rubygems/{net-http → vendor/net-http}/lib/net/http/generic_request.rb +9 -9
- data/lib/rubygems/{net-http → vendor/net-http}/lib/net/http/header.rb +3 -3
- data/lib/rubygems/{net-http → vendor/net-http}/lib/net/http/request.rb +3 -3
- data/lib/rubygems/{net-http → vendor/net-http}/lib/net/http/requests.rb +35 -30
- data/lib/rubygems/{net-http → vendor/net-http}/lib/net/http/response.rb +2 -2
- data/lib/rubygems/{net-http → vendor/net-http}/lib/net/http/responses.rb +6 -6
- data/lib/rubygems/{net-http → vendor/net-http}/lib/net/http/status.rb +1 -1
- data/lib/rubygems/{net-http → vendor/net-http}/lib/net/http.rb +135 -51
- data/lib/rubygems/{net-http → vendor/net-http}/lib/net/https.rb +1 -1
- data/lib/rubygems/vendor/optparse/COPYING +56 -0
- data/lib/rubygems/{optparse → vendor/optparse}/lib/optparse/ac.rb +16 -0
- data/lib/rubygems/{optparse → vendor/optparse}/lib/optparse/kwargs.rb +8 -3
- data/lib/rubygems/vendor/optparse/lib/optparse/uri.rb +7 -0
- data/lib/rubygems/{optparse → vendor/optparse}/lib/optparse/version.rb +9 -0
- data/lib/rubygems/{optparse → vendor/optparse}/lib/optparse.rb +158 -62
- data/lib/rubygems/vendor/resolv/COPYING +56 -0
- data/lib/rubygems/{resolv → vendor/resolv}/lib/resolv.rb +117 -49
- data/lib/rubygems/vendor/securerandom/COPYING +56 -0
- data/lib/rubygems/vendor/securerandom/lib/securerandom.rb +102 -0
- data/lib/rubygems/vendor/timeout/.document +1 -0
- data/lib/rubygems/vendor/timeout/COPYING +56 -0
- data/lib/rubygems/{timeout → vendor/timeout}/lib/timeout.rb +10 -11
- data/lib/rubygems/vendor/tsort/.document +1 -0
- data/lib/rubygems/{tsort → vendor/tsort}/lib/tsort.rb +2 -2
- data/lib/rubygems/vendor/uri/.document +1 -0
- data/lib/rubygems/vendor/uri/COPYING +56 -0
- data/lib/rubygems/vendor/uri/lib/uri/common.rb +880 -0
- data/lib/rubygems/vendor/uri/lib/uri/file.rb +100 -0
- data/lib/rubygems/vendor/uri/lib/uri/ftp.rb +267 -0
- data/lib/rubygems/vendor/uri/lib/uri/generic.rb +1579 -0
- data/lib/rubygems/vendor/uri/lib/uri/http.rb +125 -0
- data/lib/rubygems/vendor/uri/lib/uri/https.rb +23 -0
- data/lib/rubygems/vendor/uri/lib/uri/ldap.rb +261 -0
- data/lib/rubygems/vendor/uri/lib/uri/ldaps.rb +22 -0
- data/lib/rubygems/vendor/uri/lib/uri/mailto.rb +293 -0
- data/lib/rubygems/vendor/uri/lib/uri/rfc2396_parser.rb +546 -0
- data/lib/rubygems/vendor/uri/lib/uri/rfc3986_parser.rb +206 -0
- data/lib/rubygems/vendor/uri/lib/uri/version.rb +6 -0
- data/lib/rubygems/vendor/uri/lib/uri/ws.rb +83 -0
- data/lib/rubygems/vendor/uri/lib/uri/wss.rb +23 -0
- data/lib/rubygems/vendor/uri/lib/uri.rb +104 -0
- data/lib/rubygems/vendored_molinillo.rb +3 -0
- data/lib/rubygems/vendored_net_http.rb +5 -0
- data/lib/rubygems/vendored_optparse.rb +3 -0
- data/lib/rubygems/vendored_securerandom.rb +3 -0
- data/lib/rubygems/vendored_timeout.rb +5 -0
- data/lib/rubygems/vendored_tsort.rb +3 -0
- data/lib/rubygems/version.rb +26 -9
- data/lib/rubygems/yaml_serializer.rb +12 -7
- data/lib/rubygems.rb +82 -47
- data/rubygems-update.gemspec +11 -6
- data/setup.rb +1 -1
- metadata +131 -86
- data/bundler/lib/bundler/compact_index_client/gem_parser.rb +0 -32
- data/lib/rubygems/net/http.rb +0 -3
- data/lib/rubygems/net-http/LICENSE.txt +0 -22
- data/lib/rubygems/net-http/lib/net/http/backward.rb +0 -40
- data/lib/rubygems/net-protocol/LICENSE.txt +0 -22
- data/lib/rubygems/optparse/lib/optparse/uri.rb +0 -7
- data/lib/rubygems/optparse.rb +0 -3
- data/lib/rubygems/resolv/LICENSE.txt +0 -22
- data/lib/rubygems/resolver/molinillo/lib/molinillo/delegates/resolution_state.rb +0 -57
- data/lib/rubygems/resolver/molinillo/lib/molinillo/gem_metadata.rb +0 -6
- data/lib/rubygems/resolver/molinillo.rb +0 -3
- data/lib/rubygems/shellwords.rb +0 -3
- data/lib/rubygems/timeout/LICENSE.txt +0 -22
- data/lib/rubygems/timeout.rb +0 -3
- data/lib/rubygems/tsort/LICENSE.txt +0 -22
- data/lib/rubygems/tsort.rb +0 -3
- /data/{lib/rubygems/optparse → bundler/lib/bundler/vendor/fileutils}/COPYING +0 -0
- /data/{lib/rubygems/net-http → bundler/lib/bundler/vendor/securerandom}/.document +0 -0
- /data/{MAINTAINERS.txt → doc/MAINTAINERS.txt} +0 -0
- /data/{bundler → doc/bundler}/UPGRADING.md +0 -0
- /data/{UPGRADING.md → doc/rubygems/UPGRADING.md} +0 -0
- /data/lib/rubygems/{net-protocol → vendor/molinillo}/.document +0 -0
- /data/lib/rubygems/{resolver → vendor}/molinillo/LICENSE +0 -0
- /data/lib/rubygems/{optparse → vendor/net-http}/.document +0 -0
- /data/lib/rubygems/{net-http → vendor/net-http}/lib/net/http/exceptions.rb +0 -0
- /data/lib/rubygems/{net-http → vendor/net-http}/lib/net/http/proxy_delta.rb +0 -0
- /data/lib/rubygems/{resolv → vendor/net-protocol}/.document +0 -0
- /data/{bundler/lib/bundler/vendor/fileutils → lib/rubygems/vendor/net-protocol}/LICENSE.txt +0 -0
- /data/lib/rubygems/{net-protocol → vendor/net-protocol}/lib/net/protocol.rb +0 -0
- /data/lib/rubygems/{resolver/molinillo → vendor/optparse}/.document +0 -0
- /data/lib/rubygems/{optparse → vendor/optparse}/lib/optionparser.rb +0 -0
- /data/lib/rubygems/{optparse → vendor/optparse}/lib/optparse/date.rb +0 -0
- /data/lib/rubygems/{optparse → vendor/optparse}/lib/optparse/shellwords.rb +0 -0
- /data/lib/rubygems/{optparse → vendor/optparse}/lib/optparse/time.rb +0 -0
- /data/lib/rubygems/{timeout → vendor/resolv}/.document +0 -0
- /data/lib/rubygems/{tsort → vendor/securerandom}/.document +0 -0
- /data/{bundler/lib/bundler/vendor/uri → lib/rubygems/vendor/tsort}/LICENSE.txt +0 -0
|
@@ -1,157 +1,33 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
require "rbconfig"
|
|
4
|
-
require "shellwords"
|
|
5
|
-
require "fiddle"
|
|
6
|
-
|
|
7
3
|
module Bundler
|
|
8
|
-
class CLI::Doctor
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
output.split("\n").map do |l|
|
|
36
|
-
match = l.match(LDD_REGEX)
|
|
37
|
-
next if match.nil?
|
|
38
|
-
match.captures[0]
|
|
39
|
-
end.compact
|
|
40
|
-
end
|
|
41
|
-
|
|
42
|
-
def dylibs(path)
|
|
43
|
-
case RbConfig::CONFIG["host_os"]
|
|
44
|
-
when /darwin/
|
|
45
|
-
return [] unless otool_available?
|
|
46
|
-
dylibs_darwin(path)
|
|
47
|
-
when /(linux|solaris|bsd)/
|
|
48
|
-
return [] unless ldd_available?
|
|
49
|
-
dylibs_ldd(path)
|
|
50
|
-
else # Windows, etc.
|
|
51
|
-
Bundler.ui.warn("Dynamic library check not supported on this platform.")
|
|
52
|
-
[]
|
|
53
|
-
end
|
|
54
|
-
end
|
|
55
|
-
|
|
56
|
-
def bundles_for_gem(spec)
|
|
57
|
-
Dir.glob("#{spec.full_gem_path}/**/*.bundle")
|
|
58
|
-
end
|
|
59
|
-
|
|
60
|
-
def check!
|
|
61
|
-
require_relative "check"
|
|
62
|
-
Bundler::CLI::Check.new({}).run
|
|
63
|
-
end
|
|
64
|
-
|
|
65
|
-
def run
|
|
66
|
-
Bundler.ui.level = "warn" if options[:quiet]
|
|
67
|
-
Bundler.settings.validate!
|
|
68
|
-
check!
|
|
69
|
-
|
|
70
|
-
definition = Bundler.definition
|
|
71
|
-
broken_links = {}
|
|
72
|
-
|
|
73
|
-
definition.specs.each do |spec|
|
|
74
|
-
bundles_for_gem(spec).each do |bundle|
|
|
75
|
-
bad_paths = dylibs(bundle).select do |f|
|
|
76
|
-
Fiddle.dlopen(f)
|
|
77
|
-
false
|
|
78
|
-
rescue Fiddle::DLError
|
|
79
|
-
true
|
|
80
|
-
end
|
|
81
|
-
if bad_paths.any?
|
|
82
|
-
broken_links[spec] ||= []
|
|
83
|
-
broken_links[spec].concat(bad_paths)
|
|
84
|
-
end
|
|
85
|
-
end
|
|
86
|
-
end
|
|
87
|
-
|
|
88
|
-
permissions_valid = check_home_permissions
|
|
89
|
-
|
|
90
|
-
if broken_links.any?
|
|
91
|
-
message = "The following gems are missing OS dependencies:"
|
|
92
|
-
broken_links.map do |spec, paths|
|
|
93
|
-
paths.uniq.map do |path|
|
|
94
|
-
"\n * #{spec.name}: #{path}"
|
|
95
|
-
end
|
|
96
|
-
end.flatten.sort.each {|m| message += m }
|
|
97
|
-
raise ProductionError, message
|
|
98
|
-
elsif !permissions_valid
|
|
99
|
-
Bundler.ui.info "No issues found with the installed bundle"
|
|
100
|
-
end
|
|
101
|
-
end
|
|
102
|
-
|
|
103
|
-
private
|
|
104
|
-
|
|
105
|
-
def check_home_permissions
|
|
106
|
-
require "find"
|
|
107
|
-
files_not_readable_or_writable = []
|
|
108
|
-
files_not_rw_and_owned_by_different_user = []
|
|
109
|
-
files_not_owned_by_current_user_but_still_rw = []
|
|
110
|
-
broken_symlinks = []
|
|
111
|
-
Find.find(Bundler.bundle_path.to_s).each do |f|
|
|
112
|
-
if !File.exist?(f)
|
|
113
|
-
broken_symlinks << f
|
|
114
|
-
elsif !File.writable?(f) || !File.readable?(f)
|
|
115
|
-
if File.stat(f).uid != Process.uid
|
|
116
|
-
files_not_rw_and_owned_by_different_user << f
|
|
117
|
-
else
|
|
118
|
-
files_not_readable_or_writable << f
|
|
119
|
-
end
|
|
120
|
-
elsif File.stat(f).uid != Process.uid
|
|
121
|
-
files_not_owned_by_current_user_but_still_rw << f
|
|
122
|
-
end
|
|
123
|
-
end
|
|
124
|
-
|
|
125
|
-
ok = true
|
|
126
|
-
|
|
127
|
-
if broken_symlinks.any?
|
|
128
|
-
Bundler.ui.warn "Broken links exist in the Bundler home. Please report them to the offending gem's upstream repo. These files are:\n - #{broken_symlinks.join("\n - ")}"
|
|
129
|
-
|
|
130
|
-
ok = false
|
|
131
|
-
end
|
|
132
|
-
|
|
133
|
-
if files_not_owned_by_current_user_but_still_rw.any?
|
|
134
|
-
Bundler.ui.warn "Files exist in the Bundler home that are owned by another " \
|
|
135
|
-
"user, but are still readable/writable. These files are:\n - #{files_not_owned_by_current_user_but_still_rw.join("\n - ")}"
|
|
136
|
-
|
|
137
|
-
ok = false
|
|
138
|
-
end
|
|
139
|
-
|
|
140
|
-
if files_not_rw_and_owned_by_different_user.any?
|
|
141
|
-
Bundler.ui.warn "Files exist in the Bundler home that are owned by another " \
|
|
142
|
-
"user, and are not readable/writable. These files are:\n - #{files_not_rw_and_owned_by_different_user.join("\n - ")}"
|
|
143
|
-
|
|
144
|
-
ok = false
|
|
145
|
-
end
|
|
146
|
-
|
|
147
|
-
if files_not_readable_or_writable.any?
|
|
148
|
-
Bundler.ui.warn "Files exist in the Bundler home that are not " \
|
|
149
|
-
"readable/writable by the current user. These files are:\n - #{files_not_readable_or_writable.join("\n - ")}"
|
|
150
|
-
|
|
151
|
-
ok = false
|
|
152
|
-
end
|
|
153
|
-
|
|
154
|
-
ok
|
|
4
|
+
class CLI::Doctor < Thor
|
|
5
|
+
default_command(:diagnose)
|
|
6
|
+
|
|
7
|
+
desc "diagnose [OPTIONS]", "Checks the bundle for common problems"
|
|
8
|
+
long_desc <<-D
|
|
9
|
+
Doctor scans the OS dependencies of each of the gems requested in the Gemfile. If
|
|
10
|
+
missing dependencies are detected, Bundler prints them and exits status 1.
|
|
11
|
+
Otherwise, Bundler prints a success message and exits with a status of 0.
|
|
12
|
+
D
|
|
13
|
+
method_option "gemfile", type: :string, banner: "Use the specified gemfile instead of Gemfile"
|
|
14
|
+
method_option "quiet", type: :boolean, banner: "Only output warnings and errors."
|
|
15
|
+
method_option "ssl", type: :boolean, default: false, banner: "Diagnose SSL problems."
|
|
16
|
+
def diagnose
|
|
17
|
+
require_relative "doctor/diagnose"
|
|
18
|
+
Diagnose.new(options).run
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
desc "ssl [OPTIONS]", "Diagnose SSL problems"
|
|
22
|
+
long_desc <<-D
|
|
23
|
+
Diagnose SSL problems, especially related to certificates or TLS version while connecting to https://rubygems.org.
|
|
24
|
+
D
|
|
25
|
+
method_option "host", type: :string, banner: "The host to diagnose."
|
|
26
|
+
method_option "tls-version", type: :string, banner: "Specify the SSL/TLS version when running the diagnostic. Accepts either <1.1> or <1.2>"
|
|
27
|
+
method_option "verify-mode", type: :string, banner: "Specify the mode used for certification verification. Accepts either <peer> or <none>"
|
|
28
|
+
def ssl
|
|
29
|
+
require_relative "doctor/ssl"
|
|
30
|
+
SSL.new(options).run
|
|
155
31
|
end
|
|
156
32
|
end
|
|
157
33
|
end
|
|
@@ -22,6 +22,7 @@ module Bundler
|
|
|
22
22
|
if !Bundler.settings[:disable_exec_load] && ruby_shebang?(bin_path)
|
|
23
23
|
return kernel_load(bin_path, *args)
|
|
24
24
|
end
|
|
25
|
+
bin_path = "./" + bin_path unless File.absolute_path?(bin_path)
|
|
25
26
|
kernel_exec(bin_path, *args)
|
|
26
27
|
else
|
|
27
28
|
# exec using the given command
|
|
@@ -32,7 +32,6 @@ module Bundler
|
|
|
32
32
|
|
|
33
33
|
validate_ext_name if @extension
|
|
34
34
|
validate_rust_builder_rubygems_version if @extension == "rust"
|
|
35
|
-
travis_removal_info
|
|
36
35
|
end
|
|
37
36
|
|
|
38
37
|
def run
|
|
@@ -80,7 +79,7 @@ module Bundler
|
|
|
80
79
|
ensure_safe_gem_name(name, constant_array)
|
|
81
80
|
|
|
82
81
|
templates = {
|
|
83
|
-
"
|
|
82
|
+
"Gemfile.tt" => Bundler.preferred_gemfile_name,
|
|
84
83
|
"lib/newgem.rb.tt" => "lib/#{namespaced_path}.rb",
|
|
85
84
|
"lib/newgem/version.rb.tt" => "lib/#{namespaced_path}/version.rb",
|
|
86
85
|
"sig/newgem.rbs.tt" => "sig/#{namespaced_path}.rbs",
|
|
@@ -192,7 +191,10 @@ module Bundler
|
|
|
192
191
|
templates.merge!("standard.yml.tt" => ".standard.yml")
|
|
193
192
|
end
|
|
194
193
|
|
|
195
|
-
|
|
194
|
+
if config[:exe]
|
|
195
|
+
templates.merge!("exe/newgem.tt" => "exe/#{name}")
|
|
196
|
+
executables.push("exe/#{name}")
|
|
197
|
+
end
|
|
196
198
|
|
|
197
199
|
if extension == "c"
|
|
198
200
|
templates.merge!(
|
|
@@ -276,6 +278,7 @@ module Bundler
|
|
|
276
278
|
end
|
|
277
279
|
|
|
278
280
|
def ask_and_set_test_framework
|
|
281
|
+
return if skip?(:test)
|
|
279
282
|
test_framework = options[:test] || Bundler.settings["gem.test"]
|
|
280
283
|
|
|
281
284
|
if test_framework.to_s.empty?
|
|
@@ -301,6 +304,10 @@ module Bundler
|
|
|
301
304
|
test_framework
|
|
302
305
|
end
|
|
303
306
|
|
|
307
|
+
def skip?(option)
|
|
308
|
+
options.key?(option) && options[option].nil?
|
|
309
|
+
end
|
|
310
|
+
|
|
304
311
|
def hint_text(setting)
|
|
305
312
|
if Bundler.settings["gem.#{setting}"] == false
|
|
306
313
|
"Your choice will only be applied to this gem."
|
|
@@ -311,6 +318,7 @@ module Bundler
|
|
|
311
318
|
end
|
|
312
319
|
|
|
313
320
|
def ask_and_set_ci
|
|
321
|
+
return if skip?(:ci)
|
|
314
322
|
ci_template = options[:ci] || Bundler.settings["gem.ci"]
|
|
315
323
|
|
|
316
324
|
if ci_template.to_s.empty?
|
|
@@ -342,6 +350,7 @@ module Bundler
|
|
|
342
350
|
end
|
|
343
351
|
|
|
344
352
|
def ask_and_set_linter
|
|
353
|
+
return if skip?(:linter)
|
|
345
354
|
linter_template = options[:linter] || Bundler.settings["gem.linter"]
|
|
346
355
|
linter_template = deprecated_rubocop_option if linter_template.nil?
|
|
347
356
|
|
|
@@ -437,7 +446,7 @@ module Bundler
|
|
|
437
446
|
end
|
|
438
447
|
|
|
439
448
|
def required_ruby_version
|
|
440
|
-
"
|
|
449
|
+
"3.1.0"
|
|
441
450
|
end
|
|
442
451
|
|
|
443
452
|
def rubocop_version
|
|
@@ -448,19 +457,6 @@ module Bundler
|
|
|
448
457
|
"1.3"
|
|
449
458
|
end
|
|
450
459
|
|
|
451
|
-
# TODO: remove at next minor release
|
|
452
|
-
def travis_removal_info
|
|
453
|
-
if options[:ci] == "travis"
|
|
454
|
-
Bundler.ui.error "Support for Travis CI was removed from gem skeleton generator."
|
|
455
|
-
exit 1
|
|
456
|
-
end
|
|
457
|
-
|
|
458
|
-
if Bundler.settings["gem.ci"] == "travis"
|
|
459
|
-
Bundler.ui.error "Support for Travis CI was removed from gem skeleton generator, but it is present in bundle config. Please configure another provider using `bundle config set gem.ci SERVICE` (where SERVICE is one of github/gitlab/circle) or unset configuration using `bundle config unset gem.ci`."
|
|
460
|
-
exit 1
|
|
461
|
-
end
|
|
462
|
-
end
|
|
463
|
-
|
|
464
460
|
def validate_rust_builder_rubygems_version
|
|
465
461
|
if Gem::Version.new(rust_builder_required_rubygems_version) > Gem.rubygems_version
|
|
466
462
|
Bundler.ui.error "Your RubyGems version (#{Gem.rubygems_version}) is too old to build Rust extension. Please update your RubyGems using `gem update --system` or any other way and try again."
|
|
@@ -39,8 +39,8 @@ module Bundler
|
|
|
39
39
|
path = File.expand_path("../../..", __dir__)
|
|
40
40
|
else
|
|
41
41
|
path = spec.full_gem_path
|
|
42
|
-
if spec.
|
|
43
|
-
return Bundler.ui.warn "The gem #{name}
|
|
42
|
+
if spec.installation_missing?
|
|
43
|
+
return Bundler.ui.warn "The gem #{name} is missing. It should be installed at #{path}, but was not found"
|
|
44
44
|
end
|
|
45
45
|
end
|
|
46
46
|
|
|
@@ -65,19 +65,19 @@ module Bundler
|
|
|
65
65
|
gem_info << "\tDefault Gem: yes\n" if spec.respond_to?(:default_gem?) && spec.default_gem?
|
|
66
66
|
gem_info << "\tReverse Dependencies: \n\t\t#{gem_dependencies.join("\n\t\t")}" if gem_dependencies.any?
|
|
67
67
|
|
|
68
|
-
if name != "bundler" && spec.
|
|
69
|
-
return Bundler.ui.warn "The gem #{name}
|
|
68
|
+
if name != "bundler" && spec.installation_missing?
|
|
69
|
+
return Bundler.ui.warn "The gem #{name} is missing. Gemspec information is still available though:\n#{gem_info}"
|
|
70
70
|
end
|
|
71
71
|
|
|
72
72
|
Bundler.ui.info gem_info
|
|
73
73
|
end
|
|
74
74
|
|
|
75
75
|
def gem_dependencies
|
|
76
|
-
@gem_dependencies ||= Bundler.definition.specs.
|
|
76
|
+
@gem_dependencies ||= Bundler.definition.specs.filter_map do |spec|
|
|
77
77
|
dependency = spec.dependencies.find {|dep| dep.name == gem_name }
|
|
78
78
|
next unless dependency
|
|
79
79
|
"#{spec.name} (#{spec.version}) depends on #{gem_name} (#{dependency.requirements_list.join(", ")})"
|
|
80
|
-
end.
|
|
80
|
+
end.sort
|
|
81
81
|
end
|
|
82
82
|
end
|
|
83
83
|
end
|
|
@@ -35,8 +35,8 @@ module Bundler
|
|
|
35
35
|
Bundler.ui.confirm(added.map do |d|
|
|
36
36
|
name = "'#{d.name}'"
|
|
37
37
|
requirement = ", '#{d.requirement}'"
|
|
38
|
-
group = ", :
|
|
39
|
-
source = ", :
|
|
38
|
+
group = ", group: #{d.groups.inspect}" if d.groups != Array(:default)
|
|
39
|
+
source = ", source: '#{d.source}'" unless d.source.nil?
|
|
40
40
|
%(gem #{name}#{requirement}#{group}#{source})
|
|
41
41
|
end.join("\n"))
|
|
42
42
|
else
|
|
@@ -48,7 +48,7 @@ module Bundler
|
|
|
48
48
|
|
|
49
49
|
def last_version_number
|
|
50
50
|
definition = Bundler.definition(true)
|
|
51
|
-
definition.
|
|
51
|
+
definition.remotely!
|
|
52
52
|
specs = definition.index[name].sort_by(&:version)
|
|
53
53
|
unless options[:pre]
|
|
54
54
|
specs.delete_if {|b| b.respond_to?(:version) && b.version.prerelease? }
|
|
@@ -12,22 +12,31 @@ module Bundler
|
|
|
12
12
|
|
|
13
13
|
warn_if_root
|
|
14
14
|
|
|
15
|
-
|
|
15
|
+
if options[:local]
|
|
16
|
+
Bundler.self_manager.restart_with_locked_bundler_if_needed
|
|
17
|
+
else
|
|
18
|
+
Bundler.self_manager.install_locked_bundler_and_restart_with_it_if_needed
|
|
19
|
+
end
|
|
16
20
|
|
|
17
|
-
Bundler::SharedHelpers.set_env "RB_USER_INSTALL", "1" if
|
|
21
|
+
Bundler::SharedHelpers.set_env "RB_USER_INSTALL", "1" if Gem.freebsd_platform?
|
|
18
22
|
|
|
19
23
|
# Disable color in deployment mode
|
|
20
24
|
Bundler.ui.shell = Thor::Shell::Basic.new if options[:deployment]
|
|
21
25
|
|
|
26
|
+
if target_rbconfig_path = options[:"target-rbconfig"]
|
|
27
|
+
Bundler.rubygems.set_target_rbconfig(target_rbconfig_path)
|
|
28
|
+
end
|
|
29
|
+
|
|
22
30
|
check_for_options_conflicts
|
|
23
31
|
|
|
24
32
|
check_trust_policy
|
|
25
33
|
|
|
26
34
|
if options[:deployment] || options[:frozen] || Bundler.frozen_bundle?
|
|
27
35
|
unless Bundler.default_lockfile.exist?
|
|
28
|
-
flag
|
|
29
|
-
flag ||= "--frozen flag"
|
|
30
|
-
flag ||= "deployment setting"
|
|
36
|
+
flag = "--deployment flag" if options[:deployment]
|
|
37
|
+
flag ||= "--frozen flag" if options[:frozen]
|
|
38
|
+
flag ||= "deployment setting" if Bundler.settings[:deployment]
|
|
39
|
+
flag ||= "frozen setting" if Bundler.settings[:frozen]
|
|
31
40
|
raise ProductionError, "The #{flag} requires a lockfile. Please make " \
|
|
32
41
|
"sure you have checked your #{SharedHelpers.relative_lockfile_path} into version control " \
|
|
33
42
|
"before deploying."
|
|
@@ -10,7 +10,7 @@ module Bundler
|
|
|
10
10
|
be sure to check out these resources:
|
|
11
11
|
|
|
12
12
|
1. Check out our troubleshooting guide for quick fixes to common issues:
|
|
13
|
-
https://github.com/rubygems/rubygems/blob/master/bundler/
|
|
13
|
+
https://github.com/rubygems/rubygems/blob/master/doc/bundler/TROUBLESHOOTING.md
|
|
14
14
|
|
|
15
15
|
2. Instructions for common Bundler uses can be found on the documentation
|
|
16
16
|
site: https://bundler.io/
|
|
@@ -34,8 +34,8 @@ module Bundler
|
|
|
34
34
|
end
|
|
35
35
|
|
|
36
36
|
def doctor
|
|
37
|
-
require_relative "doctor"
|
|
38
|
-
Bundler::CLI::Doctor.new({}).run
|
|
37
|
+
require_relative "doctor/diagnose"
|
|
38
|
+
Bundler::CLI::Doctor::Diagnose.new({}).run
|
|
39
39
|
end
|
|
40
40
|
end
|
|
41
41
|
end
|
|
@@ -14,9 +14,11 @@ module Bundler
|
|
|
14
14
|
exit 1
|
|
15
15
|
end
|
|
16
16
|
|
|
17
|
+
check_for_conflicting_options
|
|
18
|
+
|
|
17
19
|
print = options[:print]
|
|
18
|
-
|
|
19
|
-
Bundler.ui.
|
|
20
|
+
previous_output_stream = Bundler.ui.output_stream
|
|
21
|
+
Bundler.ui.output_stream = :stderr if print
|
|
20
22
|
|
|
21
23
|
Bundler::Fetcher.disable_endpoint = options["full-index"]
|
|
22
24
|
|
|
@@ -33,20 +35,25 @@ module Bundler
|
|
|
33
35
|
update = { bundler: bundler }
|
|
34
36
|
end
|
|
35
37
|
|
|
38
|
+
file = options[:lockfile]
|
|
39
|
+
file = file ? Pathname.new(file).expand_path : Bundler.default_lockfile
|
|
40
|
+
|
|
36
41
|
Bundler.settings.temporary(frozen: false) do
|
|
37
|
-
definition = Bundler.definition(update)
|
|
42
|
+
definition = Bundler.definition(update, file)
|
|
43
|
+
definition.add_checksums if options["add-checksums"]
|
|
38
44
|
|
|
39
45
|
Bundler::CLI::Common.configure_gem_version_promoter(definition, options) if options[:update]
|
|
40
46
|
|
|
41
|
-
options["remove-platform"].each do |
|
|
47
|
+
options["remove-platform"].each do |platform_string|
|
|
48
|
+
platform = Gem::Platform.new(platform_string)
|
|
42
49
|
definition.remove_platform(platform)
|
|
43
50
|
end
|
|
44
51
|
|
|
45
52
|
options["add-platform"].each do |platform_string|
|
|
46
53
|
platform = Gem::Platform.new(platform_string)
|
|
47
54
|
if platform.to_s == "unknown"
|
|
48
|
-
Bundler.ui.
|
|
49
|
-
|
|
55
|
+
Bundler.ui.error "The platform `#{platform_string}` is unknown to RubyGems and can't be added to the lockfile."
|
|
56
|
+
exit 1
|
|
50
57
|
end
|
|
51
58
|
definition.add_platform(platform)
|
|
52
59
|
end
|
|
@@ -55,19 +62,33 @@ module Bundler
|
|
|
55
62
|
raise InvalidOption, "Removing all platforms from the bundle is not allowed"
|
|
56
63
|
end
|
|
57
64
|
|
|
58
|
-
definition.
|
|
65
|
+
definition.remotely! unless options[:local]
|
|
66
|
+
|
|
67
|
+
if options["normalize-platforms"]
|
|
68
|
+
definition.normalize_platforms
|
|
69
|
+
end
|
|
59
70
|
|
|
60
71
|
if print
|
|
61
72
|
puts definition.to_lock
|
|
62
73
|
else
|
|
63
|
-
file = options[:lockfile]
|
|
64
|
-
file = file ? File.expand_path(file) : Bundler.default_lockfile
|
|
65
74
|
puts "Writing lockfile to #{file}"
|
|
66
|
-
definition.lock
|
|
75
|
+
definition.lock
|
|
67
76
|
end
|
|
68
77
|
end
|
|
69
78
|
|
|
70
|
-
Bundler.ui.
|
|
79
|
+
Bundler.ui.output_stream = previous_output_stream
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
private
|
|
83
|
+
|
|
84
|
+
def check_for_conflicting_options
|
|
85
|
+
if options["normalize-platforms"] && options["add-platform"].any?
|
|
86
|
+
raise InvalidOption, "--normalize-platforms can't be used with --add-platform"
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
if options["normalize-platforms"] && options["remove-platform"].any?
|
|
90
|
+
raise InvalidOption, "--normalize-platforms can't be used with --remove-platform"
|
|
91
|
+
end
|
|
71
92
|
end
|
|
72
93
|
end
|
|
73
94
|
end
|
|
@@ -26,13 +26,15 @@ module Bundler
|
|
|
26
26
|
def run
|
|
27
27
|
check_for_deployment_mode!
|
|
28
28
|
|
|
29
|
-
gems.each do |gem_name|
|
|
30
|
-
Bundler::CLI::Common.select_spec(gem_name)
|
|
31
|
-
end
|
|
32
|
-
|
|
33
29
|
Bundler.definition.validate_runtime!
|
|
34
30
|
current_specs = Bundler.ui.silence { Bundler.definition.resolve }
|
|
35
31
|
|
|
32
|
+
gems.each do |gem_name|
|
|
33
|
+
if current_specs[gem_name].empty?
|
|
34
|
+
raise GemNotFound, "Could not find gem '#{gem_name}'."
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
|
|
36
38
|
current_dependencies = Bundler.ui.silence do
|
|
37
39
|
Bundler.load.dependencies.map {|dep| [dep.name, dep] }.to_h
|
|
38
40
|
end
|
|
@@ -54,7 +56,7 @@ module Bundler
|
|
|
54
56
|
end
|
|
55
57
|
|
|
56
58
|
if options[:parseable]
|
|
57
|
-
Bundler.ui.
|
|
59
|
+
Bundler.ui.progress(&definition_resolution)
|
|
58
60
|
else
|
|
59
61
|
definition_resolution.call
|
|
60
62
|
end
|
|
@@ -97,28 +99,26 @@ module Bundler
|
|
|
97
99
|
}
|
|
98
100
|
end
|
|
99
101
|
|
|
100
|
-
if
|
|
102
|
+
relevant_outdated_gems = if options_include_groups
|
|
103
|
+
outdated_gems.group_by {|g| g[:groups] }.sort.flat_map do |groups, gems|
|
|
104
|
+
contains_group = groups.split(", ").include?(options[:group])
|
|
105
|
+
next unless options[:groups] || contains_group
|
|
106
|
+
|
|
107
|
+
gems
|
|
108
|
+
end.compact
|
|
109
|
+
else
|
|
110
|
+
outdated_gems
|
|
111
|
+
end
|
|
112
|
+
|
|
113
|
+
if relevant_outdated_gems.empty?
|
|
101
114
|
unless options[:parseable]
|
|
102
115
|
Bundler.ui.info(nothing_outdated_message)
|
|
103
116
|
end
|
|
104
117
|
else
|
|
105
|
-
if
|
|
106
|
-
relevant_outdated_gems
|
|
107
|
-
contains_group = groups.split(", ").include?(options[:group])
|
|
108
|
-
next unless options[:groups] || contains_group
|
|
109
|
-
|
|
110
|
-
gems
|
|
111
|
-
end.compact
|
|
112
|
-
|
|
113
|
-
if options[:parseable]
|
|
114
|
-
print_gems(relevant_outdated_gems)
|
|
115
|
-
else
|
|
116
|
-
print_gems_table(relevant_outdated_gems)
|
|
117
|
-
end
|
|
118
|
-
elsif options[:parseable]
|
|
119
|
-
print_gems(outdated_gems)
|
|
118
|
+
if options[:parseable]
|
|
119
|
+
print_gems(relevant_outdated_gems)
|
|
120
120
|
else
|
|
121
|
-
print_gems_table(
|
|
121
|
+
print_gems_table(relevant_outdated_gems)
|
|
122
122
|
end
|
|
123
123
|
|
|
124
124
|
exit 1
|
|
@@ -5,14 +5,15 @@ module Bundler
|
|
|
5
5
|
class CLI::Plugin < Thor
|
|
6
6
|
desc "install PLUGINS", "Install the plugin from the source"
|
|
7
7
|
long_desc <<-D
|
|
8
|
-
Install plugins either from the rubygems source provided (with --source option)
|
|
8
|
+
Install plugins either from the rubygems source provided (with --source option), from a git source provided with --git, or a local path provided with --path. If no sources are provided, it uses Gem.sources
|
|
9
9
|
D
|
|
10
10
|
method_option "source", type: :string, default: nil, banner: "URL of the RubyGems source to fetch the plugin from"
|
|
11
11
|
method_option "version", type: :string, default: nil, banner: "The version of the plugin to fetch"
|
|
12
12
|
method_option "git", type: :string, default: nil, banner: "URL of the git repo to fetch from"
|
|
13
|
-
method_option "local_git", type: :string, default: nil, banner: "Path of the local git repo to fetch from"
|
|
13
|
+
method_option "local_git", type: :string, default: nil, banner: "Path of the local git repo to fetch from (deprecated)"
|
|
14
14
|
method_option "branch", type: :string, default: nil, banner: "The git branch to checkout"
|
|
15
15
|
method_option "ref", type: :string, default: nil, banner: "The git revision to check out"
|
|
16
|
+
method_option "path", type: :string, default: nil, banner: "Path of a local gem to directly use"
|
|
16
17
|
def install(*plugins)
|
|
17
18
|
Bundler::Plugin.install(plugins, options)
|
|
18
19
|
end
|
|
@@ -49,7 +49,7 @@ module Bundler
|
|
|
49
49
|
true
|
|
50
50
|
end.map(&:name)
|
|
51
51
|
|
|
52
|
-
jobs = installer.send(:installation_parallelization
|
|
52
|
+
jobs = installer.send(:installation_parallelization)
|
|
53
53
|
pristine_count = definition.specs.count - installed_specs.count
|
|
54
54
|
# allow a pristining a single gem to skip the parallel worker
|
|
55
55
|
jobs = [jobs, pristine_count].min
|
|
@@ -24,7 +24,7 @@ module Bundler
|
|
|
24
24
|
return unless spec
|
|
25
25
|
path = spec.full_gem_path
|
|
26
26
|
unless File.directory?(path)
|
|
27
|
-
return Bundler.ui.warn "The gem #{gem_name}
|
|
27
|
+
return Bundler.ui.warn "The gem #{gem_name} is missing. It should be installed at #{path}, but was not found"
|
|
28
28
|
end
|
|
29
29
|
end
|
|
30
30
|
return Bundler.ui.info(path)
|
|
@@ -59,9 +59,9 @@ module Bundler
|
|
|
59
59
|
definition = Bundler.definition(true)
|
|
60
60
|
if options[:outdated]
|
|
61
61
|
Bundler.ui.info "Fetching remote specs for outdated check...\n\n"
|
|
62
|
-
Bundler.ui.silence { definition.
|
|
62
|
+
Bundler.ui.silence { definition.remotely! }
|
|
63
63
|
else
|
|
64
|
-
definition.
|
|
64
|
+
definition.with_cache!
|
|
65
65
|
end
|
|
66
66
|
Bundler.reset!
|
|
67
67
|
definition.specs
|