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
@@ -7,14 +7,13 @@ module Bundler
|
|
7
7
|
# available dependency versions as found in its index, before returning it to
|
8
8
|
# to the resolution engine to select the best version.
|
9
9
|
class GemVersionPromoter
|
10
|
-
|
11
|
-
|
12
|
-
attr_reader :level, :locked_specs, :unlock_gems
|
10
|
+
attr_reader :level
|
11
|
+
attr_accessor :pre
|
13
12
|
|
14
13
|
# By default, strict is false, meaning every available version of a gem
|
15
14
|
# is returned from sort_versions. The order gives preference to the
|
16
15
|
# requested level (:patch, :minor, :major) but in complicated requirement
|
17
|
-
# cases some gems will by necessity
|
16
|
+
# cases some gems will by necessity be promoted past the requested level,
|
18
17
|
# or even reverted to older versions.
|
19
18
|
#
|
20
19
|
# If strict is set to true, the results from sort_versions will be
|
@@ -24,24 +23,13 @@ module Bundler
|
|
24
23
|
# existing in the referenced source.
|
25
24
|
attr_accessor :strict
|
26
25
|
|
27
|
-
|
28
|
-
|
29
|
-
# Given a list of locked_specs and a list of gems to unlock creates a
|
30
|
-
# GemVersionPromoter instance.
|
26
|
+
# Creates a GemVersionPromoter instance.
|
31
27
|
#
|
32
|
-
# @param locked_specs [SpecSet] All current locked specs. Unlike Definition
|
33
|
-
# where this list is empty if all gems are being updated, this should
|
34
|
-
# always be populated for all gems so this class can properly function.
|
35
|
-
# @param unlock_gems [String] List of gem names being unlocked. If empty,
|
36
|
-
# all gems will be considered unlocked.
|
37
28
|
# @return [GemVersionPromoter]
|
38
|
-
def initialize
|
29
|
+
def initialize
|
39
30
|
@level = :major
|
40
31
|
@strict = false
|
41
|
-
@
|
42
|
-
@unlock_gems = unlock_gems
|
43
|
-
@sort_versions = {}
|
44
|
-
@prerelease_specified = {}
|
32
|
+
@pre = false
|
45
33
|
end
|
46
34
|
|
47
35
|
# @param value [Symbol] One of three Symbols: :major, :minor or :patch.
|
@@ -55,37 +43,39 @@ module Bundler
|
|
55
43
|
@level = v
|
56
44
|
end
|
57
45
|
|
58
|
-
# Given a
|
59
|
-
# gem, this method will return the Array of
|
60
|
-
#
|
61
|
-
#
|
62
|
-
#
|
63
|
-
# @param
|
64
|
-
# @param
|
65
|
-
#
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
if
|
79
|
-
|
46
|
+
# Given a Resolver::Package and an Array of Specifications of available
|
47
|
+
# versions for a gem, this method will return the Array of Specifications
|
48
|
+
# sorted in an order to give preference to the current level (:major, :minor
|
49
|
+
# or :patch) when resolution is deciding what versions best resolve all
|
50
|
+
# dependencies in the bundle.
|
51
|
+
# @param package [Resolver::Package] The package being resolved.
|
52
|
+
# @param specs [Specification] An array of Specifications for the package.
|
53
|
+
# @return [Specification] A new instance of the Specification Array sorted.
|
54
|
+
def sort_versions(package, specs)
|
55
|
+
locked_version = package.locked_version
|
56
|
+
|
57
|
+
result = specs.sort do |a, b|
|
58
|
+
unless package.prerelease_specified? || pre?
|
59
|
+
a_pre = a.prerelease?
|
60
|
+
b_pre = b.prerelease?
|
61
|
+
|
62
|
+
next 1 if a_pre && !b_pre
|
63
|
+
next -1 if b_pre && !a_pre
|
64
|
+
end
|
65
|
+
|
66
|
+
if major? || locked_version.nil?
|
67
|
+
b <=> a
|
68
|
+
elsif either_version_older_than_locked?(a, b, locked_version)
|
69
|
+
b <=> a
|
70
|
+
elsif segments_do_not_match?(a, b, :major)
|
71
|
+
a <=> b
|
72
|
+
elsif !minor? && segments_do_not_match?(a, b, :minor)
|
73
|
+
a <=> b
|
80
74
|
else
|
81
|
-
|
82
|
-
end.tap do |specs|
|
83
|
-
if DEBUG
|
84
|
-
puts before_result
|
85
|
-
puts " after sort_versions: #{debug_format_result(dep, specs).inspect}"
|
86
|
-
end
|
75
|
+
b <=> a
|
87
76
|
end
|
88
77
|
end
|
78
|
+
post_sort(result, package.unlock?, locked_version)
|
89
79
|
end
|
90
80
|
|
91
81
|
# @return [bool] Convenience method for testing value of level variable.
|
@@ -98,93 +88,62 @@ module Bundler
|
|
98
88
|
level == :minor
|
99
89
|
end
|
100
90
|
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
res = spec_groups.select do |spec_group|
|
105
|
-
if locked_spec && !major?
|
106
|
-
gsv = spec_group.version
|
107
|
-
lsv = locked_spec.version
|
108
|
-
|
109
|
-
must_match = minor? ? [0] : [0, 1]
|
110
|
-
|
111
|
-
matches = must_match.map {|idx| gsv.segments[idx] == lsv.segments[idx] }
|
112
|
-
matches.uniq == [true] ? (gsv >= lsv) : false
|
113
|
-
else
|
114
|
-
true
|
115
|
-
end
|
116
|
-
end
|
117
|
-
|
118
|
-
sort_dep_specs(res, locked_spec)
|
91
|
+
# @return [bool] Convenience method for testing value of pre variable.
|
92
|
+
def pre?
|
93
|
+
pre == true
|
119
94
|
end
|
120
95
|
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
96
|
+
# Given a Resolver::Package and an Array of Specifications of available
|
97
|
+
# versions for a gem, this method will truncate the Array if strict
|
98
|
+
# is true. That means filtering out downgrades from the version currently
|
99
|
+
# locked, and filtering out upgrades that go past the selected level (major,
|
100
|
+
# minor, or patch).
|
101
|
+
# @param package [Resolver::Package] The package being resolved.
|
102
|
+
# @param specs [Specification] An array of Specifications for the package.
|
103
|
+
# @return [Specification] A new instance of the Specification Array
|
104
|
+
# truncated.
|
105
|
+
def filter_versions(package, specs)
|
106
|
+
return specs unless strict
|
125
107
|
|
126
|
-
|
127
|
-
|
128
|
-
@b_ver = b.version
|
108
|
+
locked_version = package.locked_version
|
109
|
+
return specs if locked_version.nil? || major?
|
129
110
|
|
130
|
-
|
131
|
-
|
132
|
-
b_pre = @b_ver.prerelease?
|
111
|
+
specs.select do |spec|
|
112
|
+
gsv = spec.version
|
133
113
|
|
134
|
-
|
135
|
-
next 1 if b_pre && !a_pre
|
136
|
-
end
|
114
|
+
must_match = minor? ? [0] : [0, 1]
|
137
115
|
|
138
|
-
|
139
|
-
|
140
|
-
elsif either_version_older_than_locked
|
141
|
-
@a_ver <=> @b_ver
|
142
|
-
elsif segments_do_not_match(:major)
|
143
|
-
@b_ver <=> @a_ver
|
144
|
-
elsif !minor? && segments_do_not_match(:minor)
|
145
|
-
@b_ver <=> @a_ver
|
146
|
-
else
|
147
|
-
@a_ver <=> @b_ver
|
148
|
-
end
|
116
|
+
all_match = must_match.all? {|idx| gsv.segments[idx] == locked_version.segments[idx] }
|
117
|
+
all_match && gsv >= locked_version
|
149
118
|
end
|
150
|
-
post_sort(result)
|
151
119
|
end
|
152
120
|
|
153
|
-
|
154
|
-
@a_ver < @locked_version || @b_ver < @locked_version
|
155
|
-
end
|
121
|
+
private
|
156
122
|
|
157
|
-
def
|
158
|
-
|
159
|
-
@a_ver.segments[index] != @b_ver.segments[index]
|
123
|
+
def either_version_older_than_locked?(a, b, locked_version)
|
124
|
+
a.version < locked_version || b.version < locked_version
|
160
125
|
end
|
161
126
|
|
162
|
-
def
|
163
|
-
|
127
|
+
def segments_do_not_match?(a, b, level)
|
128
|
+
index = [:major, :minor].index(level)
|
129
|
+
a.segments[index] != b.segments[index]
|
164
130
|
end
|
165
131
|
|
166
132
|
# Specific version moves can't always reliably be done during sorting
|
167
133
|
# as not all elements are compared against each other.
|
168
|
-
def post_sort(result)
|
134
|
+
def post_sort(result, unlock, locked_version)
|
169
135
|
# default :major behavior in Bundler does not do this
|
170
136
|
return result if major?
|
171
|
-
if
|
137
|
+
if unlock || locked_version.nil?
|
172
138
|
result
|
173
139
|
else
|
174
|
-
|
140
|
+
move_version_to_beginning(result, locked_version)
|
175
141
|
end
|
176
142
|
end
|
177
143
|
|
178
|
-
def
|
144
|
+
def move_version_to_beginning(result, version)
|
179
145
|
move, keep = result.partition {|s| s.version.to_s == version.to_s }
|
180
|
-
|
181
|
-
end
|
182
|
-
|
183
|
-
def debug_format_result(dep, spec_groups)
|
184
|
-
a = [dep.to_s,
|
185
|
-
spec_groups.map {|sg| [sg.version, sg.dependencies_for_activated_platforms.map {|dp| [dp.name, dp.requirement.to_s] }] }]
|
186
|
-
last_map = a.last.map {|sg_data| [sg_data.first.version, sg_data.last.map {|aa| aa.join(" ") }] }
|
187
|
-
[a.first, last_map, level, strict ? :strict : :not_strict]
|
146
|
+
move.concat(keep)
|
188
147
|
end
|
189
148
|
end
|
190
149
|
end
|
data/lib/bundler/graph.rb
CHANGED
@@ -84,7 +84,7 @@ module Bundler
|
|
84
84
|
else
|
85
85
|
raise ArgumentError, "2nd argument is invalid"
|
86
86
|
end
|
87
|
-
label.nil? ? {} : { :
|
87
|
+
label.nil? ? {} : { label: label }
|
88
88
|
end
|
89
89
|
|
90
90
|
def spec_for_dependency(dependency)
|
@@ -103,7 +103,7 @@ module Bundler
|
|
103
103
|
end
|
104
104
|
|
105
105
|
def g
|
106
|
-
@g ||= ::GraphViz.digraph(@graph_name, :
|
106
|
+
@g ||= ::GraphViz.digraph(@graph_name, concentrate: true, normalize: true, nodesep: 0.55) do |g|
|
107
107
|
g.edge[:weight] = 2
|
108
108
|
g.edge[:fontname] = g.node[:fontname] = "Arial, Helvetica, SansSerif"
|
109
109
|
g.edge[:fontsize] = 12
|
@@ -114,10 +114,10 @@ module Bundler
|
|
114
114
|
@groups.each do |group|
|
115
115
|
g.add_nodes(
|
116
116
|
group, {
|
117
|
-
:
|
118
|
-
:
|
119
|
-
:
|
120
|
-
:
|
117
|
+
style: "filled",
|
118
|
+
fillcolor: "#B9B9D5",
|
119
|
+
shape: "box3d",
|
120
|
+
fontsize: 16,
|
121
121
|
}.merge(@node_options[group])
|
122
122
|
)
|
123
123
|
end
|
@@ -125,8 +125,8 @@ module Bundler
|
|
125
125
|
@relations.each do |parent, children|
|
126
126
|
children.each do |child|
|
127
127
|
if @groups.include?(parent)
|
128
|
-
g.add_nodes(child, { :
|
129
|
-
g.add_edges(parent, child, { :
|
128
|
+
g.add_nodes(child, { style: "filled", fillcolor: "#B9B9D5" }.merge(@node_options[child]))
|
129
|
+
g.add_edges(parent, child, { constraint: false }.merge(@edge_options["#{parent}_#{child}"]))
|
130
130
|
else
|
131
131
|
g.add_nodes(child, @node_options[child])
|
132
132
|
g.add_edges(parent, child, @edge_options["#{parent}_#{child}"])
|
@@ -135,7 +135,7 @@ module Bundler
|
|
135
135
|
end
|
136
136
|
|
137
137
|
if @output_format.to_s == "debug"
|
138
|
-
$stdout.puts g.output :
|
138
|
+
$stdout.puts g.output none: String
|
139
139
|
Bundler.ui.info "debugging bundle viz..."
|
140
140
|
else
|
141
141
|
begin
|
data/lib/bundler/index.rb
CHANGED
@@ -10,30 +10,30 @@ module Bundler
|
|
10
10
|
i
|
11
11
|
end
|
12
12
|
|
13
|
-
attr_reader :specs, :
|
14
|
-
protected :specs, :
|
13
|
+
attr_reader :specs, :duplicates, :sources
|
14
|
+
protected :specs, :duplicates
|
15
15
|
|
16
|
-
RUBY = "ruby"
|
17
|
-
NULL = "\0"
|
16
|
+
RUBY = "ruby"
|
17
|
+
NULL = "\0"
|
18
18
|
|
19
19
|
def initialize
|
20
20
|
@sources = []
|
21
21
|
@cache = {}
|
22
|
-
@specs =
|
23
|
-
@
|
22
|
+
@specs = {}
|
23
|
+
@duplicates = {}
|
24
24
|
end
|
25
25
|
|
26
26
|
def initialize_copy(o)
|
27
27
|
@sources = o.sources.dup
|
28
28
|
@cache = {}
|
29
|
-
@specs =
|
30
|
-
@
|
29
|
+
@specs = {}
|
30
|
+
@duplicates = {}
|
31
31
|
|
32
32
|
o.specs.each do |name, hash|
|
33
33
|
@specs[name] = hash.dup
|
34
34
|
end
|
35
|
-
o.
|
36
|
-
@
|
35
|
+
o.duplicates.each do |name, array|
|
36
|
+
@duplicates[name] = array.dup
|
37
37
|
end
|
38
38
|
end
|
39
39
|
|
@@ -46,66 +46,42 @@ module Bundler
|
|
46
46
|
true
|
47
47
|
end
|
48
48
|
|
49
|
-
def search_all(name)
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
all_matches
|
49
|
+
def search_all(name, &blk)
|
50
|
+
return enum_for(:search_all, name) unless blk
|
51
|
+
specs_by_name(name).each(&blk)
|
52
|
+
@duplicates[name]&.each(&blk)
|
53
|
+
@sources.each {|source| source.search_all(name, &blk) }
|
55
54
|
end
|
56
55
|
|
57
56
|
# Search this index's specs, and any source indexes that this index knows
|
58
57
|
# about, returning all of the results.
|
59
|
-
def search(query
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
def unsorted_search(query, base)
|
64
|
-
results = local_search(query, base)
|
65
|
-
|
66
|
-
seen = results.map(&:full_name).uniq unless @sources.empty?
|
58
|
+
def search(query)
|
59
|
+
results = local_search(query)
|
60
|
+
return results unless @sources.any?
|
67
61
|
|
68
62
|
@sources.each do |source|
|
69
|
-
source.
|
70
|
-
next if seen.include?(spec.full_name)
|
71
|
-
|
72
|
-
seen << spec.full_name
|
73
|
-
results << spec
|
74
|
-
end
|
63
|
+
results = safe_concat(results, source.search(query))
|
75
64
|
end
|
76
|
-
|
65
|
+
results.uniq!(&:full_name) unless results.empty? # avoid modifying frozen EMPTY_SEARCH
|
77
66
|
results
|
78
67
|
end
|
79
|
-
protected :unsorted_search
|
80
68
|
|
81
|
-
|
82
|
-
specs.sort_by do |s|
|
83
|
-
platform_string = s.platform.to_s
|
84
|
-
[s.version, platform_string == RUBY ? NULL : platform_string]
|
85
|
-
end
|
86
|
-
end
|
87
|
-
|
88
|
-
def sort_specs(specs)
|
89
|
-
self.class.sort_specs(specs)
|
90
|
-
end
|
69
|
+
alias_method :[], :search
|
91
70
|
|
92
|
-
def local_search(query
|
71
|
+
def local_search(query)
|
93
72
|
case query
|
94
73
|
when Gem::Specification, RemoteSpecification, LazySpecification, EndpointSpecification then search_by_spec(query)
|
95
74
|
when String then specs_by_name(query)
|
96
|
-
when
|
97
|
-
when DepProxy then search_by_dependency(query.dep, base)
|
75
|
+
when Array then specs_by_name_and_version(*query)
|
98
76
|
else
|
99
77
|
raise "You can't search for a #{query.inspect}."
|
100
78
|
end
|
101
79
|
end
|
102
80
|
|
103
|
-
|
104
|
-
|
105
|
-
def <<(spec)
|
106
|
-
@specs[spec.name][spec.full_name] = spec
|
107
|
-
spec
|
81
|
+
def add(spec)
|
82
|
+
(@specs[spec.name] ||= {}).store(spec.full_name, spec)
|
108
83
|
end
|
84
|
+
alias_method :<<, :add
|
109
85
|
|
110
86
|
def each(&blk)
|
111
87
|
return enum_for(:each) unless blk
|
@@ -139,15 +115,25 @@ module Bundler
|
|
139
115
|
names.uniq
|
140
116
|
end
|
141
117
|
|
142
|
-
|
118
|
+
# Combines indexes proritizing existing specs, like `Hash#reverse_merge!`
|
119
|
+
# Duplicate specs found in `other` are stored in `@duplicates`.
|
120
|
+
def use(other)
|
121
|
+
return unless other
|
122
|
+
other.each do |spec|
|
123
|
+
exist?(spec) ? add_duplicate(spec) : add(spec)
|
124
|
+
end
|
125
|
+
self
|
126
|
+
end
|
127
|
+
|
128
|
+
# Combines indexes proritizing specs from `other`, like `Hash#merge!`
|
129
|
+
# Duplicate specs found in `self` are saved in `@duplicates`.
|
130
|
+
def merge!(other)
|
143
131
|
return unless other
|
144
|
-
other.each do |
|
145
|
-
if
|
146
|
-
|
147
|
-
@all_specs[s.name] = dupes << s
|
148
|
-
next unless override_dupes
|
132
|
+
other.each do |spec|
|
133
|
+
if existing = find_by_spec(spec)
|
134
|
+
add_duplicate(existing)
|
149
135
|
end
|
150
|
-
|
136
|
+
add spec
|
151
137
|
end
|
152
138
|
self
|
153
139
|
end
|
@@ -159,8 +145,7 @@ module Bundler
|
|
159
145
|
end
|
160
146
|
|
161
147
|
# Whether all the specs in self are in other
|
162
|
-
|
163
|
-
def ==(other)
|
148
|
+
def subset?(other)
|
164
149
|
all? do |spec|
|
165
150
|
other_spec = other[spec].first
|
166
151
|
other_spec && dependencies_eql?(spec, other_spec) && spec.source == other_spec.source
|
@@ -181,33 +166,40 @@ module Bundler
|
|
181
166
|
|
182
167
|
private
|
183
168
|
|
184
|
-
def
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
@cache[base || false] ||= {}
|
190
|
-
@cache[base || false][dependency] ||= begin
|
191
|
-
specs = specs_by_name(dependency.name)
|
192
|
-
specs += base if base
|
193
|
-
found = specs.select do |spec|
|
194
|
-
next true if spec.source.is_a?(Source::Gemspec)
|
195
|
-
if base # allow all platforms when searching from a lockfile
|
196
|
-
dependency.matches_spec?(spec)
|
197
|
-
else
|
198
|
-
dependency.matches_spec?(spec) && Gem::Platform.match_spec?(spec)
|
199
|
-
end
|
200
|
-
end
|
169
|
+
def safe_concat(a, b)
|
170
|
+
return a if b.empty?
|
171
|
+
return b if a.empty?
|
172
|
+
a.concat(b)
|
173
|
+
end
|
201
174
|
|
202
|
-
|
203
|
-
|
175
|
+
def add_duplicate(spec)
|
176
|
+
(@duplicates[spec.name] ||= []) << spec
|
177
|
+
end
|
178
|
+
|
179
|
+
def specs_by_name_and_version(name, version)
|
180
|
+
results = @specs[name]&.values
|
181
|
+
return EMPTY_SEARCH unless results
|
182
|
+
results.select! {|spec| spec.version == version }
|
183
|
+
results
|
184
|
+
end
|
185
|
+
|
186
|
+
def specs_by_name(name)
|
187
|
+
@specs[name]&.values || EMPTY_SEARCH
|
204
188
|
end
|
205
189
|
|
206
190
|
EMPTY_SEARCH = [].freeze
|
207
191
|
|
208
192
|
def search_by_spec(spec)
|
209
|
-
spec =
|
193
|
+
spec = find_by_spec(spec)
|
210
194
|
spec ? [spec] : EMPTY_SEARCH
|
211
195
|
end
|
196
|
+
|
197
|
+
def find_by_spec(spec)
|
198
|
+
@specs[spec.name]&.fetch(spec.full_name, nil)
|
199
|
+
end
|
200
|
+
|
201
|
+
def exist?(spec)
|
202
|
+
@specs[spec.name]&.key?(spec.full_name)
|
203
|
+
end
|
212
204
|
end
|
213
205
|
end
|
data/lib/bundler/injector.rb
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
module Bundler
|
4
4
|
class Injector
|
5
|
-
INJECTED_GEMS = "injected gems"
|
5
|
+
INJECTED_GEMS = "injected gems"
|
6
6
|
|
7
7
|
def self.inject(new_deps, options = {})
|
8
8
|
injector = new(new_deps, options)
|
@@ -23,13 +23,10 @@ module Bundler
|
|
23
23
|
# @param [Pathname] lockfile_path The lockfile in which to inject the new dependency.
|
24
24
|
# @return [Array]
|
25
25
|
def inject(gemfile_path, lockfile_path)
|
26
|
-
|
27
|
-
# ensure the lock and Gemfile are synced
|
28
|
-
Bundler.definition.ensure_equivalent_gemfile_and_lockfile(true)
|
29
|
-
end
|
26
|
+
Bundler.definition.ensure_equivalent_gemfile_and_lockfile(true)
|
30
27
|
|
31
28
|
# temporarily unfreeze
|
32
|
-
Bundler.settings.temporary(:
|
29
|
+
Bundler.settings.temporary(deployment: false, frozen: false) do
|
33
30
|
# evaluate the Gemfile we have now
|
34
31
|
builder = Dsl.new
|
35
32
|
builder.eval_gemfile(gemfile_path)
|
@@ -50,7 +47,7 @@ module Bundler
|
|
50
47
|
append_to(gemfile_path, build_gem_lines(@options[:conservative_versioning])) if @deps.any?
|
51
48
|
|
52
49
|
# since we resolved successfully, write out the lockfile
|
53
|
-
@definition.lock
|
50
|
+
@definition.lock
|
54
51
|
|
55
52
|
# invalidate the cached Bundler.definition
|
56
53
|
Bundler.reset_paths!
|
@@ -70,8 +67,12 @@ module Bundler
|
|
70
67
|
|
71
68
|
show_warning("No gems were removed from the gemfile.") if deps.empty?
|
72
69
|
|
73
|
-
deps.each {|dep| Bundler.ui.confirm "#{SharedHelpers.pretty_dependency(dep
|
70
|
+
deps.each {|dep| Bundler.ui.confirm "#{SharedHelpers.pretty_dependency(dep)} was removed." }
|
74
71
|
end
|
72
|
+
|
73
|
+
# Invalidate the cached Bundler.definition.
|
74
|
+
# This prevents e.g. `bundle remove ...` from using outdated information.
|
75
|
+
Bundler.reset_paths!
|
75
76
|
end
|
76
77
|
|
77
78
|
private
|
@@ -82,7 +83,7 @@ module Bundler
|
|
82
83
|
segments = version.segments
|
83
84
|
seg_end_index = version >= Gem::Version.new("1.0") ? 1 : 2
|
84
85
|
|
85
|
-
prerelease_suffix = version.to_s.
|
86
|
+
prerelease_suffix = version.to_s.delete_prefix(version.release.to_s) if version.prerelease?
|
86
87
|
"#{version_prefix}#{segments[0..seg_end_index].join(".")}#{prerelease_suffix}"
|
87
88
|
end
|
88
89
|
|
@@ -111,10 +112,15 @@ module Bundler
|
|
111
112
|
end
|
112
113
|
|
113
114
|
source = ", :source => \"#{d.source}\"" unless d.source.nil?
|
115
|
+
path = ", :path => \"#{d.path}\"" unless d.path.nil?
|
114
116
|
git = ", :git => \"#{d.git}\"" unless d.git.nil?
|
117
|
+
github = ", :github => \"#{d.github}\"" unless d.github.nil?
|
115
118
|
branch = ", :branch => \"#{d.branch}\"" unless d.branch.nil?
|
119
|
+
ref = ", :ref => \"#{d.ref}\"" unless d.ref.nil?
|
120
|
+
glob = ", :glob => \"#{d.glob}\"" unless d.glob.nil?
|
121
|
+
require_path = ", :require => #{convert_autorequire(d.autorequire)}" unless d.autorequire.nil?
|
116
122
|
|
117
|
-
%(gem #{name}#{requirement}#{group}#{source}#{git}#{branch})
|
123
|
+
%(gem #{name}#{requirement}#{group}#{source}#{path}#{git}#{github}#{branch}#{ref}#{glob}#{require_path})
|
118
124
|
end.join("\n")
|
119
125
|
end
|
120
126
|
|
@@ -227,7 +233,7 @@ module Bundler
|
|
227
233
|
|
228
234
|
gemfile.each_with_index do |line, index|
|
229
235
|
next unless !line.nil? && line.strip.start_with?(block_name)
|
230
|
-
if gemfile[index + 1]
|
236
|
+
if /^\s*end\s*$/.match?(gemfile[index + 1])
|
231
237
|
gemfile[index] = nil
|
232
238
|
gemfile[index + 1] = nil
|
233
239
|
end
|
@@ -269,5 +275,11 @@ module Bundler
|
|
269
275
|
def show_warning(message)
|
270
276
|
Bundler.ui.info Bundler.ui.add_color(message, :yellow)
|
271
277
|
end
|
278
|
+
|
279
|
+
def convert_autorequire(autorequire)
|
280
|
+
autorequire = autorequire.first
|
281
|
+
return autorequire if autorequire == "false"
|
282
|
+
autorequire.inspect
|
283
|
+
end
|
272
284
|
end
|
273
285
|
end
|
data/lib/bundler/inline.rb
CHANGED
@@ -31,20 +31,16 @@
|
|
31
31
|
#
|
32
32
|
def gemfile(install = false, options = {}, &gemfile)
|
33
33
|
require_relative "../bundler"
|
34
|
+
Bundler.reset!
|
34
35
|
|
35
36
|
opts = options.dup
|
36
37
|
ui = opts.delete(:ui) { Bundler::UI::Shell.new }
|
37
|
-
ui.level = "silent" if opts.delete(:quiet)
|
38
|
+
ui.level = "silent" if opts.delete(:quiet) || !install
|
39
|
+
Bundler.ui = ui
|
38
40
|
raise ArgumentError, "Unknown options: #{opts.keys.join(", ")}" unless opts.empty?
|
39
41
|
|
40
|
-
|
41
|
-
|
42
|
-
bundler_module = class << Bundler; self; end
|
43
|
-
bundler_module.send(:remove_method, :root)
|
44
|
-
def Bundler.root
|
45
|
-
Bundler::SharedHelpers.pwd.expand_path
|
46
|
-
end
|
47
|
-
old_gemfile = ENV["BUNDLE_GEMFILE"]
|
42
|
+
Bundler.with_unbundled_env do
|
43
|
+
Bundler.instance_variable_set(:@bundle_path, Pathname.new(Gem.dir))
|
48
44
|
Bundler::SharedHelpers.set_env "BUNDLE_GEMFILE", "Gemfile"
|
49
45
|
|
50
46
|
Bundler::Plugin.gemfile_install(&gemfile) if Bundler.feature_flag.plugins?
|
@@ -52,15 +48,14 @@ def gemfile(install = false, options = {}, &gemfile)
|
|
52
48
|
builder.instance_eval(&gemfile)
|
53
49
|
builder.check_primary_source_safety
|
54
50
|
|
55
|
-
Bundler.settings.temporary(:
|
51
|
+
Bundler.settings.temporary(deployment: false, frozen: false) do
|
56
52
|
definition = builder.to_definition(nil, true)
|
57
53
|
def definition.lock(*); end
|
58
54
|
definition.validate_runtime!
|
59
55
|
|
60
|
-
Bundler.ui = install ? ui : Bundler::UI::Silent.new
|
61
56
|
if install || definition.missing_specs?
|
62
|
-
Bundler.settings.temporary(:
|
63
|
-
installer = Bundler::Installer.install(Bundler.root, definition, :
|
57
|
+
Bundler.settings.temporary(inline: true, no_install: false) do
|
58
|
+
installer = Bundler::Installer.install(Bundler.root, definition, system: true)
|
64
59
|
installer.post_install_messages.each do |name, message|
|
65
60
|
Bundler.ui.info "Post-install message from #{name}:\n#{message}"
|
66
61
|
end
|
@@ -70,16 +65,9 @@ def gemfile(install = false, options = {}, &gemfile)
|
|
70
65
|
runtime = Bundler::Runtime.new(nil, definition)
|
71
66
|
runtime.setup.require
|
72
67
|
end
|
73
|
-
|
74
|
-
if bundler_module
|
75
|
-
bundler_module.send(:remove_method, :root)
|
76
|
-
bundler_module.send(:define_method, :root, old_root)
|
77
|
-
end
|
68
|
+
end
|
78
69
|
|
79
|
-
|
80
|
-
|
81
|
-
else
|
82
|
-
ENV["BUNDLE_GEMFILE"] = ""
|
83
|
-
end
|
70
|
+
if ENV["BUNDLE_GEMFILE"].nil?
|
71
|
+
ENV["BUNDLE_GEMFILE"] = ""
|
84
72
|
end
|
85
73
|
end
|