bundler 2.2.29 → 2.5.16
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 +1129 -4
- data/README.md +4 -8
- data/bundler.gemspec +11 -11
- data/exe/bundle +5 -26
- data/exe/bundler +1 -1
- data/lib/bundler/.document +1 -0
- data/lib/bundler/build_metadata.rb +4 -4
- data/lib/bundler/capistrano.rb +1 -1
- data/lib/bundler/checksum.rb +254 -0
- data/lib/bundler/ci_detector.rb +75 -0
- data/lib/bundler/cli/add.rb +4 -4
- data/lib/bundler/cli/binstubs.rb +10 -6
- data/lib/bundler/cli/cache.rb +1 -1
- data/lib/bundler/cli/check.rb +3 -3
- data/lib/bundler/cli/common.rb +13 -3
- data/lib/bundler/cli/config.rb +18 -8
- data/lib/bundler/cli/console.rb +5 -4
- data/lib/bundler/cli/doctor.rb +12 -5
- data/lib/bundler/cli/exec.rb +1 -1
- data/lib/bundler/cli/fund.rb +1 -1
- data/lib/bundler/cli/gem.rb +141 -48
- data/lib/bundler/cli/info.rb +27 -17
- data/lib/bundler/cli/init.rb +6 -2
- data/lib/bundler/cli/install.rb +22 -39
- data/lib/bundler/cli/issue.rb +5 -4
- data/lib/bundler/cli/lock.rb +36 -29
- data/lib/bundler/cli/open.rb +9 -9
- data/lib/bundler/cli/outdated.rb +19 -12
- data/lib/bundler/cli/platform.rb +8 -6
- data/lib/bundler/cli/plugin.rb +9 -15
- data/lib/bundler/cli/pristine.rb +38 -30
- data/lib/bundler/cli/show.rb +3 -3
- data/lib/bundler/cli/update.rb +12 -7
- data/lib/bundler/cli/viz.rb +1 -1
- data/lib/bundler/cli.rb +266 -285
- data/lib/bundler/compact_index_client/cache.rb +53 -67
- data/lib/bundler/compact_index_client/cache_file.rb +153 -0
- data/lib/bundler/compact_index_client/gem_parser.rb +7 -3
- data/lib/bundler/compact_index_client/parser.rb +84 -0
- data/lib/bundler/compact_index_client/updater.rb +83 -76
- data/lib/bundler/compact_index_client.rb +59 -87
- data/lib/bundler/constants.rb +9 -2
- data/lib/bundler/current_ruby.rb +12 -16
- data/lib/bundler/definition.rb +509 -319
- data/lib/bundler/dependency.rb +33 -71
- data/lib/bundler/digest.rb +71 -0
- data/lib/bundler/dsl.rb +88 -69
- data/lib/bundler/endpoint_specification.rb +32 -15
- data/lib/bundler/env.rb +5 -7
- data/lib/bundler/environment_preserver.rb +8 -22
- data/lib/bundler/errors.rb +101 -13
- data/lib/bundler/feature_flag.rb +0 -2
- data/lib/bundler/fetcher/base.rb +11 -11
- data/lib/bundler/fetcher/compact_index.rb +32 -52
- data/lib/bundler/fetcher/dependency.rb +3 -7
- data/lib/bundler/fetcher/downloader.rb +17 -16
- data/lib/bundler/fetcher/gem_remote_fetcher.rb +16 -0
- data/lib/bundler/fetcher/index.rb +2 -29
- data/lib/bundler/fetcher.rb +87 -79
- data/lib/bundler/force_platform.rb +18 -0
- data/lib/bundler/friendly_errors.rb +29 -40
- data/lib/bundler/gem_helper.rb +11 -23
- data/lib/bundler/gem_helpers.rb +30 -6
- data/lib/bundler/gem_version_promoter.rb +68 -109
- data/lib/bundler/graph.rb +9 -9
- data/lib/bundler/index.rb +71 -79
- data/lib/bundler/injector.rb +23 -11
- data/lib/bundler/inline.rb +11 -23
- data/lib/bundler/installer/gem_installer.rb +18 -11
- data/lib/bundler/installer/parallel_installer.rb +17 -65
- data/lib/bundler/installer/standalone.rb +56 -15
- data/lib/bundler/installer.rb +35 -61
- data/lib/bundler/lazy_specification.rb +92 -61
- data/lib/bundler/lockfile_generator.rb +12 -3
- data/lib/bundler/lockfile_parser.rb +137 -70
- data/lib/bundler/man/bundle-add.1 +19 -26
- data/lib/bundler/man/bundle-add.1.ronn +16 -4
- data/lib/bundler/man/bundle-binstubs.1 +4 -16
- data/lib/bundler/man/bundle-cache.1 +9 -24
- data/lib/bundler/man/bundle-cache.1.ronn +9 -2
- data/lib/bundler/man/bundle-check.1 +5 -12
- data/lib/bundler/man/bundle-check.1.ronn +3 -0
- data/lib/bundler/man/bundle-clean.1 +4 -11
- data/lib/bundler/man/bundle-clean.1.ronn +1 -1
- data/lib/bundler/man/bundle-config.1 +47 -224
- data/lib/bundler/man/bundle-config.1.ronn +40 -28
- data/lib/bundler/man/bundle-console.1 +35 -0
- data/lib/bundler/man/bundle-console.1.ronn +44 -0
- data/lib/bundler/man/bundle-doctor.1 +4 -18
- data/lib/bundler/man/bundle-exec.1 +16 -77
- data/lib/bundler/man/bundle-exec.1.ronn +8 -9
- data/lib/bundler/man/bundle-gem.1 +45 -72
- data/lib/bundler/man/bundle-gem.1.ronn +32 -5
- data/lib/bundler/man/bundle-help.1 +9 -0
- data/lib/bundler/man/bundle-help.1.ronn +12 -0
- data/lib/bundler/man/bundle-info.1 +5 -11
- data/lib/bundler/man/bundle-info.1.ronn +3 -3
- data/lib/bundler/man/bundle-init.1 +6 -11
- data/lib/bundler/man/bundle-init.1.ronn +2 -0
- data/lib/bundler/man/bundle-inject.1 +8 -18
- data/lib/bundler/man/bundle-inject.1.ronn +3 -1
- data/lib/bundler/man/bundle-install.1 +32 -155
- data/lib/bundler/man/bundle-install.1.ronn +11 -33
- data/lib/bundler/man/bundle-list.1 +4 -19
- data/lib/bundler/man/bundle-lock.1 +5 -29
- data/lib/bundler/man/bundle-open.1 +18 -18
- data/lib/bundler/man/bundle-open.1.ronn +9 -1
- data/lib/bundler/man/bundle-outdated.1 +17 -72
- data/lib/bundler/man/bundle-outdated.1.ronn +13 -18
- data/lib/bundler/man/bundle-platform.1 +16 -28
- data/lib/bundler/man/bundle-platform.1.ronn +14 -7
- data/lib/bundler/man/bundle-plugin.1 +58 -0
- data/lib/bundler/man/bundle-plugin.1.ronn +63 -0
- data/lib/bundler/man/bundle-pristine.1 +5 -16
- data/lib/bundler/man/bundle-remove.1 +4 -14
- data/lib/bundler/man/bundle-show.1 +3 -10
- data/lib/bundler/man/bundle-update.1 +19 -138
- data/lib/bundler/man/bundle-update.1.ronn +2 -1
- data/lib/bundler/man/bundle-version.1 +22 -0
- data/lib/bundler/man/bundle-version.1.ronn +24 -0
- data/lib/bundler/man/bundle-viz.1 +6 -15
- data/lib/bundler/man/bundle-viz.1.ronn +2 -0
- data/lib/bundler/man/bundle.1 +17 -51
- data/lib/bundler/man/bundle.1.ronn +12 -7
- data/lib/bundler/man/gemfile.5 +130 -346
- data/lib/bundler/man/gemfile.5.ronn +121 -86
- data/lib/bundler/man/index.txt +4 -0
- data/lib/bundler/match_metadata.rb +17 -0
- data/lib/bundler/match_platform.rb +1 -2
- data/lib/bundler/match_remote_metadata.rb +29 -0
- data/lib/bundler/mirror.rb +8 -10
- data/lib/bundler/plugin/api/source.rb +9 -13
- data/lib/bundler/plugin/index.rb +13 -5
- data/lib/bundler/plugin/installer/git.rb +0 -4
- data/lib/bundler/plugin/installer/path.rb +18 -0
- data/lib/bundler/plugin/installer/rubygems.rb +0 -8
- data/lib/bundler/plugin/installer.rb +42 -19
- data/lib/bundler/plugin/source_list.rb +4 -4
- data/lib/bundler/plugin.rb +16 -7
- data/lib/bundler/process_lock.rb +1 -1
- data/lib/bundler/remote_specification.rb +11 -5
- data/lib/bundler/resolver/base.rb +111 -0
- data/lib/bundler/resolver/candidate.rb +82 -0
- data/lib/bundler/resolver/incompatibility.rb +15 -0
- data/lib/bundler/resolver/package.rb +81 -0
- data/lib/bundler/resolver/root.rb +25 -0
- data/lib/bundler/resolver/spec_group.rb +53 -66
- data/lib/bundler/resolver.rb +419 -307
- data/lib/bundler/retry.rb +1 -1
- data/lib/bundler/ruby_dsl.rb +42 -7
- data/lib/bundler/ruby_version.rb +16 -22
- data/lib/bundler/rubygems_ext.rb +250 -64
- data/lib/bundler/rubygems_gem_installer.rb +90 -64
- data/lib/bundler/rubygems_integration.rb +81 -190
- data/lib/bundler/runtime.rb +8 -13
- data/lib/bundler/safe_marshal.rb +31 -0
- data/lib/bundler/self_manager.rb +206 -0
- data/lib/bundler/settings.rb +139 -57
- data/lib/bundler/setup.rb +13 -1
- data/lib/bundler/shared_helpers.rb +67 -36
- data/lib/bundler/source/git/git_proxy.rb +285 -82
- data/lib/bundler/source/git.rb +81 -41
- data/lib/bundler/source/metadata.rb +17 -16
- data/lib/bundler/source/path/installer.rb +1 -22
- data/lib/bundler/source/path.rb +13 -25
- data/lib/bundler/source/rubygems/remote.rb +1 -1
- data/lib/bundler/source/rubygems.rb +164 -234
- data/lib/bundler/source/rubygems_aggregate.rb +1 -1
- data/lib/bundler/source.rb +7 -6
- data/lib/bundler/source_list.rb +40 -32
- data/lib/bundler/source_map.rb +15 -2
- data/lib/bundler/spec_set.rb +156 -46
- data/lib/bundler/stub_specification.rb +18 -5
- data/lib/bundler/templates/Executable +3 -5
- data/lib/bundler/templates/Executable.bundler +7 -12
- data/lib/bundler/templates/Executable.standalone +4 -4
- data/lib/bundler/templates/Gemfile +0 -2
- data/lib/bundler/templates/newgem/CODE_OF_CONDUCT.md.tt +77 -29
- data/lib/bundler/templates/newgem/Cargo.toml.tt +7 -0
- data/lib/bundler/templates/newgem/Gemfile.tt +8 -2
- data/lib/bundler/templates/newgem/README.md.tt +7 -11
- data/lib/bundler/templates/newgem/Rakefile.tt +28 -4
- data/lib/bundler/templates/newgem/bin/console.tt +0 -4
- data/lib/bundler/templates/newgem/circleci/config.yml.tt +12 -0
- data/lib/bundler/templates/newgem/ext/newgem/Cargo.toml.tt +15 -0
- data/lib/bundler/templates/newgem/ext/newgem/extconf-c.rb.tt +10 -0
- data/lib/bundler/templates/newgem/ext/newgem/extconf-rust.rb.tt +6 -0
- data/lib/bundler/templates/newgem/ext/newgem/newgem.c.tt +1 -1
- data/lib/bundler/templates/newgem/ext/newgem/src/lib.rs.tt +12 -0
- data/lib/bundler/templates/newgem/github/workflows/main.yml.tt +13 -3
- data/lib/bundler/templates/newgem/gitignore.tt +3 -0
- data/lib/bundler/templates/newgem/gitlab-ci.yml.tt +13 -4
- data/lib/bundler/templates/newgem/newgem.gemspec.tt +25 -17
- data/lib/bundler/templates/newgem/rubocop.yml.tt +0 -5
- data/lib/bundler/templates/newgem/sig/newgem.rbs.tt +8 -0
- data/lib/bundler/templates/newgem/standard.yml.tt +3 -0
- data/lib/bundler/templates/newgem/test/minitest/{newgem_test.rb.tt → test_newgem.rb.tt} +1 -1
- data/lib/bundler/ui/rg_proxy.rb +1 -1
- data/lib/bundler/ui/shell.rb +38 -15
- data/lib/bundler/ui/silent.rb +21 -5
- data/lib/bundler/uri_credentials_filter.rb +2 -2
- data/lib/bundler/uri_normalizer.rb +23 -0
- data/lib/bundler/vendor/.document +1 -0
- data/lib/bundler/vendor/connection_pool/.document +1 -0
- data/lib/bundler/vendor/connection_pool/LICENSE +20 -0
- data/lib/bundler/vendor/connection_pool/lib/connection_pool/timed_stack.rb +19 -21
- data/lib/bundler/vendor/connection_pool/lib/connection_pool/version.rb +1 -1
- data/lib/bundler/vendor/connection_pool/lib/connection_pool/wrapper.rb +56 -0
- data/lib/bundler/vendor/connection_pool/lib/connection_pool.rb +92 -78
- data/lib/bundler/vendor/fileutils/.document +1 -0
- data/lib/bundler/vendor/fileutils/LICENSE.txt +22 -0
- data/lib/bundler/vendor/fileutils/lib/fileutils.rb +1340 -410
- data/lib/bundler/vendor/net-http-persistent/.document +1 -0
- data/lib/bundler/vendor/net-http-persistent/README.rdoc +82 -0
- data/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/connection.rb +4 -3
- data/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/pool.rb +23 -11
- data/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/timed_stack_multi.rb +1 -1
- data/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb +57 -57
- data/lib/bundler/vendor/pub_grub/.document +1 -0
- data/lib/bundler/vendor/pub_grub/LICENSE.txt +21 -0
- data/lib/bundler/vendor/pub_grub/lib/pub_grub/assignment.rb +20 -0
- data/lib/bundler/vendor/pub_grub/lib/pub_grub/basic_package_source.rb +189 -0
- data/lib/bundler/vendor/pub_grub/lib/pub_grub/failure_writer.rb +182 -0
- data/lib/bundler/vendor/pub_grub/lib/pub_grub/incompatibility.rb +150 -0
- data/lib/bundler/vendor/pub_grub/lib/pub_grub/package.rb +43 -0
- data/lib/bundler/vendor/pub_grub/lib/pub_grub/partial_solution.rb +121 -0
- data/lib/bundler/vendor/pub_grub/lib/pub_grub/rubygems.rb +45 -0
- data/lib/bundler/vendor/pub_grub/lib/pub_grub/solve_failure.rb +19 -0
- data/lib/bundler/vendor/pub_grub/lib/pub_grub/static_package_source.rb +61 -0
- data/lib/bundler/vendor/pub_grub/lib/pub_grub/term.rb +105 -0
- data/lib/bundler/vendor/pub_grub/lib/pub_grub/version.rb +3 -0
- data/lib/bundler/vendor/pub_grub/lib/pub_grub/version_constraint.rb +129 -0
- data/lib/bundler/vendor/pub_grub/lib/pub_grub/version_range.rb +411 -0
- data/lib/bundler/vendor/pub_grub/lib/pub_grub/version_solver.rb +248 -0
- data/lib/bundler/vendor/pub_grub/lib/pub_grub/version_union.rb +178 -0
- data/lib/bundler/vendor/pub_grub/lib/pub_grub.rb +31 -0
- data/lib/bundler/vendor/thor/.document +1 -0
- data/lib/bundler/vendor/thor/LICENSE.md +20 -0
- data/lib/bundler/vendor/thor/lib/thor/actions/create_file.rb +3 -2
- data/lib/bundler/vendor/thor/lib/thor/actions/directory.rb +1 -1
- data/lib/bundler/vendor/thor/lib/thor/actions/empty_directory.rb +1 -1
- data/lib/bundler/vendor/thor/lib/thor/actions/file_manipulation.rb +12 -14
- data/lib/bundler/vendor/thor/lib/thor/actions/inject_into_file.rb +16 -6
- data/lib/bundler/vendor/thor/lib/thor/actions.rb +21 -17
- data/lib/bundler/vendor/thor/lib/thor/base.rb +140 -14
- data/lib/bundler/vendor/thor/lib/thor/command.rb +13 -4
- data/lib/bundler/vendor/thor/lib/thor/core_ext/hash_with_indifferent_access.rb +10 -0
- data/lib/bundler/vendor/thor/lib/thor/error.rb +16 -20
- data/lib/bundler/vendor/thor/lib/thor/group.rb +1 -1
- data/lib/bundler/vendor/thor/lib/thor/invocation.rb +1 -1
- data/lib/bundler/vendor/thor/lib/thor/nested_context.rb +2 -2
- data/lib/bundler/vendor/thor/lib/thor/parser/argument.rb +20 -1
- data/lib/bundler/vendor/thor/lib/thor/parser/arguments.rb +33 -17
- data/lib/bundler/vendor/thor/lib/thor/parser/option.rb +27 -8
- data/lib/bundler/vendor/thor/lib/thor/parser/options.rb +63 -7
- data/lib/bundler/vendor/thor/lib/thor/rake_compat.rb +2 -2
- data/lib/bundler/vendor/thor/lib/thor/runner.rb +40 -30
- data/lib/bundler/vendor/thor/lib/thor/shell/basic.rb +48 -154
- data/lib/bundler/vendor/thor/lib/thor/shell/color.rb +1 -46
- data/lib/bundler/vendor/thor/lib/thor/shell/column_printer.rb +29 -0
- data/lib/bundler/vendor/thor/lib/thor/shell/html.rb +0 -45
- data/lib/bundler/vendor/thor/lib/thor/shell/table_printer.rb +134 -0
- data/lib/bundler/vendor/thor/lib/thor/shell/terminal.rb +42 -0
- data/lib/bundler/vendor/thor/lib/thor/shell/wrapped_printer.rb +38 -0
- data/lib/bundler/vendor/thor/lib/thor/shell.rb +2 -2
- data/lib/bundler/vendor/thor/lib/thor/util.rb +9 -8
- data/lib/bundler/vendor/thor/lib/thor/version.rb +1 -1
- data/lib/bundler/vendor/thor/lib/thor.rb +155 -8
- data/lib/bundler/vendor/tsort/.document +1 -0
- data/lib/bundler/vendor/tsort/LICENSE.txt +22 -0
- data/lib/bundler/vendor/tsort/lib/tsort.rb +455 -0
- data/lib/bundler/vendor/uri/.document +1 -0
- data/lib/bundler/vendor/uri/LICENSE.txt +22 -0
- data/lib/bundler/vendor/uri/lib/uri/common.rb +316 -207
- data/lib/bundler/vendor/uri/lib/uri/file.rb +7 -1
- data/lib/bundler/vendor/uri/lib/uri/ftp.rb +2 -2
- data/lib/bundler/vendor/uri/lib/uri/generic.rb +33 -13
- data/lib/bundler/vendor/uri/lib/uri/http.rb +40 -3
- data/lib/bundler/vendor/uri/lib/uri/https.rb +2 -2
- data/lib/bundler/vendor/uri/lib/uri/ldap.rb +2 -2
- data/lib/bundler/vendor/uri/lib/uri/ldaps.rb +2 -1
- data/lib/bundler/vendor/uri/lib/uri/mailto.rb +2 -3
- data/lib/bundler/vendor/uri/lib/uri/rfc2396_parser.rb +16 -23
- data/lib/bundler/vendor/uri/lib/uri/rfc3986_parser.rb +105 -47
- data/lib/bundler/vendor/uri/lib/uri/version.rb +1 -1
- data/lib/bundler/vendor/uri/lib/uri/ws.rb +83 -0
- data/lib/bundler/vendor/uri/lib/uri/wss.rb +23 -0
- data/lib/bundler/vendor/uri/lib/uri.rb +3 -3
- data/lib/bundler/vendored_net_http.rb +23 -0
- data/lib/bundler/vendored_persistent.rb +0 -36
- data/lib/bundler/{vendored_molinillo.rb → vendored_pub_grub.rb} +1 -1
- data/lib/bundler/vendored_timeout.rb +12 -0
- data/lib/bundler/{vendored_tmpdir.rb → vendored_tsort.rb} +1 -1
- data/lib/bundler/vendored_uri.rb +18 -1
- data/lib/bundler/version.rb +5 -1
- data/lib/bundler/vlad.rb +1 -1
- data/lib/bundler/worker.rb +7 -9
- data/lib/bundler/yaml_serializer.rb +21 -12
- data/lib/bundler.rb +114 -121
- metadata +87 -41
- data/lib/bundler/dep_proxy.rb +0 -55
- data/lib/bundler/gemdeps.rb +0 -29
- data/lib/bundler/psyched_yaml.rb +0 -22
- data/lib/bundler/templates/gems.rb +0 -8
- data/lib/bundler/templates/newgem/ext/newgem/extconf.rb.tt +0 -5
- data/lib/bundler/templates/newgem/travis.yml.tt +0 -6
- data/lib/bundler/vendor/connection_pool/lib/connection_pool/monotonic_time.rb +0 -66
- data/lib/bundler/vendor/molinillo/lib/molinillo/delegates/resolution_state.rb +0 -57
- data/lib/bundler/vendor/molinillo/lib/molinillo/delegates/specification_provider.rb +0 -88
- data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/action.rb +0 -36
- data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/add_edge_no_circular.rb +0 -66
- data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/add_vertex.rb +0 -62
- data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/delete_edge.rb +0 -63
- data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/detach_vertex_named.rb +0 -61
- data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/log.rb +0 -126
- data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/set_payload.rb +0 -46
- data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/tag.rb +0 -36
- data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/vertex.rb +0 -164
- data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph.rb +0 -255
- data/lib/bundler/vendor/molinillo/lib/molinillo/errors.rb +0 -143
- data/lib/bundler/vendor/molinillo/lib/molinillo/gem_metadata.rb +0 -6
- data/lib/bundler/vendor/molinillo/lib/molinillo/modules/specification_provider.rb +0 -112
- data/lib/bundler/vendor/molinillo/lib/molinillo/modules/ui.rb +0 -67
- data/lib/bundler/vendor/molinillo/lib/molinillo/resolution.rb +0 -839
- data/lib/bundler/vendor/molinillo/lib/molinillo/resolver.rb +0 -46
- data/lib/bundler/vendor/molinillo/lib/molinillo/state.rb +0 -58
- data/lib/bundler/vendor/molinillo/lib/molinillo.rb +0 -11
- data/lib/bundler/vendor/tmpdir/lib/tmpdir.rb +0 -154
- data/lib/bundler/version_ranges.rb +0 -122
@@ -13,16 +13,16 @@ module Bundler
|
|
13
13
|
end
|
14
14
|
|
15
15
|
def install_from_spec
|
16
|
-
post_install_message =
|
16
|
+
post_install_message = install
|
17
17
|
Bundler.ui.debug "#{worker}: #{spec.name} (#{spec.version}) from #{spec.loaded_from}"
|
18
18
|
generate_executable_stubs
|
19
|
-
|
20
|
-
rescue Bundler::InstallHookError, Bundler::SecurityError, Bundler::APIResponseMismatchError
|
19
|
+
[true, post_install_message]
|
20
|
+
rescue Bundler::InstallHookError, Bundler::SecurityError, Bundler::APIResponseMismatchError, Bundler::InsecureInstallPathError
|
21
21
|
raise
|
22
22
|
rescue Errno::ENOSPC
|
23
|
-
|
24
|
-
rescue Bundler::BundlerError, Gem::InstallError
|
25
|
-
|
23
|
+
[false, out_of_space_message]
|
24
|
+
rescue Bundler::BundlerError, Gem::InstallError => e
|
25
|
+
[false, specific_failure_message(e)]
|
26
26
|
end
|
27
27
|
|
28
28
|
private
|
@@ -51,12 +51,19 @@ module Bundler
|
|
51
51
|
end
|
52
52
|
|
53
53
|
def install
|
54
|
-
spec.source.install(
|
54
|
+
spec.source.install(
|
55
|
+
spec,
|
56
|
+
force: force,
|
57
|
+
build_args: Array(spec_settings),
|
58
|
+
previous_spec: previous_spec,
|
59
|
+
)
|
55
60
|
end
|
56
61
|
|
57
|
-
def
|
58
|
-
|
59
|
-
|
62
|
+
def previous_spec
|
63
|
+
locked_gems = installer.definition.locked_gems
|
64
|
+
return unless locked_gems
|
65
|
+
|
66
|
+
locked_gems.specs.find {|s| s.name == spec.name }
|
60
67
|
end
|
61
68
|
|
62
69
|
def out_of_space_message
|
@@ -69,7 +76,7 @@ module Bundler
|
|
69
76
|
if Bundler.settings[:bin] && standalone
|
70
77
|
installer.generate_standalone_bundler_executable_stubs(spec)
|
71
78
|
elsif Bundler.settings[:bin]
|
72
|
-
installer.generate_bundler_executable_stubs(spec, :
|
79
|
+
installer.generate_bundler_executable_stubs(spec, force: true)
|
73
80
|
end
|
74
81
|
end
|
75
82
|
end
|
@@ -42,8 +42,7 @@ module Bundler
|
|
42
42
|
|
43
43
|
# Checks installed dependencies against spec's dependencies to make
|
44
44
|
# sure needed dependencies have been installed.
|
45
|
-
def dependencies_installed?(
|
46
|
-
installed_specs = all_specs.select(&:installed?).map(&:name)
|
45
|
+
def dependencies_installed?(installed_specs)
|
47
46
|
dependencies.all? {|d| installed_specs.include? d.name }
|
48
47
|
end
|
49
48
|
|
@@ -53,10 +52,6 @@ module Bundler
|
|
53
52
|
@dependencies ||= all_dependencies.reject {|dep| ignorable_dependency? dep }
|
54
53
|
end
|
55
54
|
|
56
|
-
def missing_lockfile_dependencies(all_spec_names)
|
57
|
-
dependencies.reject {|dep| all_spec_names.include? dep.name }
|
58
|
-
end
|
59
|
-
|
60
55
|
# Represents all dependencies
|
61
56
|
def all_dependencies
|
62
57
|
@spec.dependencies
|
@@ -67,25 +62,26 @@ module Bundler
|
|
67
62
|
end
|
68
63
|
end
|
69
64
|
|
70
|
-
def self.call(*args)
|
71
|
-
new(*args).call
|
65
|
+
def self.call(*args, **kwargs)
|
66
|
+
new(*args, **kwargs).call
|
72
67
|
end
|
73
68
|
|
74
69
|
attr_reader :size
|
75
70
|
|
76
|
-
def initialize(installer, all_specs, size, standalone, force)
|
71
|
+
def initialize(installer, all_specs, size, standalone, force, skip: nil)
|
77
72
|
@installer = installer
|
78
73
|
@size = size
|
79
74
|
@standalone = standalone
|
80
75
|
@force = force
|
81
76
|
@specs = all_specs.map {|s| SpecInstallation.new(s) }
|
77
|
+
@specs.each do |spec_install|
|
78
|
+
spec_install.state = :installed if skip.include?(spec_install.name)
|
79
|
+
end if skip
|
82
80
|
@spec_set = all_specs
|
83
|
-
@rake = @specs.find {|s| s.name == "rake" }
|
81
|
+
@rake = @specs.find {|s| s.name == "rake" unless s.installed? }
|
84
82
|
end
|
85
83
|
|
86
84
|
def call
|
87
|
-
check_for_corrupt_lockfile
|
88
|
-
|
89
85
|
if @rake
|
90
86
|
do_install(@rake, 0)
|
91
87
|
Gem::Specification.reset
|
@@ -97,60 +93,10 @@ module Bundler
|
|
97
93
|
install_serially
|
98
94
|
end
|
99
95
|
|
100
|
-
check_for_unmet_dependencies
|
101
|
-
|
102
96
|
handle_error if failed_specs.any?
|
103
97
|
@specs
|
104
98
|
ensure
|
105
|
-
worker_pool
|
106
|
-
end
|
107
|
-
|
108
|
-
def check_for_unmet_dependencies
|
109
|
-
unmet_dependencies = @specs.map do |s|
|
110
|
-
[
|
111
|
-
s,
|
112
|
-
s.dependencies.reject {|dep| @specs.any? {|spec| dep.matches_spec?(spec.spec) } },
|
113
|
-
]
|
114
|
-
end.reject {|a| a.last.empty? }
|
115
|
-
return if unmet_dependencies.empty?
|
116
|
-
|
117
|
-
warning = []
|
118
|
-
warning << "Your lockfile doesn't include a valid resolution."
|
119
|
-
warning << "You can fix this by regenerating your lockfile or trying to manually editing the bad locked gems to a version that satisfies all dependencies."
|
120
|
-
warning << "The unmet dependencies are:"
|
121
|
-
|
122
|
-
unmet_dependencies.each do |spec, unmet_spec_dependencies|
|
123
|
-
unmet_spec_dependencies.each do |unmet_spec_dependency|
|
124
|
-
warning << "* #{unmet_spec_dependency}, depended upon #{spec.full_name}, unsatisfied by #{@specs.find {|s| s.name == unmet_spec_dependency.name && !unmet_spec_dependency.matches_spec?(s.spec) }.full_name}"
|
125
|
-
end
|
126
|
-
end
|
127
|
-
|
128
|
-
Bundler.ui.warn(warning.join("\n"))
|
129
|
-
end
|
130
|
-
|
131
|
-
def check_for_corrupt_lockfile
|
132
|
-
missing_dependencies = @specs.map do |s|
|
133
|
-
[
|
134
|
-
s,
|
135
|
-
s.missing_lockfile_dependencies(@specs.map(&:name)),
|
136
|
-
]
|
137
|
-
end.reject {|a| a.last.empty? }
|
138
|
-
return if missing_dependencies.empty?
|
139
|
-
|
140
|
-
warning = []
|
141
|
-
warning << "Your lockfile was created by an old Bundler that left some things out."
|
142
|
-
if @size != 1
|
143
|
-
warning << "Because of the missing DEPENDENCIES, we can only install gems one at a time, instead of installing #{@size} at a time."
|
144
|
-
@size = 1
|
145
|
-
end
|
146
|
-
warning << "You can fix this by adding the missing gems to your Gemfile, running bundle install, and then removing the gems from your Gemfile."
|
147
|
-
warning << "The missing gems are:"
|
148
|
-
|
149
|
-
missing_dependencies.each do |spec, missing|
|
150
|
-
warning << "* #{missing.map(&:name).join(", ")} depended upon by #{spec.name}"
|
151
|
-
end
|
152
|
-
|
153
|
-
Bundler.ui.warn(warning.join("\n"))
|
99
|
+
worker_pool&.stop
|
154
100
|
end
|
155
101
|
|
156
102
|
private
|
@@ -239,8 +185,14 @@ module Bundler
|
|
239
185
|
# previously installed specifications. We continue until all specs
|
240
186
|
# are installed.
|
241
187
|
def enqueue_specs
|
242
|
-
|
243
|
-
|
188
|
+
installed_specs = {}
|
189
|
+
@specs.each do |spec|
|
190
|
+
next unless spec.installed?
|
191
|
+
installed_specs[spec.name] = true
|
192
|
+
end
|
193
|
+
|
194
|
+
@specs.each do |spec|
|
195
|
+
if spec.ready_to_enqueue? && spec.dependencies_installed?(installed_specs)
|
244
196
|
spec.state = :enqueued
|
245
197
|
worker_pool.enq spec
|
246
198
|
end
|
@@ -12,6 +12,8 @@ module Bundler
|
|
12
12
|
end
|
13
13
|
File.open File.join(bundler_path, "setup.rb"), "w" do |file|
|
14
14
|
file.puts "require 'rbconfig'"
|
15
|
+
file.puts prevent_gem_activation
|
16
|
+
file.puts define_path_helpers
|
15
17
|
file.puts reverse_rubygems_kernel_mixin
|
16
18
|
paths.each do |path|
|
17
19
|
if Pathname.new(path).absolute?
|
@@ -29,41 +31,80 @@ module Bundler
|
|
29
31
|
@specs.map do |spec|
|
30
32
|
next if spec.name == "bundler"
|
31
33
|
Array(spec.require_paths).map do |path|
|
32
|
-
gem_path(path, spec).
|
34
|
+
gem_path(path, spec).
|
35
|
+
sub(version_dir, '#{RUBY_ENGINE}/#{Gem.ruby_api_version}').
|
36
|
+
sub(extensions_dir, 'extensions/\k<platform>/#{Gem.extension_api_version}')
|
33
37
|
# This is a static string intentionally. It's interpolated at a later time.
|
34
38
|
end
|
35
39
|
end.flatten.compact
|
36
40
|
end
|
37
41
|
|
38
42
|
def version_dir
|
39
|
-
"#{RUBY_ENGINE}/#{
|
43
|
+
"#{RUBY_ENGINE}/#{Gem.ruby_api_version}"
|
44
|
+
end
|
45
|
+
|
46
|
+
def extensions_dir
|
47
|
+
%r{extensions/(?<platform>[^/]+)/#{Regexp.escape(Gem.extension_api_version)}}
|
40
48
|
end
|
41
49
|
|
42
50
|
def bundler_path
|
43
|
-
Bundler.root.join(Bundler.settings[:path], "bundler")
|
51
|
+
Bundler.root.join(Bundler.settings[:path].to_s, "bundler")
|
44
52
|
end
|
45
53
|
|
46
54
|
def gem_path(path, spec)
|
47
55
|
full_path = Pathname.new(path).absolute? ? path : File.join(spec.full_gem_path, path)
|
48
|
-
if spec.source.instance_of?(Source::Path)
|
56
|
+
if spec.source.instance_of?(Source::Path) && spec.source.path.absolute?
|
49
57
|
full_path
|
50
58
|
else
|
51
|
-
|
59
|
+
SharedHelpers.relative_path_to(full_path, from: Bundler.root.join(bundler_path))
|
52
60
|
end
|
53
|
-
|
54
|
-
|
55
|
-
|
61
|
+
end
|
62
|
+
|
63
|
+
def prevent_gem_activation
|
64
|
+
<<~'END'
|
65
|
+
module Kernel
|
66
|
+
remove_method(:gem) if private_method_defined?(:gem)
|
67
|
+
|
68
|
+
def gem(*)
|
69
|
+
end
|
70
|
+
|
71
|
+
private :gem
|
72
|
+
end
|
73
|
+
END
|
74
|
+
end
|
75
|
+
|
76
|
+
def define_path_helpers
|
77
|
+
<<~'END'
|
78
|
+
unless defined?(Gem)
|
79
|
+
module Gem
|
80
|
+
def self.ruby_api_version
|
81
|
+
RbConfig::CONFIG["ruby_version"]
|
82
|
+
end
|
83
|
+
|
84
|
+
def self.extension_api_version
|
85
|
+
if 'no' == RbConfig::CONFIG['ENABLE_SHARED']
|
86
|
+
"#{ruby_api_version}-static"
|
87
|
+
else
|
88
|
+
ruby_api_version
|
89
|
+
end
|
90
|
+
end
|
91
|
+
end
|
92
|
+
end
|
93
|
+
END
|
56
94
|
end
|
57
95
|
|
58
96
|
def reverse_rubygems_kernel_mixin
|
59
97
|
<<~END
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
k.
|
65
|
-
|
66
|
-
|
98
|
+
if Gem.respond_to?(:discover_gems_on_require=)
|
99
|
+
Gem.discover_gems_on_require = false
|
100
|
+
else
|
101
|
+
[::Kernel.singleton_class, ::Kernel].each do |k|
|
102
|
+
if k.private_method_defined?(:gem_original_require)
|
103
|
+
private_require = k.private_method_defined?(:require)
|
104
|
+
k.send(:remove_method, :require)
|
105
|
+
k.send(:define_method, :require, k.instance_method(:gem_original_require))
|
106
|
+
k.send(:private, :require) if private_require
|
107
|
+
end
|
67
108
|
end
|
68
109
|
end
|
69
110
|
END
|
data/lib/bundler/installer.rb
CHANGED
@@ -13,7 +13,7 @@ module Bundler
|
|
13
13
|
Installer.ambiguous_gems = []
|
14
14
|
end
|
15
15
|
|
16
|
-
attr_reader :post_install_messages
|
16
|
+
attr_reader :post_install_messages, :definition
|
17
17
|
|
18
18
|
# Begins the installation process for Bundler.
|
19
19
|
# For more information see the #run method on this class.
|
@@ -66,12 +66,10 @@ module Bundler
|
|
66
66
|
# require paths and save them in a `setup.rb` file. See `bundle standalone --help` for more
|
67
67
|
# information.
|
68
68
|
def run(options)
|
69
|
-
create_bundle_path
|
69
|
+
Bundler.create_bundle_path
|
70
70
|
|
71
71
|
ProcessLock.lock do
|
72
|
-
|
73
|
-
@definition.ensure_equivalent_gemfile_and_lockfile(options[:deployment])
|
74
|
-
end
|
72
|
+
@definition.ensure_equivalent_gemfile_and_lockfile(options[:deployment])
|
75
73
|
|
76
74
|
if @definition.dependencies.empty?
|
77
75
|
Bundler.ui.warn "The Gemfile specifies no dependencies"
|
@@ -90,7 +88,7 @@ module Bundler
|
|
90
88
|
|
91
89
|
Gem::Specification.reset # invalidate gem specification cache so that installed gems are immediately available
|
92
90
|
|
93
|
-
lock
|
91
|
+
lock
|
94
92
|
Standalone.new(options[:standalone], @definition).generate if options[:standalone]
|
95
93
|
end
|
96
94
|
end
|
@@ -119,7 +117,7 @@ module Bundler
|
|
119
117
|
relative_gemfile_path = relative_gemfile_path
|
120
118
|
ruby_command = Thor::Util.ruby_command
|
121
119
|
ruby_command = ruby_command
|
122
|
-
template_path = File.expand_path("
|
120
|
+
template_path = File.expand_path("templates/Executable", __dir__)
|
123
121
|
if spec.name == "bundler"
|
124
122
|
template_path += ".bundler"
|
125
123
|
spec.executables = %(bundle)
|
@@ -136,16 +134,12 @@ module Bundler
|
|
136
134
|
|
137
135
|
mode = Gem.win_platform? ? "wb:UTF-8" : "w"
|
138
136
|
require "erb"
|
139
|
-
content =
|
140
|
-
ERB.new(template, :trim_mode => "-").result(binding)
|
141
|
-
else
|
142
|
-
ERB.new(template, nil, "-").result(binding)
|
143
|
-
end
|
137
|
+
content = ERB.new(template, trim_mode: "-").result(binding)
|
144
138
|
|
145
|
-
File.write(binstub_path, content, :
|
139
|
+
File.write(binstub_path, content, mode: mode, perm: 0o777 & ~File.umask)
|
146
140
|
if Gem.win_platform? || options[:all_platforms]
|
147
141
|
prefix = "@ruby -x \"%~f0\" %*\n@exit /b %ERRORLEVEL%\n\n"
|
148
|
-
File.write("#{binstub_path}.cmd", prefix + content, :
|
142
|
+
File.write("#{binstub_path}.cmd", prefix + content, mode: mode)
|
149
143
|
end
|
150
144
|
end
|
151
145
|
|
@@ -172,7 +166,7 @@ module Bundler
|
|
172
166
|
end
|
173
167
|
standalone_path = Bundler.root.join(path).relative_path_from(bin_path)
|
174
168
|
standalone_path = standalone_path
|
175
|
-
template = File.read(File.expand_path("
|
169
|
+
template = File.read(File.expand_path("templates/Executable.standalone", __dir__))
|
176
170
|
ruby_command = Thor::Util.ruby_command
|
177
171
|
ruby_command = ruby_command
|
178
172
|
|
@@ -183,16 +177,12 @@ module Bundler
|
|
183
177
|
|
184
178
|
mode = Gem.win_platform? ? "wb:UTF-8" : "w"
|
185
179
|
require "erb"
|
186
|
-
content =
|
187
|
-
ERB.new(template, :trim_mode => "-").result(binding)
|
188
|
-
else
|
189
|
-
ERB.new(template, nil, "-").result(binding)
|
190
|
-
end
|
180
|
+
content = ERB.new(template, trim_mode: "-").result(binding)
|
191
181
|
|
192
|
-
File.write("#{bin_path}/#{executable}", content, :
|
182
|
+
File.write("#{bin_path}/#{executable}", content, mode: mode, perm: 0o755)
|
193
183
|
if Gem.win_platform? || options[:all_platforms]
|
194
184
|
prefix = "@ruby -x \"%~f0\" %*\n@exit /b %ERRORLEVEL%\n\n"
|
195
|
-
File.write("#{bin_path}/#{executable}.cmd", prefix + content, :
|
185
|
+
File.write("#{bin_path}/#{executable}.cmd", prefix + content, mode: mode)
|
196
186
|
end
|
197
187
|
end
|
198
188
|
end
|
@@ -218,42 +208,32 @@ module Bundler
|
|
218
208
|
return jobs
|
219
209
|
end
|
220
210
|
|
221
|
-
# Parallelization has some issues on Windows, so it's not yet the default
|
222
|
-
return 1 if Gem.win_platform?
|
223
|
-
|
224
211
|
Bundler.settings.processor_count
|
225
212
|
end
|
226
213
|
|
227
214
|
def load_plugins
|
228
|
-
|
215
|
+
Gem.load_plugins
|
229
216
|
|
230
217
|
requested_path_gems = @definition.requested_specs.select {|s| s.source.is_a?(Source::Path) }
|
231
218
|
path_plugin_files = requested_path_gems.map do |spec|
|
232
|
-
|
233
|
-
|
234
|
-
|
235
|
-
|
236
|
-
raise Gem::InvalidSpecificationException, error_message
|
237
|
-
end
|
219
|
+
Bundler.rubygems.spec_matches_for_glob(spec, "rubygems_plugin#{Bundler.rubygems.suffix_pattern}")
|
220
|
+
rescue TypeError
|
221
|
+
error_message = "#{spec.name} #{spec.version} has an invalid gemspec"
|
222
|
+
raise Gem::InvalidSpecificationException, error_message
|
238
223
|
end.flatten
|
239
|
-
|
240
|
-
|
224
|
+
Gem.load_plugin_files(path_plugin_files)
|
225
|
+
Gem.load_env_plugins
|
241
226
|
end
|
242
227
|
|
243
228
|
def ensure_specs_are_compatible!
|
244
|
-
system_ruby = Bundler::RubyVersion.system
|
245
|
-
rubygems_version = Gem::Version.create(Gem::VERSION)
|
246
229
|
@definition.specs.each do |spec|
|
247
|
-
|
248
|
-
|
249
|
-
|
250
|
-
"which is incompatible with the current version, #{system_ruby}"
|
251
|
-
end
|
230
|
+
unless spec.matches_current_ruby?
|
231
|
+
raise InstallError, "#{spec.full_name} requires ruby version #{spec.required_ruby_version}, " \
|
232
|
+
"which is incompatible with the current version, #{Gem.ruby_version}"
|
252
233
|
end
|
253
|
-
|
254
|
-
|
255
|
-
|
256
|
-
"which is incompatible with the current version, #{rubygems_version}"
|
234
|
+
unless spec.matches_current_rubygems?
|
235
|
+
raise InstallError, "#{spec.full_name} requires rubygems version #{spec.required_rubygems_version}, " \
|
236
|
+
"which is incompatible with the current version, #{Gem.rubygems_version}"
|
257
237
|
end
|
258
238
|
end
|
259
239
|
end
|
@@ -265,27 +245,21 @@ module Bundler
|
|
265
245
|
end
|
266
246
|
end
|
267
247
|
|
268
|
-
def create_bundle_path
|
269
|
-
SharedHelpers.filesystem_access(Bundler.bundle_path.to_s) do |p|
|
270
|
-
Bundler.mkdir_p(p)
|
271
|
-
end unless Bundler.bundle_path.exist?
|
272
|
-
rescue Errno::EEXIST
|
273
|
-
raise PathError, "Could not install to path `#{Bundler.bundle_path}` " \
|
274
|
-
"because a file already exists at that path. Either remove or rename the file so the directory can be created."
|
275
|
-
end
|
276
|
-
|
277
248
|
# returns whether or not a re-resolve was needed
|
278
249
|
def resolve_if_needed(options)
|
279
|
-
|
280
|
-
|
250
|
+
@definition.prefer_local! if options["prefer-local"]
|
251
|
+
|
252
|
+
if options["local"] || (@definition.no_resolve_needed? && !@definition.missing_specs?)
|
253
|
+
@definition.resolve_with_cache!
|
254
|
+
false
|
255
|
+
else
|
256
|
+
@definition.resolve_remotely!
|
257
|
+
true
|
281
258
|
end
|
282
|
-
|
283
|
-
options["local"] ? @definition.resolve_with_cache! : @definition.resolve_remotely!
|
284
|
-
true
|
285
259
|
end
|
286
260
|
|
287
|
-
def lock
|
288
|
-
@definition.lock
|
261
|
+
def lock
|
262
|
+
@definition.lock
|
289
263
|
end
|
290
264
|
end
|
291
265
|
end
|