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
data/README.md
CHANGED
@@ -1,5 +1,4 @@
|
|
1
1
|
[](https://rubygems.org/gems/bundler)
|
2
|
-
[](https://bundler-slackin.herokuapp.com)
|
3
2
|
|
4
3
|
# Bundler: a gem to bundle gems
|
5
4
|
|
@@ -32,26 +31,23 @@ See [bundler.io](https://bundler.io) for the full documentation.
|
|
32
31
|
|
33
32
|
For help with common problems, see [TROUBLESHOOTING](doc/TROUBLESHOOTING.md).
|
34
33
|
|
35
|
-
Still stuck? Try [filing an issue](
|
34
|
+
Still stuck? Try [filing an issue](https://github.com/rubygems/rubygems/issues/new?labels=Bundler&template=bundler-related-issue.md).
|
36
35
|
|
37
36
|
### Other questions
|
38
37
|
|
39
38
|
To see what has changed in recent versions of Bundler, see the [CHANGELOG](CHANGELOG.md).
|
40
39
|
|
41
|
-
To get in touch with the Bundler core team and other Bundler users, please
|
40
|
+
To get in touch with the Bundler core team and other Bundler users, please join [the Bundler slack](https://join.slack.com/t/bundler/shared_invite/zt-1rrsuuv3m-OmXKWQf8K6iSla4~F1DBjQ).
|
42
41
|
|
43
42
|
### Contributing
|
44
43
|
|
45
44
|
If you'd like to contribute to Bundler, that's awesome, and we <3 you. We've put together [the Bundler contributor guide](https://github.com/rubygems/rubygems/blob/master/bundler/doc/contributing/README.md) with all of the information you need to get started.
|
46
45
|
|
47
|
-
If you'd like to request a substantial change to Bundler or its documentation, refer to the [Bundler RFC process](https://github.com/
|
48
|
-
|
49
|
-
While some Bundler contributors are compensated by Ruby Together, the project maintainers make decisions independent of Ruby Together. As a project, we welcome contributions regardless of the author's affiliation with Ruby Together.
|
46
|
+
If you'd like to request a substantial change to Bundler or its documentation, refer to the [Bundler RFC process](https://github.com/rubygems/rfcs) for more information.
|
50
47
|
|
51
48
|
### Supporting
|
52
49
|
|
53
|
-
|
54
|
-
<a href="https://rubytogether.org/">Ruby Together</a> pays some Bundler maintainers for their ongoing work. As a grassroots initiative committed to supporting the critical Ruby infrastructure you rely on, Ruby Together is funded entirely by the Ruby community. Contribute today <a href="https://rubytogether.org/developers">as an individual</a> or (better yet) <a href="https://rubytogether.org/companies">as a company</a> to ensure that Bundler, RubyGems, and other shared tooling is around for years to come.
|
50
|
+
RubyGems is managed by [Ruby Central](https://rubycentral.org), a non-profit organization that supports the Ruby community through projects like this one, as well as [RubyConf](https://rubyconf.org), [RailsConf](https://railsconf.org), and [RubyGems.org](https://rubygems.org). You can support Ruby Central by attending or [sponsoring](sponsors@rubycentral.org) a conference, or by [joining as a supporting member](https://rubycentral.org/#/portal/signup).
|
55
51
|
|
56
52
|
### Code of Conduct
|
57
53
|
|
data/bundler.gemspec
CHANGED
@@ -22,17 +22,17 @@ Gem::Specification.new do |s|
|
|
22
22
|
s.summary = "The best way to manage your application's dependencies"
|
23
23
|
s.description = "Bundler manages an application's dependencies through its entire life, across many machines, systematically and repeatably"
|
24
24
|
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
s.required_rubygems_version = ">= 2.
|
25
|
+
s.metadata = {
|
26
|
+
"bug_tracker_uri" => "https://github.com/rubygems/rubygems/issues?q=is%3Aopen+is%3Aissue+label%3ABundler",
|
27
|
+
"changelog_uri" => "https://github.com/rubygems/rubygems/blob/master/bundler/CHANGELOG.md",
|
28
|
+
"homepage_uri" => "https://bundler.io/",
|
29
|
+
"source_code_uri" => "https://github.com/rubygems/rubygems/tree/master/bundler",
|
30
|
+
}
|
31
|
+
|
32
|
+
s.required_ruby_version = ">= 3.0.0"
|
33
|
+
|
34
|
+
# It should match the RubyGems version shipped with `required_ruby_version` above
|
35
|
+
s.required_rubygems_version = ">= 3.2.3"
|
36
36
|
|
37
37
|
s.files = Dir.glob("lib/bundler{.rb,/**/*}", File::FNM_DOTMATCH).reject {|f| File.directory?(f) }
|
38
38
|
|
data/exe/bundle
CHANGED
@@ -10,41 +10,20 @@ end
|
|
10
10
|
base_path = File.expand_path("../lib", __dir__)
|
11
11
|
|
12
12
|
if File.exist?(base_path)
|
13
|
-
|
14
|
-
else
|
15
|
-
require "bundler"
|
13
|
+
$LOAD_PATH.unshift(base_path)
|
16
14
|
end
|
17
15
|
|
18
|
-
|
19
|
-
gem "bundler", Bundler::VERSION if Gem.rubygems_version < Gem::Version.new("2.6.2")
|
20
|
-
|
21
|
-
# Check if an older version of bundler is installed
|
22
|
-
$LOAD_PATH.each do |path|
|
23
|
-
next unless path =~ %r{/bundler-0\.(\d+)} && $1.to_i < 9
|
24
|
-
err = String.new
|
25
|
-
err << "Looks like you have a version of bundler that's older than 0.9.\n"
|
26
|
-
err << "Please remove your old versions.\n"
|
27
|
-
err << "An easy way to do this is by running `gem cleanup bundler`."
|
28
|
-
abort(err)
|
29
|
-
end
|
16
|
+
require "bundler"
|
30
17
|
|
31
|
-
|
32
|
-
require_relative "../lib/bundler/friendly_errors"
|
33
|
-
else
|
34
|
-
require "bundler/friendly_errors"
|
35
|
-
end
|
18
|
+
require "bundler/friendly_errors"
|
36
19
|
|
37
20
|
Bundler.with_friendly_errors do
|
38
|
-
|
39
|
-
require_relative "../lib/bundler/cli"
|
40
|
-
else
|
41
|
-
require "bundler/cli"
|
42
|
-
end
|
21
|
+
require "bundler/cli"
|
43
22
|
|
44
23
|
# Allow any command to use --help flag to show help for that command
|
45
24
|
help_flags = %w[--help -h]
|
46
25
|
help_flag_used = ARGV.any? {|a| help_flags.include? a }
|
47
26
|
args = help_flag_used ? Bundler::CLI.reformatted_help_args(ARGV) : ARGV
|
48
27
|
|
49
|
-
Bundler::CLI.start(args, :
|
28
|
+
Bundler::CLI.start(args, debug: true)
|
50
29
|
end
|
data/exe/bundler
CHANGED
@@ -0,0 +1 @@
|
|
1
|
+
# not in RDoc
|
@@ -4,8 +4,8 @@ module Bundler
|
|
4
4
|
# Represents metadata from when the Bundler gem was built.
|
5
5
|
module BuildMetadata
|
6
6
|
# begin ivars
|
7
|
-
@built_at = "
|
8
|
-
@git_commit_sha = "
|
7
|
+
@built_at = "2024-07-18".freeze
|
8
|
+
@git_commit_sha = "f49d3d48c9".freeze
|
9
9
|
@release = true
|
10
10
|
# end ivars
|
11
11
|
|
@@ -29,9 +29,9 @@ module Bundler
|
|
29
29
|
|
30
30
|
# If Bundler has been installed without its .git directory and without a
|
31
31
|
# commit instance variable then we can't determine its commits SHA.
|
32
|
-
git_dir = File.
|
32
|
+
git_dir = File.expand_path("../../../.git", __dir__)
|
33
33
|
if File.directory?(git_dir)
|
34
|
-
return @git_commit_sha =
|
34
|
+
return @git_commit_sha = IO.popen(%w[git rev-parse --short HEAD], { chdir: git_dir }, &:read).strip.freeze
|
35
35
|
end
|
36
36
|
|
37
37
|
@git_commit_sha ||= "unknown"
|
data/lib/bundler/capistrano.rb
CHANGED
@@ -17,6 +17,6 @@ end
|
|
17
17
|
|
18
18
|
Capistrano::Configuration.instance(:must_exist).load do
|
19
19
|
before "deploy:finalize_update", "bundle:install"
|
20
|
-
Bundler::Deployment.define_task(self, :task, :
|
20
|
+
Bundler::Deployment.define_task(self, :task, except: { no_release: true })
|
21
21
|
set :rake, lambda { "#{fetch(:bundle_cmd, "bundle")} exec rake" }
|
22
22
|
end
|
@@ -0,0 +1,254 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Bundler
|
4
|
+
class Checksum
|
5
|
+
ALGO_SEPARATOR = "="
|
6
|
+
DEFAULT_ALGORITHM = "sha256"
|
7
|
+
private_constant :DEFAULT_ALGORITHM
|
8
|
+
DEFAULT_BLOCK_SIZE = 16_384
|
9
|
+
private_constant :DEFAULT_BLOCK_SIZE
|
10
|
+
|
11
|
+
class << self
|
12
|
+
def from_gem_package(gem_package, algo = DEFAULT_ALGORITHM)
|
13
|
+
return if Bundler.settings[:disable_checksum_validation]
|
14
|
+
return unless source = gem_package.instance_variable_get(:@gem)
|
15
|
+
return unless source.respond_to?(:with_read_io)
|
16
|
+
|
17
|
+
source.with_read_io do |io|
|
18
|
+
from_gem(io, source.path)
|
19
|
+
ensure
|
20
|
+
io.rewind
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
def from_gem(io, pathname, algo = DEFAULT_ALGORITHM)
|
25
|
+
digest = Bundler::SharedHelpers.digest(algo.upcase).new
|
26
|
+
buf = String.new(capacity: DEFAULT_BLOCK_SIZE)
|
27
|
+
digest << io.readpartial(DEFAULT_BLOCK_SIZE, buf) until io.eof?
|
28
|
+
Checksum.new(algo, digest.hexdigest!, Source.new(:gem, pathname))
|
29
|
+
end
|
30
|
+
|
31
|
+
def from_api(digest, source_uri, algo = DEFAULT_ALGORITHM)
|
32
|
+
return if Bundler.settings[:disable_checksum_validation]
|
33
|
+
|
34
|
+
Checksum.new(algo, to_hexdigest(digest, algo), Source.new(:api, source_uri))
|
35
|
+
end
|
36
|
+
|
37
|
+
def from_lock(lock_checksum, lockfile_location)
|
38
|
+
algo, digest = lock_checksum.strip.split(ALGO_SEPARATOR, 2)
|
39
|
+
Checksum.new(algo, to_hexdigest(digest, algo), Source.new(:lock, lockfile_location))
|
40
|
+
end
|
41
|
+
|
42
|
+
def to_hexdigest(digest, algo = DEFAULT_ALGORITHM)
|
43
|
+
return digest unless algo == DEFAULT_ALGORITHM
|
44
|
+
return digest if digest.match?(/\A[0-9a-f]{64}\z/i)
|
45
|
+
|
46
|
+
if digest.match?(%r{\A[-0-9a-z_+/]{43}={0,2}\z}i)
|
47
|
+
digest = digest.tr("-_", "+/") # fix urlsafe base64
|
48
|
+
digest.unpack1("m0").unpack1("H*")
|
49
|
+
else
|
50
|
+
raise ArgumentError, "#{digest.inspect} is not a valid SHA256 hex or base64 digest"
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
attr_reader :algo, :digest, :sources
|
56
|
+
|
57
|
+
def initialize(algo, digest, source)
|
58
|
+
@algo = algo
|
59
|
+
@digest = digest
|
60
|
+
@sources = [source]
|
61
|
+
end
|
62
|
+
|
63
|
+
def ==(other)
|
64
|
+
match?(other) && other.sources == sources
|
65
|
+
end
|
66
|
+
|
67
|
+
alias_method :eql?, :==
|
68
|
+
|
69
|
+
def same_source?(other)
|
70
|
+
sources.include?(other.sources.first)
|
71
|
+
end
|
72
|
+
|
73
|
+
def match?(other)
|
74
|
+
other.is_a?(self.class) && other.digest == digest && other.algo == algo
|
75
|
+
end
|
76
|
+
|
77
|
+
def hash
|
78
|
+
digest.hash
|
79
|
+
end
|
80
|
+
|
81
|
+
def to_s
|
82
|
+
"#{to_lock} (from #{sources.first}#{", ..." if sources.size > 1})"
|
83
|
+
end
|
84
|
+
|
85
|
+
def to_lock
|
86
|
+
"#{algo}#{ALGO_SEPARATOR}#{digest}"
|
87
|
+
end
|
88
|
+
|
89
|
+
def merge!(other)
|
90
|
+
return nil unless match?(other)
|
91
|
+
|
92
|
+
@sources.concat(other.sources).uniq!
|
93
|
+
self
|
94
|
+
end
|
95
|
+
|
96
|
+
def formatted_sources
|
97
|
+
sources.join("\n and ").concat("\n")
|
98
|
+
end
|
99
|
+
|
100
|
+
def removable?
|
101
|
+
sources.all?(&:removable?)
|
102
|
+
end
|
103
|
+
|
104
|
+
def removal_instructions
|
105
|
+
msg = +""
|
106
|
+
i = 1
|
107
|
+
sources.each do |source|
|
108
|
+
msg << " #{i}. #{source.removal}\n"
|
109
|
+
i += 1
|
110
|
+
end
|
111
|
+
msg << " #{i}. run `bundle install`\n"
|
112
|
+
end
|
113
|
+
|
114
|
+
def inspect
|
115
|
+
abbr = "#{algo}#{ALGO_SEPARATOR}#{digest[0, 8]}"
|
116
|
+
from = "from #{sources.join(" and ")}"
|
117
|
+
"#<#{self.class}:#{object_id} #{abbr} #{from}>"
|
118
|
+
end
|
119
|
+
|
120
|
+
class Source
|
121
|
+
attr_reader :type, :location
|
122
|
+
|
123
|
+
def initialize(type, location)
|
124
|
+
@type = type
|
125
|
+
@location = location
|
126
|
+
end
|
127
|
+
|
128
|
+
def removable?
|
129
|
+
type == :lock || type == :gem
|
130
|
+
end
|
131
|
+
|
132
|
+
def ==(other)
|
133
|
+
other.is_a?(self.class) && other.type == type && other.location == location
|
134
|
+
end
|
135
|
+
|
136
|
+
# phrased so that the usual string format is grammatically correct
|
137
|
+
# rake (10.3.2) sha256=abc123 from #{to_s}
|
138
|
+
def to_s
|
139
|
+
case type
|
140
|
+
when :lock
|
141
|
+
"the lockfile CHECKSUMS at #{location}"
|
142
|
+
when :gem
|
143
|
+
"the gem at #{location}"
|
144
|
+
when :api
|
145
|
+
"the API at #{location}"
|
146
|
+
else
|
147
|
+
"#{location} (#{type})"
|
148
|
+
end
|
149
|
+
end
|
150
|
+
|
151
|
+
# A full sentence describing how to remove the checksum
|
152
|
+
def removal
|
153
|
+
case type
|
154
|
+
when :lock
|
155
|
+
"remove the matching checksum in #{location}"
|
156
|
+
when :gem
|
157
|
+
"remove the gem at #{location}"
|
158
|
+
when :api
|
159
|
+
"checksums from #{location} cannot be locally modified, you may need to update your sources"
|
160
|
+
else
|
161
|
+
"remove #{location} (#{type})"
|
162
|
+
end
|
163
|
+
end
|
164
|
+
end
|
165
|
+
|
166
|
+
class Store
|
167
|
+
attr_reader :store
|
168
|
+
protected :store
|
169
|
+
|
170
|
+
def initialize
|
171
|
+
@store = {}
|
172
|
+
@store_mutex = Mutex.new
|
173
|
+
end
|
174
|
+
|
175
|
+
def inspect
|
176
|
+
"#<#{self.class}:#{object_id} size=#{store.size}>"
|
177
|
+
end
|
178
|
+
|
179
|
+
# Replace when the new checksum is from the same source.
|
180
|
+
# The primary purpose is registering checksums from gems where there are
|
181
|
+
# duplicates of the same gem (according to full_name) in the index.
|
182
|
+
#
|
183
|
+
# In particular, this is when 2 gems have two similar platforms, e.g.
|
184
|
+
# "darwin20" and "darwin-20", both of which resolve to darwin-20.
|
185
|
+
# In the Index, the later gem replaces the former, so we do that here.
|
186
|
+
#
|
187
|
+
# However, if the new checksum is from a different source, we register like normal.
|
188
|
+
# This ensures a mismatch error where there are multiple top level sources
|
189
|
+
# that contain the same gem with different checksums.
|
190
|
+
def replace(spec, checksum)
|
191
|
+
return unless checksum
|
192
|
+
|
193
|
+
lock_name = spec.name_tuple.lock_name
|
194
|
+
@store_mutex.synchronize do
|
195
|
+
existing = fetch_checksum(lock_name, checksum.algo)
|
196
|
+
if !existing || existing.same_source?(checksum)
|
197
|
+
store_checksum(lock_name, checksum)
|
198
|
+
else
|
199
|
+
merge_checksum(lock_name, checksum, existing)
|
200
|
+
end
|
201
|
+
end
|
202
|
+
end
|
203
|
+
|
204
|
+
def register(spec, checksum)
|
205
|
+
return unless checksum
|
206
|
+
|
207
|
+
register_checksum(spec.name_tuple.lock_name, checksum)
|
208
|
+
end
|
209
|
+
|
210
|
+
def merge!(other)
|
211
|
+
other.store.each do |lock_name, checksums|
|
212
|
+
checksums.each do |_algo, checksum|
|
213
|
+
register_checksum(lock_name, checksum)
|
214
|
+
end
|
215
|
+
end
|
216
|
+
end
|
217
|
+
|
218
|
+
def to_lock(spec)
|
219
|
+
lock_name = spec.name_tuple.lock_name
|
220
|
+
checksums = @store[lock_name]
|
221
|
+
if checksums
|
222
|
+
"#{lock_name} #{checksums.values.map(&:to_lock).sort.join(",")}"
|
223
|
+
else
|
224
|
+
lock_name
|
225
|
+
end
|
226
|
+
end
|
227
|
+
|
228
|
+
private
|
229
|
+
|
230
|
+
def register_checksum(lock_name, checksum)
|
231
|
+
@store_mutex.synchronize do
|
232
|
+
existing = fetch_checksum(lock_name, checksum.algo)
|
233
|
+
if existing
|
234
|
+
merge_checksum(lock_name, checksum, existing)
|
235
|
+
else
|
236
|
+
store_checksum(lock_name, checksum)
|
237
|
+
end
|
238
|
+
end
|
239
|
+
end
|
240
|
+
|
241
|
+
def merge_checksum(lock_name, checksum, existing)
|
242
|
+
existing.merge!(checksum) || raise(ChecksumMismatchError.new(lock_name, existing, checksum))
|
243
|
+
end
|
244
|
+
|
245
|
+
def store_checksum(lock_name, checksum)
|
246
|
+
(@store[lock_name] ||= {})[checksum.algo] = checksum
|
247
|
+
end
|
248
|
+
|
249
|
+
def fetch_checksum(lock_name, algo)
|
250
|
+
@store[lock_name]&.fetch(algo, nil)
|
251
|
+
end
|
252
|
+
end
|
253
|
+
end
|
254
|
+
end
|
@@ -0,0 +1,75 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Bundler
|
4
|
+
module CIDetector
|
5
|
+
# NOTE: Any changes made here will need to be made to both lib/rubygems/ci_detector.rb and
|
6
|
+
# bundler/lib/bundler/ci_detector.rb (which are enforced duplicates).
|
7
|
+
# TODO: Drop that duplication once bundler drops support for RubyGems 3.4
|
8
|
+
#
|
9
|
+
# ## Recognized CI providers, their signifiers, and the relevant docs ##
|
10
|
+
#
|
11
|
+
# Travis CI - CI, TRAVIS https://docs.travis-ci.com/user/environment-variables/#default-environment-variables
|
12
|
+
# Cirrus CI - CI, CIRRUS_CI https://cirrus-ci.org/guide/writing-tasks/#environment-variables
|
13
|
+
# Circle CI - CI, CIRCLECI https://circleci.com/docs/variables/#built-in-environment-variables
|
14
|
+
# Gitlab CI - CI, GITLAB_CI https://docs.gitlab.com/ee/ci/variables/
|
15
|
+
# AppVeyor - CI, APPVEYOR https://www.appveyor.com/docs/environment-variables/
|
16
|
+
# CodeShip - CI_NAME https://docs.cloudbees.com/docs/cloudbees-codeship/latest/pro-builds-and-configuration/environment-variables#_default_environment_variables
|
17
|
+
# dsari - CI, DSARI https://github.com/rfinnie/dsari#running
|
18
|
+
# Jenkins - BUILD_NUMBER https://www.jenkins.io/doc/book/pipeline/jenkinsfile/#using-environment-variables
|
19
|
+
# TeamCity - TEAMCITY_VERSION https://www.jetbrains.com/help/teamcity/predefined-build-parameters.html#Predefined+Server+Build+Parameters
|
20
|
+
# Appflow - CI_BUILD_ID https://ionic.io/docs/appflow/automation/environments#predefined-environments
|
21
|
+
# TaskCluster - TASKCLUSTER_ROOT_URL https://docs.taskcluster.net/docs/manual/design/env-vars
|
22
|
+
# Semaphore - CI, SEMAPHORE https://docs.semaphoreci.com/ci-cd-environment/environment-variables/
|
23
|
+
# BuildKite - CI, BUILDKITE https://buildkite.com/docs/pipelines/environment-variables
|
24
|
+
# GoCD - GO_SERVER_URL https://docs.gocd.org/current/faq/dev_use_current_revision_in_build.html
|
25
|
+
# GH Actions - CI, GITHUB_ACTIONS https://docs.github.com/en/actions/learn-github-actions/variables#default-environment-variables
|
26
|
+
#
|
27
|
+
# ### Some "standard" ENVs that multiple providers may set ###
|
28
|
+
#
|
29
|
+
# * CI - this is set by _most_ (but not all) CI providers now; it's approaching a standard.
|
30
|
+
# * CI_NAME - Not as frequently used, but some providers set this to specify their own name
|
31
|
+
|
32
|
+
# Any of these being set is a reasonably reliable indicator that we are
|
33
|
+
# executing in a CI environment.
|
34
|
+
ENV_INDICATORS = [
|
35
|
+
"CI",
|
36
|
+
"CI_NAME",
|
37
|
+
"CONTINUOUS_INTEGRATION",
|
38
|
+
"BUILD_NUMBER",
|
39
|
+
"CI_APP_ID",
|
40
|
+
"CI_BUILD_ID",
|
41
|
+
"CI_BUILD_NUMBER",
|
42
|
+
"RUN_ID",
|
43
|
+
"TASKCLUSTER_ROOT_URL",
|
44
|
+
].freeze
|
45
|
+
|
46
|
+
# For each CI, this env suffices to indicate that we're on _that_ CI's
|
47
|
+
# containers. (A few of them only supply a CI_NAME variable, which is also
|
48
|
+
# nice). And if they set "CI" but we can't tell which one they are, we also
|
49
|
+
# want to know that - a bare "ci" without another token tells us as much.
|
50
|
+
ENV_DESCRIPTORS = {
|
51
|
+
"TRAVIS" => "travis",
|
52
|
+
"CIRCLECI" => "circle",
|
53
|
+
"CIRRUS_CI" => "cirrus",
|
54
|
+
"DSARI" => "dsari",
|
55
|
+
"SEMAPHORE" => "semaphore",
|
56
|
+
"JENKINS_URL" => "jenkins",
|
57
|
+
"BUILDKITE" => "buildkite",
|
58
|
+
"GO_SERVER_URL" => "go",
|
59
|
+
"GITLAB_CI" => "gitlab",
|
60
|
+
"GITHUB_ACTIONS" => "github",
|
61
|
+
"TASKCLUSTER_ROOT_URL" => "taskcluster",
|
62
|
+
"CI" => "ci",
|
63
|
+
}.freeze
|
64
|
+
|
65
|
+
def self.ci?
|
66
|
+
ENV_INDICATORS.any? {|var| ENV.include?(var) }
|
67
|
+
end
|
68
|
+
|
69
|
+
def self.ci_strings
|
70
|
+
matching_names = ENV_DESCRIPTORS.select {|env, _| ENV[env] }.values
|
71
|
+
matching_names << ENV["CI_NAME"].downcase if ENV["CI_NAME"]
|
72
|
+
matching_names.reject(&:empty?).sort.uniq
|
73
|
+
end
|
74
|
+
end
|
75
|
+
end
|
data/lib/bundler/cli/add.rb
CHANGED
@@ -28,9 +28,9 @@ module Bundler
|
|
28
28
|
dependencies = gems.map {|g| Bundler::Dependency.new(g, version, options) }
|
29
29
|
|
30
30
|
Injector.inject(dependencies,
|
31
|
-
:
|
32
|
-
:
|
33
|
-
:
|
31
|
+
conservative_versioning: options[:version].nil?, # Perform conservative versioning only when version is not specified
|
32
|
+
optimistic: options[:optimistic],
|
33
|
+
strict: options[:strict])
|
34
34
|
end
|
35
35
|
|
36
36
|
def validate_options!
|
@@ -40,7 +40,7 @@ module Bundler
|
|
40
40
|
raise InvalidOption, "Please specify gems to add." if gems.empty?
|
41
41
|
|
42
42
|
version.to_a.each do |v|
|
43
|
-
raise InvalidOption, "Invalid gem requirement pattern '#{v}'" unless Gem::Requirement::PATTERN
|
43
|
+
raise InvalidOption, "Invalid gem requirement pattern '#{v}'" unless Gem::Requirement::PATTERN.match?(v.to_s)
|
44
44
|
end
|
45
45
|
end
|
46
46
|
end
|
data/lib/bundler/cli/binstubs.rb
CHANGED
@@ -11,15 +11,15 @@ module Bundler
|
|
11
11
|
def run
|
12
12
|
Bundler.definition.validate_runtime!
|
13
13
|
path_option = options["path"]
|
14
|
-
path_option = nil if path_option
|
14
|
+
path_option = nil if path_option&.empty?
|
15
15
|
Bundler.settings.set_command_option :bin, path_option if options["path"]
|
16
16
|
Bundler.settings.set_command_option_if_given :shebang, options["shebang"]
|
17
17
|
installer = Installer.new(Bundler.root, Bundler.definition)
|
18
18
|
|
19
19
|
installer_opts = {
|
20
|
-
:
|
21
|
-
:
|
22
|
-
:
|
20
|
+
force: options[:force],
|
21
|
+
binstubs_cmd: true,
|
22
|
+
all_platforms: options["all-platforms"],
|
23
23
|
}
|
24
24
|
|
25
25
|
if options[:all]
|
@@ -40,8 +40,12 @@ module Bundler
|
|
40
40
|
end
|
41
41
|
|
42
42
|
if options[:standalone]
|
43
|
-
|
44
|
-
|
43
|
+
if gem_name == "bundler"
|
44
|
+
Bundler.ui.warn("Sorry, Bundler can only be run via RubyGems.") unless options[:all]
|
45
|
+
next
|
46
|
+
end
|
47
|
+
|
48
|
+
Bundler.settings.temporary(path: Bundler.settings[:path] || Bundler.root) do
|
45
49
|
installer.generate_standalone_bundler_executable_stubs(spec, installer_opts)
|
46
50
|
end
|
47
51
|
else
|
data/lib/bundler/cli/cache.rb
CHANGED
@@ -19,7 +19,7 @@ module Bundler
|
|
19
19
|
# TODO: move cache contents here now that all bundles are locked
|
20
20
|
custom_path = Bundler.settings[:path] if options[:path]
|
21
21
|
|
22
|
-
Bundler.settings.temporary(:
|
22
|
+
Bundler.settings.temporary(cache_all_platforms: options["all-platforms"]) do
|
23
23
|
Bundler.load.cache(custom_path)
|
24
24
|
end
|
25
25
|
end
|
data/lib/bundler/cli/check.rb
CHANGED
@@ -17,7 +17,7 @@ module Bundler
|
|
17
17
|
begin
|
18
18
|
definition.resolve_only_locally!
|
19
19
|
not_installed = definition.missing_specs
|
20
|
-
rescue GemNotFound,
|
20
|
+
rescue GemNotFound, SolveFailure
|
21
21
|
Bundler.ui.error "Bundler can't satisfy your Gemfile's dependencies."
|
22
22
|
Bundler.ui.warn "Install missing gems with `bundle install`."
|
23
23
|
exit 1
|
@@ -29,10 +29,10 @@ module Bundler
|
|
29
29
|
Bundler.ui.warn "Install missing gems with `bundle install`"
|
30
30
|
exit 1
|
31
31
|
elsif !Bundler.default_lockfile.file? && Bundler.frozen_bundle?
|
32
|
-
Bundler.ui.error "This bundle has been frozen, but there is no #{
|
32
|
+
Bundler.ui.error "This bundle has been frozen, but there is no #{SharedHelpers.relative_lockfile_path} present"
|
33
33
|
exit 1
|
34
34
|
else
|
35
|
-
Bundler.load.lock(:
|
35
|
+
Bundler.load.lock(preserve_unknown_sections: true) unless options[:"dry-run"]
|
36
36
|
Bundler.ui.info "The Gemfile's dependencies are satisfied"
|
37
37
|
end
|
38
38
|
end
|
data/lib/bundler/cli/common.rb
CHANGED
@@ -15,6 +15,7 @@ module Bundler
|
|
15
15
|
end
|
16
16
|
|
17
17
|
def self.output_fund_metadata_summary
|
18
|
+
return if Bundler.settings["ignore_funding_requests"]
|
18
19
|
definition = Bundler.definition
|
19
20
|
current_dependencies = definition.requested_dependencies
|
20
21
|
current_specs = definition.specs
|
@@ -40,7 +41,7 @@ module Bundler
|
|
40
41
|
end
|
41
42
|
|
42
43
|
def self.verbalize_groups(groups)
|
43
|
-
groups.map!{|g| "'#{g}'" }
|
44
|
+
groups.map! {|g| "'#{g}'" }
|
44
45
|
group_list = [groups[0...-1].join(", "), groups[-1..-1]].
|
45
46
|
reject {|s| s.to_s.empty? }.join(" and ")
|
46
47
|
group_str = groups.size == 1 ? "group" : "groups"
|
@@ -53,9 +54,12 @@ module Bundler
|
|
53
54
|
|
54
55
|
Bundler.definition.specs.each do |spec|
|
55
56
|
return spec if spec.name == name
|
56
|
-
specs << spec if regexp && spec.name
|
57
|
+
specs << spec if regexp && spec.name.match?(regexp)
|
57
58
|
end
|
58
59
|
|
60
|
+
default_spec = default_gem_spec(name)
|
61
|
+
specs << default_spec if default_spec
|
62
|
+
|
59
63
|
case specs.count
|
60
64
|
when 0
|
61
65
|
dep_in_other_group = Bundler.definition.current_dependencies.find {|dep|dep.name == name }
|
@@ -74,6 +78,11 @@ module Bundler
|
|
74
78
|
raise GemNotFound, gem_not_found_message(name, Bundler.definition.dependencies)
|
75
79
|
end
|
76
80
|
|
81
|
+
def self.default_gem_spec(name)
|
82
|
+
gem_spec = Gem::Specification.find_all_by_name(name).last
|
83
|
+
gem_spec if gem_spec&.default_gem?
|
84
|
+
end
|
85
|
+
|
77
86
|
def self.ask_for_spec_from(specs)
|
78
87
|
specs.each_with_index do |spec, index|
|
79
88
|
Bundler.ui.info "#{index.succ} : #{spec.name}", true
|
@@ -109,7 +118,8 @@ module Bundler
|
|
109
118
|
|
110
119
|
definition.gem_version_promoter.tap do |gvp|
|
111
120
|
gvp.level = patch_level.first || :major
|
112
|
-
gvp.strict = options[:strict] || options["
|
121
|
+
gvp.strict = options[:strict] || options["filter-strict"]
|
122
|
+
gvp.pre = options[:pre]
|
113
123
|
end
|
114
124
|
end
|
115
125
|
|