rubygems-update 3.0.3 → 3.4.7
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 +5556 -0
- data/CODE_OF_CONDUCT.md +62 -24
- data/CONTRIBUTING.md +111 -21
- data/MAINTAINERS.txt +1 -6
- data/Manifest.txt +209 -101
- data/POLICIES.md +65 -22
- data/README.md +23 -15
- data/UPGRADING.md +5 -81
- data/bin/gem +2 -16
- data/bin/update_rubygems +5 -5
- data/bundler/CHANGELOG.md +2619 -1256
- data/bundler/LICENSE.md +18 -19
- data/bundler/README.md +11 -12
- data/bundler/UPGRADING.md +222 -0
- data/bundler/bundler.gemspec +13 -33
- data/bundler/exe/bundle +26 -11
- data/bundler/exe/bundler +1 -1
- data/bundler/lib/bundler/.document +1 -0
- data/bundler/lib/bundler/build_metadata.rb +5 -13
- data/bundler/lib/bundler/capistrano.rb +4 -4
- data/bundler/lib/bundler/cli/add.rb +28 -16
- data/bundler/lib/bundler/cli/binstubs.rb +11 -3
- data/bundler/lib/bundler/cli/cache.rb +24 -17
- data/bundler/lib/bundler/cli/check.rb +5 -3
- data/bundler/lib/bundler/cli/clean.rb +1 -1
- data/bundler/lib/bundler/cli/common.rb +41 -13
- data/bundler/lib/bundler/cli/config.rb +170 -86
- data/bundler/lib/bundler/cli/console.rb +3 -3
- data/bundler/lib/bundler/cli/doctor.rb +27 -10
- data/bundler/lib/bundler/cli/exec.rb +8 -25
- data/bundler/lib/bundler/cli/fund.rb +36 -0
- data/bundler/lib/bundler/cli/gem.rb +261 -48
- data/bundler/lib/bundler/cli/info.rb +52 -8
- data/bundler/lib/bundler/cli/init.rb +7 -3
- data/bundler/lib/bundler/cli/inject.rb +1 -1
- data/bundler/lib/bundler/cli/install.rb +38 -66
- data/bundler/lib/bundler/cli/issue.rb +8 -7
- data/bundler/lib/bundler/cli/list.rb +19 -11
- data/bundler/lib/bundler/cli/lock.rb +11 -4
- data/bundler/lib/bundler/cli/open.rb +14 -9
- data/bundler/lib/bundler/cli/outdated.rb +152 -121
- data/bundler/lib/bundler/cli/platform.rb +2 -2
- data/bundler/lib/bundler/cli/plugin.rb +19 -2
- data/bundler/lib/bundler/cli/pristine.rb +6 -1
- data/bundler/lib/bundler/cli/remove.rb +1 -2
- data/bundler/lib/bundler/cli/show.rb +3 -3
- data/bundler/lib/bundler/cli/update.rb +49 -18
- data/bundler/lib/bundler/cli/viz.rb +1 -1
- data/bundler/lib/bundler/cli.rb +269 -165
- data/bundler/lib/bundler/compact_index_client/cache.rb +7 -24
- data/bundler/lib/bundler/compact_index_client/gem_parser.rb +28 -0
- data/bundler/lib/bundler/compact_index_client/updater.rb +58 -57
- data/bundler/lib/bundler/compact_index_client.rb +28 -18
- data/bundler/lib/bundler/constants.rb +1 -1
- data/bundler/lib/bundler/current_ruby.rb +26 -11
- data/bundler/lib/bundler/definition.rb +359 -441
- data/bundler/lib/bundler/dependency.rb +29 -71
- data/bundler/lib/bundler/deployment.rb +1 -1
- data/bundler/lib/bundler/digest.rb +71 -0
- data/bundler/lib/bundler/dsl.rb +84 -116
- data/bundler/lib/bundler/endpoint_specification.rb +20 -14
- data/bundler/lib/bundler/env.rb +10 -15
- data/bundler/lib/bundler/environment_preserver.rb +30 -3
- data/bundler/lib/bundler/errors.rb +31 -14
- data/bundler/lib/bundler/feature_flag.rb +13 -33
- data/bundler/lib/bundler/fetcher/base.rb +7 -9
- data/bundler/lib/bundler/fetcher/compact_index.rb +46 -39
- data/bundler/lib/bundler/fetcher/dependency.rb +2 -2
- data/bundler/lib/bundler/fetcher/downloader.rb +15 -12
- data/bundler/lib/bundler/fetcher/index.rb +4 -30
- data/bundler/lib/bundler/fetcher.rb +39 -41
- data/bundler/lib/bundler/force_platform.rb +18 -0
- data/bundler/lib/bundler/friendly_errors.rb +49 -54
- data/bundler/lib/bundler/gem_helper.rb +79 -43
- data/bundler/lib/bundler/gem_helpers.rb +44 -28
- data/bundler/lib/bundler/gem_tasks.rb +1 -1
- data/bundler/lib/bundler/gem_version_promoter.rb +54 -99
- data/bundler/lib/bundler/graph.rb +5 -5
- data/bundler/lib/bundler/index.rb +14 -52
- data/bundler/lib/bundler/injector.rb +50 -16
- data/bundler/lib/bundler/inline.rb +28 -29
- data/bundler/lib/bundler/installer/gem_installer.rb +22 -23
- data/bundler/lib/bundler/installer/parallel_installer.rb +51 -51
- data/bundler/lib/bundler/installer/standalone.rb +62 -12
- data/bundler/lib/bundler/installer.rb +46 -97
- data/bundler/lib/bundler/lazy_specification.rb +88 -48
- data/bundler/lib/bundler/lockfile_generator.rb +3 -3
- data/bundler/lib/bundler/lockfile_parser.rb +30 -62
- data/bundler/{man → lib/bundler/man}/bundle-add.1 +29 -5
- data/bundler/{man/bundle-add.ronn → lib/bundler/man/bundle-add.1.ronn} +22 -4
- data/bundler/{man → lib/bundler/man}/bundle-binstubs.1 +6 -4
- data/bundler/{man/bundle-binstubs.ronn → lib/bundler/man/bundle-binstubs.1.ronn} +3 -5
- data/bundler/lib/bundler/man/bundle-cache.1 +61 -0
- data/bundler/{man/bundle-package.ronn → lib/bundler/man/bundle-cache.1.ronn} +22 -15
- data/bundler/{man → lib/bundler/man}/bundle-check.1 +1 -1
- data/bundler/{man → lib/bundler/man}/bundle-clean.1 +2 -2
- data/bundler/{man/bundle-clean.ronn → lib/bundler/man/bundle-clean.1.ronn} +1 -1
- data/bundler/{man → lib/bundler/man}/bundle-config.1 +78 -60
- data/bundler/{man/bundle-config.ronn → lib/bundler/man/bundle-config.1.ronn} +96 -85
- data/bundler/lib/bundler/man/bundle-console.1 +53 -0
- data/bundler/lib/bundler/man/bundle-console.1.ronn +44 -0
- data/bundler/{man → lib/bundler/man}/bundle-doctor.1 +1 -1
- data/bundler/{man → lib/bundler/man}/bundle-exec.1 +6 -6
- data/bundler/{man/bundle-exec.ronn → lib/bundler/man/bundle-exec.1.ronn} +6 -6
- data/bundler/lib/bundler/man/bundle-gem.1 +105 -0
- data/bundler/lib/bundler/man/bundle-gem.1.ronn +117 -0
- data/bundler/lib/bundler/man/bundle-help.1 +13 -0
- data/bundler/lib/bundler/man/bundle-help.1.ronn +12 -0
- data/bundler/{man → lib/bundler/man}/bundle-info.1 +1 -1
- data/bundler/{man → lib/bundler/man}/bundle-init.1 +6 -2
- data/bundler/{man/bundle-init.ronn → lib/bundler/man/bundle-init.1.ronn} +3 -1
- data/bundler/{man → lib/bundler/man}/bundle-inject.1 +5 -2
- data/bundler/{man/bundle-inject.ronn → lib/bundler/man/bundle-inject.1.ronn} +3 -1
- data/bundler/{man → lib/bundler/man}/bundle-install.1 +42 -37
- data/bundler/{man/bundle-install.ronn → lib/bundler/man/bundle-install.1.ronn} +42 -38
- data/bundler/{man → lib/bundler/man}/bundle-list.1 +7 -7
- data/bundler/{man/bundle-list.ronn → lib/bundler/man/bundle-list.1.ronn} +6 -6
- data/bundler/{man → lib/bundler/man}/bundle-lock.1 +1 -1
- data/bundler/{man → lib/bundler/man}/bundle-open.1 +22 -2
- data/bundler/{man/bundle-open.ronn → lib/bundler/man/bundle-open.1.ronn} +9 -1
- data/bundler/{man → lib/bundler/man}/bundle-outdated.1 +3 -10
- data/bundler/{man/bundle-outdated.ronn → lib/bundler/man/bundle-outdated.1.ronn} +1 -10
- data/bundler/{man → lib/bundler/man}/bundle-platform.1 +16 -6
- data/bundler/{man/bundle-platform.ronn → lib/bundler/man/bundle-platform.1.ronn} +14 -7
- data/bundler/lib/bundler/man/bundle-plugin.1 +81 -0
- data/bundler/lib/bundler/man/bundle-plugin.1.ronn +59 -0
- data/bundler/{man → lib/bundler/man}/bundle-pristine.1 +1 -1
- data/bundler/{man → lib/bundler/man}/bundle-remove.1 +1 -1
- data/bundler/{man → lib/bundler/man}/bundle-show.1 +1 -1
- data/bundler/{man → lib/bundler/man}/bundle-update.1 +8 -8
- data/bundler/{man/bundle-update.ronn → lib/bundler/man/bundle-update.1.ronn} +8 -7
- data/bundler/lib/bundler/man/bundle-version.1 +35 -0
- data/bundler/lib/bundler/man/bundle-version.1.ronn +24 -0
- data/bundler/{man → lib/bundler/man}/bundle-viz.1 +4 -1
- data/bundler/{man/bundle-viz.ronn → lib/bundler/man/bundle-viz.1.ronn} +2 -0
- data/bundler/{man → lib/bundler/man}/bundle.1 +17 -12
- data/bundler/{man/bundle.ronn → lib/bundler/man/bundle.1.ronn} +14 -9
- data/bundler/lib/bundler/man/gemfile.5 +723 -0
- data/bundler/{man → lib/bundler/man}/gemfile.5.ronn +112 -95
- data/bundler/lib/bundler/man/index.txt +29 -0
- data/bundler/lib/bundler/match_metadata.rb +13 -0
- data/bundler/lib/bundler/match_platform.rb +1 -2
- data/bundler/lib/bundler/match_remote_metadata.rb +29 -0
- data/bundler/lib/bundler/mirror.rb +10 -12
- data/bundler/lib/bundler/plugin/api/source.rb +29 -15
- data/bundler/lib/bundler/plugin/api.rb +1 -1
- data/bundler/lib/bundler/plugin/dsl.rb +1 -1
- data/bundler/lib/bundler/plugin/index.rb +31 -8
- data/bundler/lib/bundler/plugin/installer/git.rb +0 -4
- data/bundler/lib/bundler/plugin/installer/rubygems.rb +1 -9
- data/bundler/lib/bundler/plugin/installer.rb +35 -22
- data/bundler/lib/bundler/plugin/source_list.rb +5 -1
- data/bundler/lib/bundler/plugin.rb +102 -42
- data/bundler/lib/bundler/process_lock.rb +1 -1
- data/bundler/lib/bundler/remote_specification.rb +15 -8
- data/bundler/lib/bundler/resolver/base.rb +77 -0
- data/bundler/lib/bundler/resolver/candidate.rb +94 -0
- data/bundler/lib/bundler/resolver/incompatibility.rb +15 -0
- data/bundler/lib/bundler/resolver/package.rb +72 -0
- data/bundler/lib/bundler/resolver/root.rb +25 -0
- data/bundler/lib/bundler/resolver/spec_group.rb +49 -73
- data/bundler/lib/bundler/resolver.rb +343 -300
- data/bundler/lib/bundler/retry.rb +4 -4
- data/bundler/lib/bundler/ruby_dsl.rb +1 -1
- data/bundler/lib/bundler/ruby_version.rb +9 -37
- data/bundler/lib/bundler/rubygems_ext.rb +235 -92
- data/bundler/lib/bundler/rubygems_gem_installer.rb +87 -21
- data/bundler/lib/bundler/rubygems_integration.rb +179 -515
- data/bundler/lib/bundler/runtime.rb +25 -40
- data/bundler/lib/bundler/self_manager.rb +168 -0
- data/bundler/lib/bundler/settings.rb +162 -118
- data/bundler/lib/bundler/setup.rb +11 -12
- data/bundler/lib/bundler/shared_helpers.rb +61 -102
- data/bundler/lib/bundler/similarity_detector.rb +3 -3
- data/bundler/lib/bundler/source/git/git_proxy.rb +257 -128
- data/bundler/lib/bundler/source/git.rb +84 -61
- data/bundler/lib/bundler/source/metadata.rb +9 -9
- data/bundler/lib/bundler/source/path/installer.rb +11 -32
- data/bundler/lib/bundler/source/path.rb +28 -17
- data/bundler/lib/bundler/source/rubygems/remote.rb +3 -4
- data/bundler/lib/bundler/source/rubygems.rb +171 -197
- data/bundler/lib/bundler/source/rubygems_aggregate.rb +68 -0
- data/bundler/lib/bundler/source.rb +30 -10
- data/bundler/lib/bundler/source_list.rb +112 -67
- data/bundler/lib/bundler/source_map.rb +71 -0
- data/bundler/lib/bundler/spec_set.rb +86 -72
- data/bundler/lib/bundler/stub_specification.rb +45 -37
- data/bundler/lib/bundler/templates/Executable +3 -5
- data/bundler/lib/bundler/templates/Executable.bundler +21 -17
- data/bundler/lib/bundler/templates/Executable.standalone +4 -4
- data/bundler/lib/bundler/templates/Gemfile +0 -2
- data/bundler/lib/bundler/templates/newgem/CHANGELOG.md.tt +5 -0
- data/bundler/lib/bundler/templates/newgem/CODE_OF_CONDUCT.md.tt +57 -47
- data/bundler/lib/bundler/templates/newgem/Cargo.toml.tt +7 -0
- data/bundler/lib/bundler/templates/newgem/Gemfile.tt +22 -2
- data/bundler/lib/bundler/templates/newgem/README.md.tt +13 -15
- data/bundler/lib/bundler/templates/newgem/Rakefile.tt +33 -5
- data/bundler/lib/bundler/templates/newgem/bin/console.tt +1 -0
- data/bundler/lib/bundler/templates/newgem/circleci/config.yml.tt +25 -0
- data/bundler/lib/bundler/templates/newgem/ext/newgem/Cargo.toml.tt +15 -0
- data/bundler/lib/bundler/templates/newgem/ext/newgem/{extconf.rb.tt → extconf-c.rb.tt} +2 -0
- data/bundler/lib/bundler/templates/newgem/ext/newgem/extconf-rust.rb.tt +6 -0
- data/bundler/lib/bundler/templates/newgem/ext/newgem/src/lib.rs.tt +12 -0
- data/bundler/lib/bundler/templates/newgem/github/workflows/main.yml.tt +37 -0
- data/bundler/lib/bundler/templates/newgem/gitignore.tt +3 -0
- data/bundler/lib/bundler/templates/newgem/gitlab-ci.yml.tt +18 -0
- data/bundler/lib/bundler/templates/newgem/lib/newgem/version.rb.tt +2 -0
- data/bundler/lib/bundler/templates/newgem/lib/newgem.rb.tt +4 -2
- data/bundler/lib/bundler/templates/newgem/newgem.gemspec.tt +36 -41
- data/bundler/lib/bundler/templates/newgem/rubocop.yml.tt +13 -0
- data/bundler/lib/bundler/templates/newgem/sig/newgem.rbs.tt +8 -0
- data/bundler/lib/bundler/templates/newgem/spec/newgem_spec.rb.tt +2 -0
- data/bundler/lib/bundler/templates/newgem/spec/spec_helper.rb.tt +2 -1
- data/bundler/lib/bundler/templates/newgem/standard.yml.tt +3 -0
- data/bundler/lib/bundler/templates/newgem/test/minitest/test_helper.rb.tt +6 -0
- data/bundler/lib/bundler/templates/newgem/test/{newgem_test.rb.tt → minitest/test_newgem.rb.tt} +3 -1
- data/bundler/lib/bundler/templates/newgem/test/test-unit/newgem_test.rb.tt +15 -0
- data/bundler/lib/bundler/templates/newgem/test/test-unit/test_helper.rb.tt +6 -0
- data/bundler/lib/bundler/ui/rg_proxy.rb +1 -1
- data/bundler/lib/bundler/ui/shell.rb +39 -20
- data/bundler/lib/bundler/ui/silent.rb +21 -5
- data/bundler/lib/bundler/ui.rb +3 -3
- data/bundler/lib/bundler/uri_credentials_filter.rb +10 -4
- data/bundler/lib/bundler/vendor/.document +1 -0
- data/bundler/lib/bundler/vendor/connection_pool/LICENSE +20 -0
- data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/timed_stack.rb +174 -0
- data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/version.rb +3 -0
- data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/wrapper.rb +56 -0
- data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool.rb +128 -0
- data/bundler/lib/bundler/vendor/fileutils/LICENSE.txt +22 -0
- data/bundler/lib/bundler/vendor/fileutils/lib/fileutils.rb +1493 -425
- data/bundler/lib/bundler/vendor/net-http-persistent/README.rdoc +82 -0
- data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/connection.rb +40 -0
- data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/pool.rb +53 -0
- data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/timed_stack_multi.rb +79 -0
- data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb +302 -462
- data/bundler/lib/bundler/vendor/pub_grub/LICENSE.txt +21 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/assignment.rb +20 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/basic_package_source.rb +189 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/failure_writer.rb +182 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/incompatibility.rb +155 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/package.rb +43 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/partial_solution.rb +121 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/rubygems.rb +45 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/solve_failure.rb +19 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/static_package_source.rb +60 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/term.rb +105 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version.rb +3 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_constraint.rb +129 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_range.rb +411 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_solver.rb +243 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_union.rb +178 -0
- data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub.rb +31 -0
- data/bundler/lib/bundler/vendor/thor/LICENSE.md +20 -0
- data/bundler/lib/bundler/vendor/thor/lib/thor/actions/create_file.rb +1 -1
- data/bundler/lib/bundler/vendor/thor/lib/thor/actions/create_link.rb +3 -2
- data/bundler/lib/bundler/vendor/thor/lib/thor/actions/directory.rb +7 -17
- data/bundler/lib/bundler/vendor/thor/lib/thor/actions/file_manipulation.rb +25 -14
- data/bundler/lib/bundler/vendor/thor/lib/thor/actions/inject_into_file.rb +20 -10
- data/bundler/lib/bundler/vendor/thor/lib/thor/actions.rb +34 -15
- data/bundler/lib/bundler/vendor/thor/lib/thor/base.rb +63 -43
- data/bundler/lib/bundler/vendor/thor/lib/thor/command.rb +21 -14
- data/bundler/lib/bundler/vendor/thor/lib/thor/core_ext/hash_with_indifferent_access.rb +6 -0
- data/bundler/lib/bundler/vendor/thor/lib/thor/error.rb +83 -0
- data/bundler/lib/bundler/vendor/thor/lib/thor/group.rb +3 -3
- data/bundler/lib/bundler/vendor/thor/lib/thor/invocation.rb +1 -0
- data/bundler/lib/bundler/vendor/thor/lib/thor/line_editor/basic.rb +1 -1
- data/bundler/lib/bundler/vendor/thor/lib/thor/line_editor/readline.rb +6 -6
- data/bundler/lib/bundler/vendor/thor/lib/thor/line_editor.rb +2 -2
- data/bundler/lib/bundler/vendor/thor/lib/thor/nested_context.rb +29 -0
- data/bundler/lib/bundler/vendor/thor/lib/thor/parser/arguments.rb +7 -3
- data/bundler/lib/bundler/vendor/thor/lib/thor/parser/option.rb +20 -7
- data/bundler/lib/bundler/vendor/thor/lib/thor/parser/options.rb +40 -6
- data/bundler/lib/bundler/vendor/thor/lib/thor/parser.rb +4 -4
- data/bundler/lib/bundler/vendor/thor/lib/thor/rake_compat.rb +1 -0
- data/bundler/lib/bundler/vendor/thor/lib/thor/runner.rb +15 -14
- data/bundler/lib/bundler/vendor/thor/lib/thor/shell/basic.rb +88 -13
- data/bundler/lib/bundler/vendor/thor/lib/thor/shell/color.rb +10 -2
- data/bundler/lib/bundler/vendor/thor/lib/thor/shell/html.rb +3 -3
- data/bundler/lib/bundler/vendor/thor/lib/thor/shell.rb +5 -5
- data/bundler/lib/bundler/vendor/thor/lib/thor/util.rb +18 -2
- data/bundler/lib/bundler/vendor/thor/lib/thor/version.rb +1 -1
- data/bundler/lib/bundler/vendor/thor/lib/thor.rb +16 -9
- data/bundler/lib/bundler/vendor/tsort/LICENSE.txt +22 -0
- data/bundler/lib/bundler/vendor/tsort/lib/tsort.rb +452 -0
- data/bundler/lib/bundler/vendor/uri/LICENSE.txt +22 -0
- data/bundler/lib/bundler/vendor/uri/lib/uri/common.rb +729 -0
- data/bundler/lib/bundler/vendor/uri/lib/uri/file.rb +100 -0
- data/bundler/lib/bundler/vendor/uri/lib/uri/ftp.rb +267 -0
- data/bundler/lib/bundler/vendor/uri/lib/uri/generic.rb +1587 -0
- data/bundler/lib/bundler/vendor/uri/lib/uri/http.rb +125 -0
- data/bundler/lib/bundler/vendor/uri/lib/uri/https.rb +23 -0
- data/bundler/lib/bundler/vendor/uri/lib/uri/ldap.rb +261 -0
- data/bundler/lib/bundler/vendor/uri/lib/uri/ldaps.rb +22 -0
- data/bundler/lib/bundler/vendor/uri/lib/uri/mailto.rb +293 -0
- data/bundler/lib/bundler/vendor/uri/lib/uri/rfc2396_parser.rb +539 -0
- data/bundler/lib/bundler/vendor/uri/lib/uri/rfc3986_parser.rb +119 -0
- data/bundler/lib/bundler/vendor/uri/lib/uri/version.rb +6 -0
- data/bundler/lib/bundler/vendor/uri/lib/uri/ws.rb +83 -0
- data/bundler/lib/bundler/vendor/uri/lib/uri/wss.rb +23 -0
- data/bundler/lib/bundler/vendor/uri/lib/uri.rb +104 -0
- data/bundler/lib/bundler/vendored_fileutils.rb +1 -6
- data/bundler/lib/bundler/vendored_persistent.rb +2 -39
- data/bundler/lib/bundler/{vendored_molinillo.rb → vendored_pub_grub.rb} +1 -1
- data/bundler/lib/bundler/vendored_thor.rb +2 -2
- data/bundler/lib/bundler/vendored_tsort.rb +4 -0
- data/bundler/lib/bundler/vendored_uri.rb +4 -0
- data/bundler/lib/bundler/version.rb +5 -20
- data/bundler/lib/bundler/vlad.rb +2 -2
- data/bundler/lib/bundler/worker.rb +26 -15
- data/bundler/lib/bundler/yaml_serializer.rb +3 -4
- data/bundler/lib/bundler.rb +285 -183
- data/hide_lib_for_update/note.txt +0 -4
- data/lib/rubygems/available_set.rb +7 -8
- data/lib/rubygems/basic_specification.rb +44 -31
- data/lib/rubygems/bundler_version_finder.rb +28 -50
- data/lib/rubygems/command.rb +104 -46
- data/lib/rubygems/command_manager.rb +35 -16
- data/lib/rubygems/commands/build_command.rb +77 -26
- data/lib/rubygems/commands/cert_command.rb +78 -76
- data/lib/rubygems/commands/check_command.rb +20 -22
- data/lib/rubygems/commands/cleanup_command.rb +36 -32
- data/lib/rubygems/commands/contents_command.rb +16 -18
- data/lib/rubygems/commands/dependency_command.rb +39 -50
- data/lib/rubygems/commands/environment_command.rb +11 -13
- data/lib/rubygems/commands/fetch_command.rb +33 -16
- data/lib/rubygems/commands/generate_index_command.rb +18 -17
- data/lib/rubygems/commands/help_command.rb +7 -7
- data/lib/rubygems/commands/info_command.rb +11 -6
- data/lib/rubygems/commands/install_command.rb +45 -79
- data/lib/rubygems/commands/list_command.rb +9 -8
- data/lib/rubygems/commands/lock_command.rb +7 -9
- data/lib/rubygems/commands/mirror_command.rb +3 -4
- data/lib/rubygems/commands/open_command.rb +11 -14
- data/lib/rubygems/commands/outdated_command.rb +5 -6
- data/lib/rubygems/commands/owner_command.rb +29 -22
- data/lib/rubygems/commands/pristine_command.rb +61 -51
- data/lib/rubygems/commands/push_command.rb +26 -63
- data/lib/rubygems/commands/query_command.rb +21 -337
- data/lib/rubygems/commands/rdoc_command.rb +26 -26
- data/lib/rubygems/commands/search_command.rb +8 -8
- data/lib/rubygems/commands/server_command.rb +16 -77
- data/lib/rubygems/commands/setup_command.rb +282 -241
- data/lib/rubygems/commands/signin_command.rb +9 -10
- data/lib/rubygems/commands/signout_command.rb +7 -9
- data/lib/rubygems/commands/sources_command.rb +42 -26
- data/lib/rubygems/commands/specification_command.rb +25 -20
- data/lib/rubygems/commands/stale_command.rb +3 -3
- data/lib/rubygems/commands/uninstall_command.rb +58 -49
- data/lib/rubygems/commands/unpack_command.rb +15 -44
- data/lib/rubygems/commands/update_command.rb +133 -81
- data/lib/rubygems/commands/which_command.rb +8 -11
- data/lib/rubygems/commands/yank_command.rb +22 -19
- data/lib/rubygems/compatibility.rb +7 -5
- data/lib/rubygems/config_file.rb +101 -47
- data/lib/rubygems/core_ext/kernel_gem.rb +8 -12
- data/lib/rubygems/core_ext/kernel_require.rb +124 -83
- data/lib/rubygems/core_ext/kernel_warn.rb +35 -30
- data/lib/rubygems/core_ext/tcpsocket_init.rb +52 -0
- data/lib/rubygems/defaults.rb +131 -55
- data/lib/rubygems/dependency.rb +44 -27
- data/lib/rubygems/dependency_installer.rb +49 -205
- data/lib/rubygems/dependency_list.rb +24 -25
- data/lib/rubygems/deprecate.rb +106 -12
- data/lib/rubygems/doctor.rb +22 -22
- data/lib/rubygems/errors.rb +8 -14
- data/lib/rubygems/exceptions.rb +35 -33
- data/lib/rubygems/ext/build_error.rb +2 -0
- data/lib/rubygems/ext/builder.rb +71 -95
- data/lib/rubygems/ext/cargo_builder/link_flag_converter.rb +27 -0
- data/lib/rubygems/ext/cargo_builder.rb +360 -0
- data/lib/rubygems/ext/cmake_builder.rb +6 -7
- data/lib/rubygems/ext/configure_builder.rb +5 -8
- data/lib/rubygems/ext/ext_conf_builder.rb +45 -65
- data/lib/rubygems/ext/rake_builder.rb +7 -10
- data/lib/rubygems/ext.rb +7 -6
- data/lib/rubygems/gem_runner.rb +15 -26
- data/lib/rubygems/gemcutter_utilities.rb +179 -54
- data/lib/rubygems/indexer.rb +38 -53
- data/lib/rubygems/install_default_message.rb +2 -2
- data/lib/rubygems/install_message.rb +2 -2
- data/lib/rubygems/install_update_options.rb +73 -64
- data/lib/rubygems/installer.rb +230 -173
- data/lib/rubygems/installer_uninstaller_utils.rb +29 -0
- data/lib/rubygems/local_remote_options.rb +22 -24
- data/lib/rubygems/mock_gem_ui.rb +2 -5
- data/lib/rubygems/name_tuple.rb +10 -14
- data/lib/rubygems/openssl.rb +7 -0
- data/lib/rubygems/optparse/.document +1 -0
- data/lib/rubygems/optparse/COPYING +56 -0
- data/lib/rubygems/optparse/lib/optionparser.rb +2 -0
- data/lib/rubygems/optparse/lib/optparse/ac.rb +54 -0
- data/lib/rubygems/optparse/lib/optparse/date.rb +18 -0
- data/lib/rubygems/optparse/lib/optparse/kwargs.rb +22 -0
- data/lib/rubygems/optparse/lib/optparse/shellwords.rb +7 -0
- data/lib/rubygems/optparse/lib/optparse/time.rb +11 -0
- data/lib/rubygems/optparse/lib/optparse/uri.rb +7 -0
- data/lib/rubygems/optparse/lib/optparse/version.rb +71 -0
- data/lib/rubygems/optparse/lib/optparse.rb +2308 -0
- data/lib/rubygems/optparse.rb +3 -0
- data/lib/rubygems/package/digest_io.rb +0 -2
- data/lib/rubygems/package/file_source.rb +2 -4
- data/lib/rubygems/package/io_source.rb +4 -2
- data/lib/rubygems/package/old.rb +9 -11
- data/lib/rubygems/package/tar_header.rb +73 -66
- data/lib/rubygems/package/tar_reader/entry.rb +8 -9
- data/lib/rubygems/package/tar_reader.rb +16 -13
- data/lib/rubygems/package/tar_writer.rb +12 -22
- data/lib/rubygems/package.rb +142 -125
- data/lib/rubygems/package_task.rb +5 -11
- data/lib/rubygems/path_support.rb +3 -8
- data/lib/rubygems/platform.rb +113 -73
- data/lib/rubygems/psych_tree.rb +1 -1
- data/lib/rubygems/query_utils.rb +351 -0
- data/lib/rubygems/rdoc.rb +4 -16
- data/lib/rubygems/remote_fetcher.rb +64 -136
- data/lib/rubygems/request/connection_pools.rb +7 -11
- data/lib/rubygems/request/http_pool.rb +2 -3
- data/lib/rubygems/request.rb +31 -32
- data/lib/rubygems/request_set/gem_dependency_api.rb +135 -136
- data/lib/rubygems/request_set/lockfile/parser.rb +28 -28
- data/lib/rubygems/request_set/lockfile/tokenizer.rb +5 -5
- data/lib/rubygems/request_set/lockfile.rb +21 -20
- data/lib/rubygems/request_set.rb +30 -43
- data/lib/rubygems/requirement.rb +42 -64
- data/lib/rubygems/resolver/activation_request.rb +29 -53
- data/lib/rubygems/resolver/api_set/gem_parser.rb +20 -0
- data/lib/rubygems/resolver/api_set.rb +33 -26
- data/lib/rubygems/resolver/api_specification.rb +30 -16
- data/lib/rubygems/resolver/best_set.rb +9 -11
- data/lib/rubygems/resolver/composed_set.rb +3 -5
- data/lib/rubygems/resolver/conflict.rb +12 -19
- data/lib/rubygems/resolver/current_set.rb +0 -2
- data/lib/rubygems/resolver/dependency_request.rb +3 -5
- data/lib/rubygems/resolver/git_set.rb +2 -4
- data/lib/rubygems/resolver/git_specification.rb +6 -8
- data/lib/rubygems/resolver/index_set.rb +4 -6
- data/lib/rubygems/resolver/index_specification.rb +38 -7
- data/lib/rubygems/resolver/installed_specification.rb +4 -6
- data/lib/rubygems/resolver/installer_set.rb +69 -27
- data/lib/rubygems/resolver/local_specification.rb +2 -4
- data/lib/rubygems/resolver/lock_set.rb +7 -9
- data/lib/rubygems/resolver/lock_specification.rb +6 -8
- data/lib/rubygems/resolver/molinillo/LICENSE +9 -0
- data/lib/rubygems/resolver/molinillo/lib/molinillo/delegates/resolution_state.rb +7 -0
- data/lib/rubygems/resolver/molinillo/lib/molinillo/delegates/specification_provider.rb +8 -0
- data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/action.rb +1 -0
- data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/add_edge_no_circular.rb +2 -1
- data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/add_vertex.rb +2 -1
- data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/delete_edge.rb +2 -1
- data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/detach_vertex_named.rb +2 -1
- data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/log.rb +7 -6
- data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/set_payload.rb +2 -1
- data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/tag.rb +4 -3
- data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/vertex.rb +51 -12
- data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph.rb +42 -9
- data/lib/rubygems/resolver/molinillo/lib/molinillo/errors.rb +82 -8
- data/lib/rubygems/resolver/molinillo/lib/molinillo/gem_metadata.rb +2 -1
- data/lib/rubygems/resolver/molinillo/lib/molinillo/modules/specification_provider.rb +13 -1
- data/lib/rubygems/resolver/molinillo/lib/molinillo/modules/ui.rb +3 -1
- data/lib/rubygems/resolver/molinillo/lib/molinillo/resolution.rb +510 -165
- data/lib/rubygems/resolver/molinillo/lib/molinillo/resolver.rb +3 -2
- data/lib/rubygems/resolver/molinillo/lib/molinillo/state.rb +8 -4
- data/lib/rubygems/resolver/molinillo/lib/molinillo.rb +6 -5
- data/lib/rubygems/resolver/molinillo.rb +1 -1
- data/lib/rubygems/resolver/requirement_list.rb +0 -1
- data/lib/rubygems/resolver/set.rb +0 -3
- data/lib/rubygems/resolver/source_set.rb +0 -2
- data/lib/rubygems/resolver/spec_specification.rb +14 -2
- data/lib/rubygems/resolver/specification.rb +14 -3
- data/lib/rubygems/resolver/vendor_set.rb +1 -3
- data/lib/rubygems/resolver/vendor_specification.rb +3 -5
- data/lib/rubygems/resolver.rb +58 -54
- data/lib/rubygems/s3_uri_signer.rb +175 -0
- data/lib/rubygems/safe_yaml.rb +14 -16
- data/lib/rubygems/security/policies.rb +47 -47
- data/lib/rubygems/security/policy.rb +25 -29
- data/lib/rubygems/security/signer.rb +16 -18
- data/lib/rubygems/security/trust_dir.rb +5 -6
- data/lib/rubygems/security.rb +90 -69
- data/lib/rubygems/security_option.rb +7 -8
- data/lib/rubygems/source/git.rb +30 -30
- data/lib/rubygems/source/installed.rb +1 -3
- data/lib/rubygems/source/local.rb +4 -6
- data/lib/rubygems/source/lock.rb +0 -2
- data/lib/rubygems/source/specific_file.rb +1 -3
- data/lib/rubygems/source/vendor.rb +0 -2
- data/lib/rubygems/source.rb +50 -38
- data/lib/rubygems/source_list.rb +9 -13
- data/lib/rubygems/spec_fetcher.rb +52 -64
- data/lib/rubygems/specification.rb +432 -463
- data/lib/rubygems/specification_policy.rb +185 -87
- data/lib/rubygems/ssl_certs/rubygems.org/GlobalSignRootCA_R3.pem +21 -0
- data/lib/rubygems/stub_specification.rb +24 -29
- data/lib/rubygems/text.rb +21 -21
- data/lib/rubygems/tsort/.document +1 -0
- data/lib/rubygems/tsort/LICENSE.txt +22 -0
- data/lib/rubygems/tsort/lib/tsort.rb +452 -0
- data/lib/rubygems/tsort.rb +3 -0
- data/lib/rubygems/uninstaller.rb +110 -57
- data/lib/rubygems/unknown_command_spell_checker.rb +21 -0
- data/lib/rubygems/update_suggestion.rb +69 -0
- data/lib/rubygems/uri.rb +126 -0
- data/lib/rubygems/uri_formatter.rb +2 -4
- data/lib/rubygems/user_interaction.rb +46 -49
- data/lib/rubygems/util/licenses.rb +511 -404
- data/lib/rubygems/util.rb +40 -56
- data/lib/rubygems/validator.rb +15 -37
- data/lib/rubygems/version.rb +48 -29
- data/lib/rubygems/version_option.rb +11 -5
- data/lib/rubygems.rb +305 -332
- data/rubygems-update.gemspec +6 -13
- data/setup.rb +11 -22
- data/test/rubygems/alternate_cert.pem +14 -14
- data/test/rubygems/alternate_cert_32.pem +15 -15
- data/test/rubygems/alternate_key.pem +25 -25
- data/test/rubygems/bundler_test_gem.rb +419 -0
- data/test/rubygems/ca_cert.pem +74 -65
- data/test/rubygems/child_cert.pem +15 -16
- data/test/rubygems/child_cert_32.pem +15 -16
- data/test/rubygems/child_key.pem +25 -25
- data/test/rubygems/client.pem +103 -45
- data/test/rubygems/data/excon-0.7.7.gemspec.rz +0 -0
- data/test/rubygems/data/null-required-ruby-version.gemspec.rz +0 -0
- data/test/rubygems/data/null-required-rubygems-version.gemspec.rz +0 -0
- data/test/rubygems/data/pry-0.4.7.gemspec.rz +0 -0
- data/test/rubygems/encrypted_private_key.pem +26 -26
- data/test/rubygems/expired_cert.pem +15 -15
- data/test/rubygems/future_cert.pem +15 -15
- data/test/rubygems/future_cert_32.pem +15 -15
- data/test/rubygems/grandchild_cert.pem +15 -16
- data/test/rubygems/grandchild_cert_32.pem +15 -16
- data/test/rubygems/grandchild_key.pem +25 -25
- data/{lib/rubygems/test_case.rb → test/rubygems/helper.rb} +505 -507
- data/{lib → test}/rubygems/installer_test_case.rb +115 -53
- data/test/rubygems/invalid_issuer_cert.pem +16 -16
- data/test/rubygems/invalid_issuer_cert_32.pem +16 -16
- data/test/rubygems/invalid_key.pem +25 -25
- data/test/rubygems/invalid_signer_cert.pem +15 -15
- data/test/rubygems/invalid_signer_cert_32.pem +15 -15
- data/test/rubygems/invalidchild_cert.pem +15 -16
- data/test/rubygems/invalidchild_cert_32.pem +15 -16
- data/test/rubygems/invalidchild_key.pem +25 -25
- data/{lib → test}/rubygems/package/tar_test_case.rb +4 -6
- data/test/rubygems/packages/Bluebie-legs-0.6.2.gem +0 -0
- data/test/rubygems/packages/ascii_binder-0.1.10.1.gem +0 -0
- data/test/rubygems/packages/ill-formatted-platform-1.0.0.10.gem +0 -0
- data/test/rubygems/plugin/exception/rubygems_plugin.rb +1 -1
- data/test/rubygems/plugin/standarderror/rubygems_plugin.rb +1 -1
- data/test/rubygems/private_ec_key.pem +9 -0
- data/test/rubygems/private_key.pem +25 -25
- data/test/rubygems/public_cert.pem +16 -16
- data/test/rubygems/public_cert_32.pem +15 -15
- data/test/rubygems/public_key.pem +7 -7
- data/test/rubygems/rubygems/commands/crash_command.rb +0 -2
- data/test/rubygems/rubygems_plugin.rb +2 -4
- data/test/rubygems/specifications/bar-0.0.2.gemspec +0 -2
- data/test/rubygems/specifications/rubyforge-0.0.1.gemspec +12 -0
- data/test/rubygems/ssl_cert.pem +78 -17
- data/test/rubygems/ssl_key.pem +25 -13
- data/test/rubygems/test_bundled_ca.rb +44 -47
- data/test/rubygems/test_config.rb +5 -7
- data/test/rubygems/test_deprecate.rb +90 -10
- data/test/rubygems/test_exit.rb +17 -0
- data/test/rubygems/test_gem.rb +679 -885
- data/test/rubygems/test_gem_available_set.rb +24 -25
- data/test/rubygems/test_gem_bundler_version_finder.rb +42 -42
- data/test/rubygems/test_gem_command.rb +186 -39
- data/test/rubygems/test_gem_command_manager.rb +166 -36
- data/test/rubygems/test_gem_commands_build_command.rb +436 -52
- data/test/rubygems/test_gem_commands_cert_command.rb +193 -124
- data/test/rubygems/test_gem_commands_check_command.rb +9 -11
- data/test/rubygems/test_gem_commands_cleanup_command.rb +87 -62
- data/test/rubygems/test_gem_commands_contents_command.rb +73 -42
- data/test/rubygems/test_gem_commands_dependency_command.rb +39 -41
- data/test/rubygems/test_gem_commands_environment_command.rb +60 -48
- data/test/rubygems/test_gem_commands_fetch_command.rb +163 -32
- data/test/rubygems/test_gem_commands_generate_index_command.rb +39 -9
- data/test/rubygems/test_gem_commands_help_command.rb +34 -19
- data/test/rubygems/test_gem_commands_info_command.rb +34 -9
- data/test/rubygems/test_gem_commands_install_command.rb +600 -173
- data/test/rubygems/test_gem_commands_list_command.rb +5 -7
- data/test/rubygems/test_gem_commands_lock_command.rb +11 -13
- data/test/rubygems/test_gem_commands_mirror.rb +3 -4
- data/test/rubygems/test_gem_commands_open_command.rb +16 -19
- data/test/rubygems/test_gem_commands_outdated_command.rb +24 -7
- data/test/rubygems/test_gem_commands_owner_command.rb +183 -49
- data/test/rubygems/test_gem_commands_pristine_command.rb +222 -89
- data/test/rubygems/test_gem_commands_push_command.rb +178 -69
- data/test/rubygems/test_gem_commands_query_command.rb +114 -89
- data/test/rubygems/test_gem_commands_search_command.rb +2 -4
- data/test/rubygems/test_gem_commands_server_command.rb +6 -46
- data/test/rubygems/test_gem_commands_setup_command.rb +334 -157
- data/test/rubygems/test_gem_commands_signin_command.rb +187 -27
- data/test/rubygems/test_gem_commands_signout_command.rb +3 -10
- data/test/rubygems/test_gem_commands_sources_command.rb +266 -33
- data/test/rubygems/test_gem_commands_specification_command.rb +81 -55
- data/test/rubygems/test_gem_commands_stale_command.rb +4 -6
- data/test/rubygems/test_gem_commands_uninstall_command.rb +230 -95
- data/test/rubygems/test_gem_commands_unpack_command.rb +32 -34
- data/test/rubygems/test_gem_commands_update_command.rb +412 -102
- data/test/rubygems/test_gem_commands_which_command.rb +12 -14
- data/test/rubygems/test_gem_commands_yank_command.rb +107 -26
- data/test/rubygems/test_gem_config_file.rb +120 -96
- data/test/rubygems/test_gem_dependency.rb +94 -86
- data/test/rubygems/test_gem_dependency_installer.rb +305 -388
- data/test/rubygems/test_gem_dependency_list.rb +66 -61
- data/test/rubygems/test_gem_dependency_resolution_error.rb +5 -7
- data/test/rubygems/test_gem_doctor.rb +73 -47
- data/test/rubygems/test_gem_ext_builder.rb +116 -106
- data/test/rubygems/test_gem_ext_cargo_builder/custom_name/.gitignore +1 -0
- data/test/rubygems/test_gem_ext_cargo_builder/custom_name/custom_name.gemspec +8 -0
- data/test/rubygems/test_gem_ext_cargo_builder/custom_name/ext/custom_name_lib/Cargo.lock +233 -0
- data/test/rubygems/test_gem_ext_cargo_builder/custom_name/ext/custom_name_lib/Cargo.toml +10 -0
- data/test/rubygems/test_gem_ext_cargo_builder/custom_name/ext/custom_name_lib/src/lib.rs +27 -0
- data/test/rubygems/test_gem_ext_cargo_builder/custom_name/lib/custom_name.rb +1 -0
- data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/.gitignore +1 -0
- data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/Cargo.lock +233 -0
- data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/Cargo.toml +10 -0
- data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/rust_ruby_example.gemspec +8 -0
- data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/src/lib.rs +51 -0
- data/test/rubygems/test_gem_ext_cargo_builder.rb +166 -0
- data/test/rubygems/test_gem_ext_cargo_builder_link_flag_converter.rb +33 -0
- data/test/rubygems/test_gem_ext_cargo_builder_unit.rb +60 -0
- data/test/rubygems/test_gem_ext_cmake_builder.rb +32 -37
- data/test/rubygems/test_gem_ext_configure_builder.rb +23 -31
- data/test/rubygems/test_gem_ext_ext_conf_builder.rb +75 -79
- data/test/rubygems/test_gem_ext_rake_builder.rb +49 -30
- data/test/rubygems/test_gem_gem_runner.rb +52 -7
- data/test/rubygems/test_gem_gemcutter_utilities.rb +91 -76
- data/test/rubygems/test_gem_impossible_dependencies_error.rb +4 -6
- data/test/rubygems/test_gem_indexer.rb +120 -105
- data/test/rubygems/test_gem_install_update_options.rb +57 -33
- data/test/rubygems/test_gem_installer.rb +1230 -644
- data/test/rubygems/test_gem_local_remote_options.rb +11 -13
- data/test/rubygems/test_gem_name_tuple.rb +4 -6
- data/test/rubygems/test_gem_package.rb +396 -266
- data/test/rubygems/test_gem_package_old.rb +57 -56
- data/test/rubygems/test_gem_package_tar_header.rb +108 -50
- data/test/rubygems/test_gem_package_tar_reader.rb +8 -10
- data/test/rubygems/test_gem_package_tar_reader_entry.rb +77 -20
- data/test/rubygems/test_gem_package_tar_writer.rb +107 -101
- data/test/rubygems/test_gem_package_task.rb +58 -25
- data/test/rubygems/test_gem_path_support.rb +29 -29
- data/test/rubygems/test_gem_platform.rb +388 -199
- data/test/rubygems/test_gem_rdoc.rb +20 -155
- data/test/rubygems/test_gem_remote_fetcher.rb +474 -303
- data/test/rubygems/test_gem_request.rb +128 -85
- data/test/rubygems/test_gem_request_connection_pools.rb +32 -32
- data/test/rubygems/test_gem_request_set.rb +186 -110
- data/test/rubygems/test_gem_request_set_gem_dependency_api.rb +280 -261
- data/test/rubygems/test_gem_request_set_lockfile.rb +93 -94
- data/test/rubygems/test_gem_request_set_lockfile_parser.rb +68 -69
- data/test/rubygems/test_gem_request_set_lockfile_tokenizer.rb +136 -136
- data/test/rubygems/test_gem_requirement.rb +140 -55
- data/test/rubygems/test_gem_resolver.rb +224 -115
- data/test/rubygems/test_gem_resolver_activation_request.rb +9 -40
- data/test/rubygems/test_gem_resolver_api_set.rb +79 -78
- data/test/rubygems/test_gem_resolver_api_specification.rb +47 -49
- data/test/rubygems/test_gem_resolver_best_set.rb +43 -22
- data/test/rubygems/test_gem_resolver_composed_set.rb +1 -3
- data/test/rubygems/test_gem_resolver_conflict.rb +12 -18
- data/test/rubygems/test_gem_resolver_dependency_request.rb +15 -17
- data/test/rubygems/test_gem_resolver_git_set.rb +22 -24
- data/test/rubygems/test_gem_resolver_git_specification.rb +22 -22
- data/test/rubygems/test_gem_resolver_index_set.rb +14 -16
- data/test/rubygems/test_gem_resolver_index_specification.rb +21 -18
- data/test/rubygems/test_gem_resolver_installed_specification.rb +5 -8
- data/test/rubygems/test_gem_resolver_installer_set.rb +106 -44
- data/test/rubygems/test_gem_resolver_local_specification.rb +7 -9
- data/test/rubygems/test_gem_resolver_lock_set.rb +15 -17
- data/test/rubygems/test_gem_resolver_lock_specification.rb +17 -19
- data/test/rubygems/test_gem_resolver_requirement_list.rb +1 -3
- data/test/rubygems/test_gem_resolver_specification.rb +8 -10
- data/test/rubygems/test_gem_resolver_vendor_set.rb +9 -11
- data/test/rubygems/test_gem_resolver_vendor_specification.rb +10 -12
- data/test/rubygems/test_gem_security.rb +109 -79
- data/test/rubygems/test_gem_security_policy.rb +102 -107
- data/test/rubygems/test_gem_security_signer.rb +51 -52
- data/test/rubygems/test_gem_security_trust_dir.rb +14 -16
- data/test/rubygems/test_gem_silent_ui.rb +47 -42
- data/test/rubygems/test_gem_source.rb +66 -51
- data/test/rubygems/test_gem_source_fetch_problem.rb +17 -8
- data/test/rubygems/test_gem_source_git.rb +74 -74
- data/test/rubygems/test_gem_source_installed.rb +16 -18
- data/test/rubygems/test_gem_source_list.rb +5 -5
- data/test/rubygems/test_gem_source_local.rb +15 -16
- data/test/rubygems/test_gem_source_lock.rb +31 -33
- data/test/rubygems/test_gem_source_specific_file.rb +18 -19
- data/test/rubygems/test_gem_source_subpath_problem.rb +49 -0
- data/test/rubygems/test_gem_source_vendor.rb +13 -15
- data/test/rubygems/test_gem_spec_fetcher.rb +74 -67
- data/test/rubygems/test_gem_specification.rb +1051 -1071
- data/test/rubygems/test_gem_stream_ui.rb +25 -23
- data/test/rubygems/test_gem_stub_specification.rb +39 -56
- data/test/rubygems/test_gem_text.rb +8 -3
- data/test/rubygems/test_gem_uninstaller.rb +269 -100
- data/test/rubygems/test_gem_unsatisfiable_dependency_error.rb +3 -5
- data/test/rubygems/test_gem_update_suggestion.rb +208 -0
- data/test/rubygems/test_gem_uri.rb +39 -0
- data/test/rubygems/test_gem_uri_formatter.rb +14 -16
- data/test/rubygems/test_gem_util.rb +46 -34
- data/test/rubygems/test_gem_validator.rb +12 -15
- data/test/rubygems/test_gem_version.rb +49 -34
- data/test/rubygems/test_gem_version_option.rb +16 -18
- data/test/rubygems/test_kernel.rb +61 -53
- data/test/rubygems/test_project_sanity.rb +20 -0
- data/test/rubygems/test_remote_fetch_error.rb +7 -8
- data/test/rubygems/test_require.rb +415 -121
- data/test/rubygems/test_rubygems.rb +74 -0
- data/{lib/rubygems/test_utilities.rb → test/rubygems/utilities.rb} +74 -50
- data/test/rubygems/wrong_key_cert.pem +15 -15
- data/test/rubygems/wrong_key_cert_32.pem +15 -15
- data/test/test_changelog_generator.rb +17 -0
- metadata +218 -244
- data/.rubocop.yml +0 -66
- data/.travis.yml +0 -38
- data/History.txt +0 -3965
- data/Rakefile +0 -372
- data/appveyor.yml +0 -43
- data/bundler/CODE_OF_CONDUCT.md +0 -42
- data/bundler/CONTRIBUTING.md +0 -17
- data/bundler/exe/bundle_ruby +0 -60
- data/bundler/lib/bundler/cli/package.rb +0 -49
- data/bundler/lib/bundler/compatibility_guard.rb +0 -14
- data/bundler/lib/bundler/dep_proxy.rb +0 -48
- data/bundler/lib/bundler/gem_remote_fetcher.rb +0 -43
- data/bundler/lib/bundler/gemdeps.rb +0 -29
- data/bundler/lib/bundler/psyched_yaml.rb +0 -37
- data/bundler/lib/bundler/ssl_certs/certificate_manager.rb +0 -66
- data/bundler/lib/bundler/ssl_certs/rubygems.global.ssl.fastly.net/DigiCertHighAssuranceEVRootCA.pem +0 -23
- data/bundler/lib/bundler/ssl_certs/rubygems.org/AddTrustExternalCARoot.pem +0 -25
- data/bundler/lib/bundler/templates/gems.rb +0 -8
- data/bundler/lib/bundler/templates/newgem/test/test_helper.rb.tt +0 -4
- data/bundler/lib/bundler/templates/newgem/travis.yml.tt +0 -7
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/compatibility.rb +0 -26
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/delegates/resolution_state.rb +0 -57
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/delegates/specification_provider.rb +0 -81
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/action.rb +0 -36
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/add_edge_no_circular.rb +0 -66
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/add_vertex.rb +0 -62
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/delete_edge.rb +0 -63
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/detach_vertex_named.rb +0 -61
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/log.rb +0 -126
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/set_payload.rb +0 -46
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/tag.rb +0 -36
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/vertex.rb +0 -136
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph.rb +0 -223
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/errors.rb +0 -143
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/gem_metadata.rb +0 -6
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/modules/specification_provider.rb +0 -101
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/modules/ui.rb +0 -67
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/resolution.rb +0 -837
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/resolver.rb +0 -46
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/state.rb +0 -58
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo.rb +0 -12
- data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/faster.rb +0 -27
- data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/ssl_reuse.rb +0 -129
- data/bundler/lib/bundler/vendor/thor/lib/thor/core_ext/io_binary_read.rb +0 -12
- data/bundler/lib/bundler/vendor/thor/lib/thor/core_ext/ordered_hash.rb +0 -129
- data/bundler/lib/bundler/version_ranges.rb +0 -76
- data/bundler/man/bundle-gem.1 +0 -80
- data/bundler/man/bundle-gem.ronn +0 -78
- data/bundler/man/bundle-package.1 +0 -55
- data/lib/rubygems/psych_additions.rb +0 -10
- data/lib/rubygems/server.rb +0 -878
- data/lib/rubygems/source_local.rb +0 -7
- data/lib/rubygems/source_specific_file.rb +0 -6
- data/lib/rubygems/ssl_certs/index.rubygems.org/GlobalSignRootCA.pem +0 -21
- data/lib/rubygems/ssl_certs/rubygems.global.ssl.fastly.net/DigiCertHighAssuranceEVRootCA.pem +0 -23
- data/lib/rubygems/ssl_certs/rubygems.org/AddTrustExternalCARoot.pem +0 -25
- data/lib/rubygems/syck_hack.rb +0 -77
- data/lib/ubygems.rb +0 -14
- data/test/rubygems/bogussources.rb +0 -9
- data/test/rubygems/data/null-type.gemspec.rz +0 -0
- data/test/rubygems/test_gem_server.rb +0 -607
- data/util/CL2notes +0 -55
- data/util/ci +0 -77
- data/util/create_certs.rb +0 -171
- data/util/create_encrypted_key.rb +0 -16
- data/util/generate_spdx_license_list.rb +0 -61
- data/util/patch_with_prs.rb +0 -77
- data/util/rubocop +0 -8
- data/util/update_bundled_ca_certificates.rb +0 -139
- data/util/update_changelog.rb +0 -67
- /data/bundler/lib/bundler/{ssl_certs → man}/.document +0 -0
- /data/bundler/{man/bundle-check.ronn → lib/bundler/man/bundle-check.1.ronn} +0 -0
- /data/bundler/{man/bundle-doctor.ronn → lib/bundler/man/bundle-doctor.1.ronn} +0 -0
- /data/bundler/{man/bundle-info.ronn → lib/bundler/man/bundle-info.1.ronn} +0 -0
- /data/bundler/{man/bundle-lock.ronn → lib/bundler/man/bundle-lock.1.ronn} +0 -0
- /data/bundler/{man/bundle-pristine.ronn → lib/bundler/man/bundle-pristine.1.ronn} +0 -0
- /data/bundler/{man/bundle-remove.ronn → lib/bundler/man/bundle-remove.1.ronn} +0 -0
- /data/bundler/{man/bundle-show.ronn → lib/bundler/man/bundle-show.1.ronn} +0 -0
- /data/{bundler/lib/bundler/ssl_certs/index.rubygems.org → lib/rubygems/ssl_certs/rubygems.org}/GlobalSignRootCA.pem +0 -0
data/bundler/lib/bundler.rb
CHANGED
@@ -1,65 +1,90 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
require "bundler/vendored_fileutils"
|
3
|
+
require_relative "bundler/vendored_fileutils"
|
6
4
|
require "pathname"
|
7
5
|
require "rbconfig"
|
8
|
-
require "thread"
|
9
|
-
|
10
|
-
require "bundler/errors"
|
11
|
-
require "bundler/environment_preserver"
|
12
|
-
require "bundler/plugin"
|
13
|
-
require "bundler/rubygems_ext"
|
14
|
-
require "bundler/rubygems_integration"
|
15
|
-
require "bundler/version"
|
16
|
-
require "bundler/constants"
|
17
|
-
require "bundler/current_ruby"
|
18
|
-
require "bundler/build_metadata"
|
19
6
|
|
7
|
+
require_relative "bundler/errors"
|
8
|
+
require_relative "bundler/environment_preserver"
|
9
|
+
require_relative "bundler/plugin"
|
10
|
+
require_relative "bundler/rubygems_ext"
|
11
|
+
require_relative "bundler/rubygems_integration"
|
12
|
+
require_relative "bundler/version"
|
13
|
+
require_relative "bundler/constants"
|
14
|
+
require_relative "bundler/current_ruby"
|
15
|
+
require_relative "bundler/build_metadata"
|
16
|
+
|
17
|
+
# Bundler provides a consistent environment for Ruby projects by
|
18
|
+
# tracking and installing the exact gems and versions that are needed.
|
19
|
+
#
|
20
|
+
# Since Ruby 2.6, Bundler is a part of Ruby's standard library.
|
21
|
+
#
|
22
|
+
# Bundler is used by creating _gemfiles_ listing all the project dependencies
|
23
|
+
# and (optionally) their versions and then using
|
24
|
+
#
|
25
|
+
# require 'bundler/setup'
|
26
|
+
#
|
27
|
+
# or Bundler.setup to setup environment where only specified gems and their
|
28
|
+
# specified versions could be used.
|
29
|
+
#
|
30
|
+
# See {Bundler website}[https://bundler.io/docs.html] for extensive documentation
|
31
|
+
# on gemfiles creation and Bundler usage.
|
32
|
+
#
|
33
|
+
# As a standard library inside project, Bundler could be used for introspection
|
34
|
+
# of loaded and required modules.
|
35
|
+
#
|
20
36
|
module Bundler
|
21
|
-
environment_preserver = EnvironmentPreserver.
|
37
|
+
environment_preserver = EnvironmentPreserver.from_env
|
22
38
|
ORIGINAL_ENV = environment_preserver.restore
|
23
|
-
|
24
|
-
SUDO_MUTEX = Mutex.new
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
autoload :
|
37
|
-
autoload :
|
38
|
-
autoload :
|
39
|
-
autoload :
|
40
|
-
autoload :
|
41
|
-
autoload :
|
42
|
-
autoload :
|
43
|
-
autoload :
|
44
|
-
autoload :
|
45
|
-
autoload :
|
46
|
-
autoload :
|
47
|
-
autoload :
|
48
|
-
autoload :
|
49
|
-
autoload :
|
50
|
-
autoload :
|
51
|
-
autoload :
|
52
|
-
autoload :
|
53
|
-
autoload :
|
54
|
-
autoload :
|
55
|
-
autoload :
|
56
|
-
autoload :
|
57
|
-
autoload :
|
58
|
-
autoload :
|
59
|
-
autoload :
|
60
|
-
autoload :
|
61
|
-
autoload :
|
62
|
-
autoload :
|
39
|
+
environment_preserver.replace_with_backup
|
40
|
+
SUDO_MUTEX = Thread::Mutex.new
|
41
|
+
|
42
|
+
SAFE_MARSHAL_CLASSES = [Symbol, TrueClass, String, Array, Hash].freeze
|
43
|
+
SAFE_MARSHAL_ERROR = "Unexpected class %s present in marshaled data. Only %s are allowed.".freeze
|
44
|
+
SAFE_MARSHAL_PROC = proc do |object|
|
45
|
+
object.tap do
|
46
|
+
unless SAFE_MARSHAL_CLASSES.include?(object.class)
|
47
|
+
raise TypeError, format(SAFE_MARSHAL_ERROR, object.class, SAFE_MARSHAL_CLASSES.join(", "))
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
autoload :Definition, File.expand_path("bundler/definition", __dir__)
|
53
|
+
autoload :Dependency, File.expand_path("bundler/dependency", __dir__)
|
54
|
+
autoload :Deprecate, File.expand_path("bundler/deprecate", __dir__)
|
55
|
+
autoload :Digest, File.expand_path("bundler/digest", __dir__)
|
56
|
+
autoload :Dsl, File.expand_path("bundler/dsl", __dir__)
|
57
|
+
autoload :EndpointSpecification, File.expand_path("bundler/endpoint_specification", __dir__)
|
58
|
+
autoload :Env, File.expand_path("bundler/env", __dir__)
|
59
|
+
autoload :Fetcher, File.expand_path("bundler/fetcher", __dir__)
|
60
|
+
autoload :FeatureFlag, File.expand_path("bundler/feature_flag", __dir__)
|
61
|
+
autoload :GemHelper, File.expand_path("bundler/gem_helper", __dir__)
|
62
|
+
autoload :GemHelpers, File.expand_path("bundler/gem_helpers", __dir__)
|
63
|
+
autoload :GemVersionPromoter, File.expand_path("bundler/gem_version_promoter", __dir__)
|
64
|
+
autoload :Graph, File.expand_path("bundler/graph", __dir__)
|
65
|
+
autoload :Index, File.expand_path("bundler/index", __dir__)
|
66
|
+
autoload :Injector, File.expand_path("bundler/injector", __dir__)
|
67
|
+
autoload :Installer, File.expand_path("bundler/installer", __dir__)
|
68
|
+
autoload :LazySpecification, File.expand_path("bundler/lazy_specification", __dir__)
|
69
|
+
autoload :LockfileParser, File.expand_path("bundler/lockfile_parser", __dir__)
|
70
|
+
autoload :MatchRemoteMetadata, File.expand_path("bundler/match_remote_metadata", __dir__)
|
71
|
+
autoload :ProcessLock, File.expand_path("bundler/process_lock", __dir__)
|
72
|
+
autoload :RemoteSpecification, File.expand_path("bundler/remote_specification", __dir__)
|
73
|
+
autoload :Resolver, File.expand_path("bundler/resolver", __dir__)
|
74
|
+
autoload :Retry, File.expand_path("bundler/retry", __dir__)
|
75
|
+
autoload :RubyDsl, File.expand_path("bundler/ruby_dsl", __dir__)
|
76
|
+
autoload :RubyVersion, File.expand_path("bundler/ruby_version", __dir__)
|
77
|
+
autoload :Runtime, File.expand_path("bundler/runtime", __dir__)
|
78
|
+
autoload :SelfManager, File.expand_path("bundler/self_manager", __dir__)
|
79
|
+
autoload :Settings, File.expand_path("bundler/settings", __dir__)
|
80
|
+
autoload :SharedHelpers, File.expand_path("bundler/shared_helpers", __dir__)
|
81
|
+
autoload :Source, File.expand_path("bundler/source", __dir__)
|
82
|
+
autoload :SourceList, File.expand_path("bundler/source_list", __dir__)
|
83
|
+
autoload :SourceMap, File.expand_path("bundler/source_map", __dir__)
|
84
|
+
autoload :SpecSet, File.expand_path("bundler/spec_set", __dir__)
|
85
|
+
autoload :StubSpecification, File.expand_path("bundler/stub_specification", __dir__)
|
86
|
+
autoload :UI, File.expand_path("bundler/ui", __dir__)
|
87
|
+
autoload :URICredentialsFilter, File.expand_path("bundler/uri_credentials_filter", __dir__)
|
63
88
|
|
64
89
|
class << self
|
65
90
|
def configure
|
@@ -67,11 +92,11 @@ module Bundler
|
|
67
92
|
end
|
68
93
|
|
69
94
|
def ui
|
70
|
-
(defined?(@ui) && @ui) || (self.ui = UI::
|
95
|
+
(defined?(@ui) && @ui) || (self.ui = UI::Shell.new)
|
71
96
|
end
|
72
97
|
|
73
98
|
def ui=(ui)
|
74
|
-
Bundler.rubygems.ui =
|
99
|
+
Bundler.rubygems.ui = UI::RGProxy.new(ui)
|
75
100
|
@ui = ui
|
76
101
|
end
|
77
102
|
|
@@ -80,6 +105,17 @@ module Bundler
|
|
80
105
|
@bundle_path ||= Pathname.new(configured_bundle_path.path).expand_path(root)
|
81
106
|
end
|
82
107
|
|
108
|
+
def create_bundle_path
|
109
|
+
SharedHelpers.filesystem_access(bundle_path.to_s) do |p|
|
110
|
+
mkdir_p(p)
|
111
|
+
end unless bundle_path.exist?
|
112
|
+
|
113
|
+
@bundle_path = bundle_path.realpath
|
114
|
+
rescue Errno::EEXIST
|
115
|
+
raise PathError, "Could not install to path `#{bundle_path}` " \
|
116
|
+
"because a file already exists at that path. Either remove or rename the file so the directory can be created."
|
117
|
+
end
|
118
|
+
|
83
119
|
def configured_bundle_path
|
84
120
|
@configured_bundle_path ||= settings.path.tap(&:validate!)
|
85
121
|
end
|
@@ -94,6 +130,33 @@ module Bundler
|
|
94
130
|
end
|
95
131
|
end
|
96
132
|
|
133
|
+
# Turns on the Bundler runtime. After +Bundler.setup+ call, all +load+ or
|
134
|
+
# +require+ of the gems would be allowed only if they are part of
|
135
|
+
# the Gemfile or Ruby's standard library. If the versions specified
|
136
|
+
# in Gemfile, only those versions would be loaded.
|
137
|
+
#
|
138
|
+
# Assuming Gemfile
|
139
|
+
#
|
140
|
+
# gem 'first_gem', '= 1.0'
|
141
|
+
# group :test do
|
142
|
+
# gem 'second_gem', '= 1.0'
|
143
|
+
# end
|
144
|
+
#
|
145
|
+
# The code using Bundler.setup works as follows:
|
146
|
+
#
|
147
|
+
# require 'third_gem' # allowed, required from global gems
|
148
|
+
# require 'first_gem' # allowed, loads the last installed version
|
149
|
+
# Bundler.setup
|
150
|
+
# require 'fourth_gem' # fails with LoadError
|
151
|
+
# require 'second_gem' # loads exactly version 1.0
|
152
|
+
#
|
153
|
+
# +Bundler.setup+ can be called only once, all subsequent calls are no-op.
|
154
|
+
#
|
155
|
+
# If _groups_ list is provided, only gems from specified groups would
|
156
|
+
# be allowed (gems specified outside groups belong to special +:default+ group).
|
157
|
+
#
|
158
|
+
# To require all gems from Gemfile (or only some groups), see Bundler.require.
|
159
|
+
#
|
97
160
|
def setup(*groups)
|
98
161
|
# Return if all groups are already loaded
|
99
162
|
return @setup if defined?(@setup) && @setup
|
@@ -110,6 +173,24 @@ module Bundler
|
|
110
173
|
end
|
111
174
|
end
|
112
175
|
|
176
|
+
# Setups Bundler environment (see Bundler.setup) if it is not already set,
|
177
|
+
# and loads all gems from groups specified. Unlike ::setup, can be called
|
178
|
+
# multiple times with different groups (if they were allowed by setup).
|
179
|
+
#
|
180
|
+
# Assuming Gemfile
|
181
|
+
#
|
182
|
+
# gem 'first_gem', '= 1.0'
|
183
|
+
# group :test do
|
184
|
+
# gem 'second_gem', '= 1.0'
|
185
|
+
# end
|
186
|
+
#
|
187
|
+
# The code will work as follows:
|
188
|
+
#
|
189
|
+
# Bundler.setup # allow all groups
|
190
|
+
# Bundler.require(:default) # requires only first_gem
|
191
|
+
# # ...later
|
192
|
+
# Bundler.require(:test) # requires second_gem
|
193
|
+
#
|
113
194
|
def require(*groups)
|
114
195
|
setup(*groups).require(*groups)
|
115
196
|
end
|
@@ -119,7 +200,7 @@ module Bundler
|
|
119
200
|
end
|
120
201
|
|
121
202
|
def environment
|
122
|
-
SharedHelpers.major_deprecation 2, "Bundler.environment has been removed in favor of Bundler.load"
|
203
|
+
SharedHelpers.major_deprecation 2, "Bundler.environment has been removed in favor of Bundler.load", :print_caller_location => true
|
123
204
|
load
|
124
205
|
end
|
125
206
|
|
@@ -138,7 +219,7 @@ module Bundler
|
|
138
219
|
|
139
220
|
def frozen_bundle?
|
140
221
|
frozen = settings[:deployment]
|
141
|
-
frozen ||= settings[:frozen]
|
222
|
+
frozen ||= settings[:frozen]
|
142
223
|
frozen
|
143
224
|
end
|
144
225
|
|
@@ -152,8 +233,14 @@ module Bundler
|
|
152
233
|
end
|
153
234
|
end
|
154
235
|
|
236
|
+
def most_specific_locked_platform?(platform)
|
237
|
+
return false unless defined?(@definition) && @definition
|
238
|
+
|
239
|
+
definition.most_specific_locked_platform == platform
|
240
|
+
end
|
241
|
+
|
155
242
|
def ruby_scope
|
156
|
-
"#{Bundler.rubygems.ruby_engine}/#{
|
243
|
+
"#{Bundler.rubygems.ruby_engine}/#{RbConfig::CONFIG["ruby_version"]}"
|
157
244
|
end
|
158
245
|
|
159
246
|
def user_home
|
@@ -170,9 +257,9 @@ module Bundler
|
|
170
257
|
end
|
171
258
|
|
172
259
|
if warning
|
173
|
-
|
174
|
-
user_home = tmp_home_path
|
175
|
-
Bundler.ui.warn "
|
260
|
+
Bundler.ui.warn "#{warning}\n"
|
261
|
+
user_home = tmp_home_path
|
262
|
+
Bundler.ui.warn "Bundler will use `#{user_home}' as your home directory temporarily.\n"
|
176
263
|
user_home
|
177
264
|
else
|
178
265
|
Pathname.new(home)
|
@@ -180,37 +267,22 @@ module Bundler
|
|
180
267
|
end
|
181
268
|
end
|
182
269
|
|
183
|
-
def tmp_home_path(login, warning)
|
184
|
-
login ||= "unknown"
|
185
|
-
Kernel.send(:require, "tmpdir")
|
186
|
-
path = Pathname.new(Dir.tmpdir).join("bundler", "home")
|
187
|
-
SharedHelpers.filesystem_access(path) do |tmp_home_path|
|
188
|
-
unless tmp_home_path.exist?
|
189
|
-
tmp_home_path.mkpath
|
190
|
-
tmp_home_path.chmod(0o777)
|
191
|
-
end
|
192
|
-
tmp_home_path.join(login).tap(&:mkpath)
|
193
|
-
end
|
194
|
-
rescue RuntimeError => e
|
195
|
-
raise e.exception("#{warning}\nBundler also failed to create a temporary home directory at `#{path}':\n#{e}")
|
196
|
-
end
|
197
|
-
|
198
270
|
def user_bundle_path(dir = "home")
|
199
271
|
env_var, fallback = case dir
|
200
272
|
when "home"
|
201
|
-
["BUNDLE_USER_HOME", Pathname.new(user_home).join(".bundle")]
|
273
|
+
["BUNDLE_USER_HOME", proc { Pathname.new(user_home).join(".bundle") }]
|
202
274
|
when "cache"
|
203
|
-
["BUNDLE_USER_CACHE", user_bundle_path.join("cache")]
|
275
|
+
["BUNDLE_USER_CACHE", proc { user_bundle_path.join("cache") }]
|
204
276
|
when "config"
|
205
|
-
["BUNDLE_USER_CONFIG", user_bundle_path.join("config")]
|
277
|
+
["BUNDLE_USER_CONFIG", proc { user_bundle_path.join("config") }]
|
206
278
|
when "plugin"
|
207
|
-
["BUNDLE_USER_PLUGIN", user_bundle_path.join("plugin")]
|
279
|
+
["BUNDLE_USER_PLUGIN", proc { user_bundle_path.join("plugin") }]
|
208
280
|
else
|
209
281
|
raise BundlerError, "Unknown user path requested: #{dir}"
|
210
282
|
end
|
211
283
|
# `fallback` will already be a Pathname, but Pathname.new() is
|
212
284
|
# idempotent so it's OK
|
213
|
-
Pathname.new(ENV.fetch(env_var, fallback))
|
285
|
+
Pathname.new(ENV.fetch(env_var, &fallback))
|
214
286
|
end
|
215
287
|
|
216
288
|
def user_cache
|
@@ -241,7 +313,13 @@ module Bundler
|
|
241
313
|
|
242
314
|
def app_config_path
|
243
315
|
if app_config = ENV["BUNDLE_APP_CONFIG"]
|
244
|
-
Pathname.new(app_config)
|
316
|
+
app_config_pathname = Pathname.new(app_config)
|
317
|
+
|
318
|
+
if app_config_pathname.absolute?
|
319
|
+
app_config_pathname
|
320
|
+
else
|
321
|
+
app_config_pathname.expand_path(root)
|
322
|
+
end
|
245
323
|
else
|
246
324
|
root.join(".bundle")
|
247
325
|
end
|
@@ -261,9 +339,9 @@ module Bundler
|
|
261
339
|
FileUtils.remove_entry_secure(path) if path && File.exist?(path)
|
262
340
|
rescue ArgumentError
|
263
341
|
message = <<EOF
|
264
|
-
It is a security vulnerability to allow your home directory to be world-writable, and bundler
|
342
|
+
It is a security vulnerability to allow your home directory to be world-writable, and bundler cannot continue.
|
265
343
|
You should probably consider fixing this issue by running `chmod o-w ~` on *nix.
|
266
|
-
Please refer to
|
344
|
+
Please refer to https://ruby-doc.org/stdlib-3.1.2/libdoc/fileutils/rdoc/FileUtils.html#method-c-remove_entry_secure for details.
|
267
345
|
EOF
|
268
346
|
File.world_writable?(path) ? Bundler.ui.warn(message) : raise
|
269
347
|
raise PathError, "Please fix the world-writable issue with your #{path} directory"
|
@@ -280,10 +358,20 @@ EOF
|
|
280
358
|
ORIGINAL_ENV.clone
|
281
359
|
end
|
282
360
|
|
283
|
-
# @deprecated Use `
|
284
|
-
# @return [Hash] Environment with all bundler-related variables removed
|
361
|
+
# @deprecated Use `unbundled_env` instead
|
285
362
|
def clean_env
|
286
|
-
Bundler::SharedHelpers.major_deprecation(
|
363
|
+
Bundler::SharedHelpers.major_deprecation(
|
364
|
+
2,
|
365
|
+
"`Bundler.clean_env` has been deprecated in favor of `Bundler.unbundled_env`. " \
|
366
|
+
"If you instead want the environment before bundler was originally loaded, use `Bundler.original_env`",
|
367
|
+
:print_caller_location => true
|
368
|
+
)
|
369
|
+
|
370
|
+
unbundled_env
|
371
|
+
end
|
372
|
+
|
373
|
+
# @return [Hash] Environment with all bundler-related variables removed
|
374
|
+
def unbundled_env
|
287
375
|
env = original_env
|
288
376
|
|
289
377
|
if env.key?("BUNDLER_ORIG_MANPATH")
|
@@ -293,32 +381,85 @@ EOF
|
|
293
381
|
env.delete_if {|k, _| k[0, 7] == "BUNDLE_" }
|
294
382
|
|
295
383
|
if env.key?("RUBYOPT")
|
296
|
-
|
384
|
+
rubyopt = env["RUBYOPT"].split(" ")
|
385
|
+
rubyopt.delete("-r#{File.expand_path("bundler/setup", __dir__)}")
|
386
|
+
rubyopt.delete("-rbundler/setup")
|
387
|
+
env["RUBYOPT"] = rubyopt.join(" ")
|
297
388
|
end
|
298
389
|
|
299
390
|
if env.key?("RUBYLIB")
|
300
391
|
rubylib = env["RUBYLIB"].split(File::PATH_SEPARATOR)
|
301
|
-
rubylib.delete(
|
392
|
+
rubylib.delete(__dir__)
|
302
393
|
env["RUBYLIB"] = rubylib.join(File::PATH_SEPARATOR)
|
303
394
|
end
|
304
395
|
|
305
396
|
env
|
306
397
|
end
|
307
398
|
|
399
|
+
# Run block with environment present before Bundler was activated
|
308
400
|
def with_original_env
|
309
401
|
with_env(original_env) { yield }
|
310
402
|
end
|
311
403
|
|
404
|
+
# @deprecated Use `with_unbundled_env` instead
|
312
405
|
def with_clean_env
|
313
|
-
|
406
|
+
Bundler::SharedHelpers.major_deprecation(
|
407
|
+
2,
|
408
|
+
"`Bundler.with_clean_env` has been deprecated in favor of `Bundler.with_unbundled_env`. " \
|
409
|
+
"If you instead want the environment before bundler was originally loaded, use `Bundler.with_original_env`",
|
410
|
+
:print_caller_location => true
|
411
|
+
)
|
412
|
+
|
413
|
+
with_env(unbundled_env) { yield }
|
414
|
+
end
|
415
|
+
|
416
|
+
# Run block with all bundler-related variables removed
|
417
|
+
def with_unbundled_env
|
418
|
+
with_env(unbundled_env) { yield }
|
419
|
+
end
|
420
|
+
|
421
|
+
# Run subcommand with the environment present before Bundler was activated
|
422
|
+
def original_system(*args)
|
423
|
+
with_original_env { Kernel.system(*args) }
|
314
424
|
end
|
315
425
|
|
426
|
+
# @deprecated Use `unbundled_system` instead
|
316
427
|
def clean_system(*args)
|
317
|
-
|
428
|
+
Bundler::SharedHelpers.major_deprecation(
|
429
|
+
2,
|
430
|
+
"`Bundler.clean_system` has been deprecated in favor of `Bundler.unbundled_system`. " \
|
431
|
+
"If you instead want to run the command in the environment before bundler was originally loaded, use `Bundler.original_system`",
|
432
|
+
:print_caller_location => true
|
433
|
+
)
|
434
|
+
|
435
|
+
with_env(unbundled_env) { Kernel.system(*args) }
|
436
|
+
end
|
437
|
+
|
438
|
+
# Run subcommand in an environment with all bundler related variables removed
|
439
|
+
def unbundled_system(*args)
|
440
|
+
with_unbundled_env { Kernel.system(*args) }
|
318
441
|
end
|
319
442
|
|
443
|
+
# Run a `Kernel.exec` to a subcommand with the environment present before Bundler was activated
|
444
|
+
def original_exec(*args)
|
445
|
+
with_original_env { Kernel.exec(*args) }
|
446
|
+
end
|
447
|
+
|
448
|
+
# @deprecated Use `unbundled_exec` instead
|
320
449
|
def clean_exec(*args)
|
321
|
-
|
450
|
+
Bundler::SharedHelpers.major_deprecation(
|
451
|
+
2,
|
452
|
+
"`Bundler.clean_exec` has been deprecated in favor of `Bundler.unbundled_exec`. " \
|
453
|
+
"If you instead want to exec to a command in the environment before bundler was originally loaded, use `Bundler.original_exec`",
|
454
|
+
:print_caller_location => true
|
455
|
+
)
|
456
|
+
|
457
|
+
with_env(unbundled_env) { Kernel.exec(*args) }
|
458
|
+
end
|
459
|
+
|
460
|
+
# Run a `Kernel.exec` to a subcommand in an environment with all bundler related variables removed
|
461
|
+
def unbundled_exec(*args)
|
462
|
+
with_env(unbundled_env) { Kernel.exec(*args) }
|
322
463
|
end
|
323
464
|
|
324
465
|
def local_platform
|
@@ -343,49 +484,21 @@ EOF
|
|
343
484
|
# system binaries. If you put '-n foo' in your .gemrc, RubyGems will
|
344
485
|
# install binstubs there instead. Unfortunately, RubyGems doesn't expose
|
345
486
|
# that directory at all, so rather than parse .gemrc ourselves, we allow
|
346
|
-
# the directory to be set as well, via `bundle config bindir foo`.
|
487
|
+
# the directory to be set as well, via `bundle config set --local bindir foo`.
|
347
488
|
Bundler.settings[:system_bindir] || Bundler.rubygems.gem_bindir
|
348
489
|
end
|
349
490
|
|
350
|
-
def
|
351
|
-
|
491
|
+
def preferred_gemfile_name
|
492
|
+
Bundler.settings[:init_gems_rb] ? "gems.rb" : "Gemfile"
|
352
493
|
end
|
353
494
|
|
354
|
-
def
|
355
|
-
|
356
|
-
|
357
|
-
sudo_present = which "sudo" if settings.allow_sudo?
|
358
|
-
|
359
|
-
if sudo_present
|
360
|
-
# the bundle path and subdirectories need to be writable for RubyGems
|
361
|
-
# to be able to unpack and install gems without exploding
|
362
|
-
path = bundle_path
|
363
|
-
path = path.parent until path.exist?
|
364
|
-
|
365
|
-
# bins are written to a different location on OS X
|
366
|
-
bin_dir = Pathname.new(Bundler.system_bindir)
|
367
|
-
bin_dir = bin_dir.parent until bin_dir.exist?
|
368
|
-
|
369
|
-
# if any directory is not writable, we need sudo
|
370
|
-
files = [path, bin_dir] | Dir[bundle_path.join("build_info/*").to_s] | Dir[bundle_path.join("*").to_s]
|
371
|
-
unwritable_files = files.reject {|f| File.writable?(f) }
|
372
|
-
sudo_needed = !unwritable_files.empty?
|
373
|
-
if sudo_needed
|
374
|
-
Bundler.ui.warn "Following files may not be writable, so sudo is needed:\n #{unwritable_files.map(&:to_s).sort.join("\n ")}"
|
375
|
-
end
|
376
|
-
end
|
377
|
-
|
378
|
-
@requires_sudo_ran = true
|
379
|
-
@requires_sudo = settings.allow_sudo? && sudo_present && sudo_needed
|
495
|
+
def use_system_gems?
|
496
|
+
configured_bundle_path.use_system_gems?
|
380
497
|
end
|
381
498
|
|
382
499
|
def mkdir_p(path, options = {})
|
383
|
-
|
384
|
-
|
385
|
-
else
|
386
|
-
SharedHelpers.filesystem_access(path, :write) do |p|
|
387
|
-
FileUtils.mkdir_p(p)
|
388
|
-
end
|
500
|
+
SharedHelpers.filesystem_access(path, :write) do |p|
|
501
|
+
FileUtils.mkdir_p(p)
|
389
502
|
end
|
390
503
|
end
|
391
504
|
|
@@ -402,39 +515,19 @@ EOF
|
|
402
515
|
end
|
403
516
|
end
|
404
517
|
|
405
|
-
def sudo(str)
|
406
|
-
SUDO_MUTEX.synchronize do
|
407
|
-
prompt = "\n\n" + <<-PROMPT.gsub(/^ {6}/, "").strip + " "
|
408
|
-
Your user account isn't allowed to install to the system RubyGems.
|
409
|
-
You can cancel this installation and run:
|
410
|
-
|
411
|
-
bundle install --path vendor/bundle
|
412
|
-
|
413
|
-
to install the gems into ./vendor/bundle/, or you can enter your password
|
414
|
-
and install the bundled gems to RubyGems using sudo.
|
415
|
-
|
416
|
-
Password:
|
417
|
-
PROMPT
|
418
|
-
|
419
|
-
unless @prompted_for_sudo ||= system(%(sudo -k -p "#{prompt}" true))
|
420
|
-
raise SudoNotPermittedError,
|
421
|
-
"Bundler requires sudo access to install at the moment. " \
|
422
|
-
"Try installing again, granting Bundler sudo access when prompted, or installing into a different path."
|
423
|
-
end
|
424
|
-
|
425
|
-
`sudo -p "#{prompt}" #{str}`
|
426
|
-
end
|
427
|
-
end
|
428
|
-
|
429
518
|
def read_file(file)
|
430
519
|
SharedHelpers.filesystem_access(file, :read) do
|
431
520
|
File.open(file, "r:UTF-8", &:read)
|
432
521
|
end
|
433
522
|
end
|
434
523
|
|
435
|
-
def
|
436
|
-
|
437
|
-
|
524
|
+
def safe_load_marshal(data)
|
525
|
+
load_marshal(data, :marshal_proc => SAFE_MARSHAL_PROC)
|
526
|
+
end
|
527
|
+
|
528
|
+
def load_marshal(data, marshal_proc: nil)
|
529
|
+
Marshal.load(data, marshal_proc)
|
530
|
+
rescue TypeError => e
|
438
531
|
raise MarshalError, "#{e.class}: #{e.message}"
|
439
532
|
end
|
440
533
|
|
@@ -471,7 +564,7 @@ EOF
|
|
471
564
|
|
472
565
|
def git_present?
|
473
566
|
return @git_present if defined?(@git_present)
|
474
|
-
@git_present = Bundler.which("git"
|
567
|
+
@git_present = Bundler.which("git#{RbConfig::CONFIG["EXEEXT"]}")
|
475
568
|
end
|
476
569
|
|
477
570
|
def feature_flag
|
@@ -484,6 +577,11 @@ EOF
|
|
484
577
|
reset_rubygems!
|
485
578
|
end
|
486
579
|
|
580
|
+
def reset_settings_and_root!
|
581
|
+
@settings = nil
|
582
|
+
@root = nil
|
583
|
+
end
|
584
|
+
|
487
585
|
def reset_paths!
|
488
586
|
@bin_path = nil
|
489
587
|
@bundler_major_version = nil
|
@@ -506,15 +604,26 @@ EOF
|
|
506
604
|
@rubygems = nil
|
507
605
|
end
|
508
606
|
|
509
|
-
|
607
|
+
def configure_gem_home_and_path(path = bundle_path)
|
608
|
+
configure_gem_path
|
609
|
+
configure_gem_home(path)
|
610
|
+
Bundler.rubygems.clear_paths
|
611
|
+
end
|
612
|
+
|
613
|
+
def self_manager
|
614
|
+
@self_manager ||= begin
|
615
|
+
require_relative "bundler/self_manager"
|
616
|
+
Bundler::SelfManager.new
|
617
|
+
end
|
618
|
+
end
|
619
|
+
|
620
|
+
private
|
510
621
|
|
511
622
|
def eval_yaml_gemspec(path, contents)
|
512
|
-
Kernel.
|
623
|
+
Kernel.require "psych"
|
513
624
|
|
514
|
-
# If the YAML is invalid, Syck raises an ArgumentError, and Psych
|
515
|
-
# raises a Psych::SyntaxError. See psyched_yaml.rb for more info.
|
516
625
|
Gem::Specification.from_yaml(contents)
|
517
|
-
rescue
|
626
|
+
rescue ::Psych::SyntaxError, ArgumentError, Gem::EndOfYAMLException, Gem::Exception
|
518
627
|
eval_gemspec(path, contents)
|
519
628
|
end
|
520
629
|
|
@@ -523,36 +632,29 @@ EOF
|
|
523
632
|
rescue ScriptError, StandardError => e
|
524
633
|
msg = "There was an error while loading `#{path.basename}`: #{e.message}"
|
525
634
|
|
526
|
-
if e.is_a?(LoadError) && RUBY_VERSION >= "1.9"
|
527
|
-
msg += "\nDoes it try to require a relative path? That's been removed in Ruby 1.9"
|
528
|
-
end
|
529
|
-
|
530
635
|
raise GemspecError, Dsl::DSLError.new(msg, path, e.backtrace, contents)
|
531
636
|
end
|
532
637
|
|
533
|
-
def
|
534
|
-
|
535
|
-
configure_gem_home
|
536
|
-
bundle_path
|
537
|
-
end
|
538
|
-
|
539
|
-
def configure_gem_path(env = ENV)
|
540
|
-
blank_home = env["GEM_HOME"].nil? || env["GEM_HOME"].empty?
|
541
|
-
if !use_system_gems?
|
638
|
+
def configure_gem_path
|
639
|
+
unless use_system_gems?
|
542
640
|
# this needs to be empty string to cause
|
543
641
|
# PathSupport.split_gem_path to only load up the
|
544
642
|
# Bundler --path setting as the GEM_PATH.
|
545
|
-
|
546
|
-
elsif blank_home
|
547
|
-
possibles = [Bundler.rubygems.gem_dir, Bundler.rubygems.gem_path]
|
548
|
-
paths = possibles.flatten.compact.uniq.reject(&:empty?)
|
549
|
-
env["GEM_PATH"] = paths.join(File::PATH_SEPARATOR)
|
643
|
+
Bundler::SharedHelpers.set_env "GEM_PATH", ""
|
550
644
|
end
|
551
645
|
end
|
552
646
|
|
553
|
-
def configure_gem_home
|
554
|
-
Bundler::SharedHelpers.set_env "GEM_HOME",
|
555
|
-
|
647
|
+
def configure_gem_home(path)
|
648
|
+
Bundler::SharedHelpers.set_env "GEM_HOME", path.to_s
|
649
|
+
end
|
650
|
+
|
651
|
+
def tmp_home_path
|
652
|
+
Kernel.send(:require, "tmpdir")
|
653
|
+
SharedHelpers.filesystem_access(Dir.tmpdir) do
|
654
|
+
path = Bundler.tmp
|
655
|
+
at_exit { Bundler.rm_rf(path) }
|
656
|
+
path
|
657
|
+
end
|
556
658
|
end
|
557
659
|
|
558
660
|
# @param env [Hash]
|