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
@@ -0,0 +1,18 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Bundler
|
4
|
+
module Plugin
|
5
|
+
class Installer
|
6
|
+
class Path < Bundler::Source::Path
|
7
|
+
def root
|
8
|
+
SharedHelpers.in_bundle? ? Bundler.root : Plugin.root
|
9
|
+
end
|
10
|
+
|
11
|
+
def generate_bin(spec, disable_extensions = false)
|
12
|
+
# Need to find a way without code duplication
|
13
|
+
# For now, we can ignore this
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -4,16 +4,8 @@ module Bundler
|
|
4
4
|
module Plugin
|
5
5
|
class Installer
|
6
6
|
class Rubygems < Bundler::Source::Rubygems
|
7
|
-
def version_message(spec)
|
8
|
-
"#{spec.name} #{spec.version}"
|
9
|
-
end
|
10
|
-
|
11
7
|
private
|
12
8
|
|
13
|
-
def requires_sudo?
|
14
|
-
false # Will change on implementation of project level plugins
|
15
|
-
end
|
16
|
-
|
17
9
|
def rubygems_dir
|
18
10
|
Plugin.root
|
19
11
|
end
|
@@ -10,6 +10,7 @@ module Bundler
|
|
10
10
|
class Installer
|
11
11
|
autoload :Rubygems, File.expand_path("installer/rubygems", __dir__)
|
12
12
|
autoload :Git, File.expand_path("installer/git", __dir__)
|
13
|
+
autoload :Path, File.expand_path("installer/path", __dir__)
|
13
14
|
|
14
15
|
def install(names, options)
|
15
16
|
check_sources_consistency!(options)
|
@@ -18,10 +19,10 @@ module Bundler
|
|
18
19
|
|
19
20
|
if options[:git]
|
20
21
|
install_git(names, version, options)
|
21
|
-
elsif options[:
|
22
|
-
|
22
|
+
elsif options[:path]
|
23
|
+
install_path(names, version, options[:path])
|
23
24
|
else
|
24
|
-
sources = options[:source] ||
|
25
|
+
sources = options[:source] || Gem.sources
|
25
26
|
install_rubygems(names, version, sources)
|
26
27
|
end
|
27
28
|
end
|
@@ -45,20 +46,40 @@ module Bundler
|
|
45
46
|
if options.key?(:git) && options.key?(:local_git)
|
46
47
|
raise InvalidOption, "Remote and local plugin git sources can't be both specified"
|
47
48
|
end
|
49
|
+
|
50
|
+
# back-compat; local_git is an alias for git
|
51
|
+
if options.key?(:local_git)
|
52
|
+
Bundler::SharedHelpers.major_deprecation(2, "--local_git is deprecated, use --git")
|
53
|
+
options[:git] = options.delete(:local_git)
|
54
|
+
end
|
55
|
+
|
56
|
+
if (options.keys & [:source, :git, :path]).length > 1
|
57
|
+
raise InvalidOption, "Only one of --source, --git, or --path may be specified"
|
58
|
+
end
|
59
|
+
|
60
|
+
if (options.key?(:branch) || options.key?(:ref)) && !options.key?(:git)
|
61
|
+
raise InvalidOption, "--#{options.key?(:branch) ? "branch" : "ref"} can only be used with git sources"
|
62
|
+
end
|
63
|
+
|
64
|
+
if options.key?(:branch) && options.key?(:ref)
|
65
|
+
raise InvalidOption, "--branch and --ref can't be both specified"
|
66
|
+
end
|
48
67
|
end
|
49
68
|
|
50
69
|
def install_git(names, version, options)
|
51
|
-
|
52
|
-
|
70
|
+
source_list = SourceList.new
|
71
|
+
source = source_list.add_git_source({ "uri" => options[:git],
|
72
|
+
"branch" => options[:branch],
|
73
|
+
"ref" => options[:ref] })
|
53
74
|
|
54
|
-
install_all_sources(names, version,
|
75
|
+
install_all_sources(names, version, source_list, source)
|
55
76
|
end
|
56
77
|
|
57
|
-
def
|
58
|
-
|
59
|
-
|
78
|
+
def install_path(names, version, path)
|
79
|
+
source_list = SourceList.new
|
80
|
+
source = source_list.add_path_source({ "path" => path, "root_path" => SharedHelpers.pwd })
|
60
81
|
|
61
|
-
install_all_sources(names, version,
|
82
|
+
install_all_sources(names, version, source_list, source)
|
62
83
|
end
|
63
84
|
|
64
85
|
# Installs the plugin from rubygems source and returns the path where the
|
@@ -70,21 +91,23 @@ module Bundler
|
|
70
91
|
#
|
71
92
|
# @return [Hash] map of names to the specs of plugins installed
|
72
93
|
def install_rubygems(names, version, sources)
|
73
|
-
install_all_sources(names, version, nil, sources)
|
74
|
-
end
|
75
|
-
|
76
|
-
def install_all_sources(names, version, git_source_options, rubygems_source)
|
77
94
|
source_list = SourceList.new
|
78
95
|
|
79
|
-
source_list.
|
80
|
-
Array(rubygems_source).each {|remote| source_list.add_global_rubygems_remote(remote) } if rubygems_source
|
96
|
+
Array(sources).each {|remote| source_list.add_global_rubygems_remote(remote) }
|
81
97
|
|
82
|
-
|
98
|
+
install_all_sources(names, version, source_list)
|
99
|
+
end
|
100
|
+
|
101
|
+
def install_all_sources(names, version, source_list, source = nil)
|
102
|
+
deps = names.map {|name| Dependency.new(name, version, { "source" => source }) }
|
83
103
|
|
84
104
|
Bundler.configure_gem_home_and_path(Plugin.root)
|
85
105
|
|
86
|
-
|
87
|
-
|
106
|
+
Bundler.settings.temporary(deployment: false, frozen: false) do
|
107
|
+
definition = Definition.new(nil, deps, source_list, true)
|
108
|
+
|
109
|
+
install_definition(definition)
|
110
|
+
end
|
88
111
|
end
|
89
112
|
|
90
113
|
# Installs the plugins and deps from the provided specs and returns map of
|
@@ -9,6 +9,10 @@ module Bundler
|
|
9
9
|
add_source_to_list Plugin::Installer::Git.new(options), git_sources
|
10
10
|
end
|
11
11
|
|
12
|
+
def add_path_source(options = {})
|
13
|
+
add_source_to_list Plugin::Installer::Path.new(options), path_sources
|
14
|
+
end
|
15
|
+
|
12
16
|
def add_rubygems_source(options = {})
|
13
17
|
add_source_to_list Plugin::Installer::Rubygems.new(options), @rubygems_sources
|
14
18
|
end
|
@@ -17,10 +21,6 @@ module Bundler
|
|
17
21
|
path_sources + git_sources + rubygems_sources + [metadata_source]
|
18
22
|
end
|
19
23
|
|
20
|
-
def default_source
|
21
|
-
git_sources.first || global_rubygems_source
|
22
|
-
end
|
23
|
-
|
24
24
|
private
|
25
25
|
|
26
26
|
def rubygems_aggregate_class
|
data/lib/bundler/plugin.rb
CHANGED
@@ -15,7 +15,7 @@ module Bundler
|
|
15
15
|
class UnknownSourceError < PluginError; end
|
16
16
|
class PluginInstallError < PluginError; end
|
17
17
|
|
18
|
-
PLUGIN_FILE_NAME = "plugins.rb"
|
18
|
+
PLUGIN_FILE_NAME = "plugins.rb"
|
19
19
|
|
20
20
|
module_function
|
21
21
|
|
@@ -36,6 +36,8 @@ module Bundler
|
|
36
36
|
# @param [Hash] options various parameters as described in description.
|
37
37
|
# Refer to cli/plugin for available options
|
38
38
|
def install(names, options)
|
39
|
+
raise InvalidOption, "You cannot specify `--branch` and `--ref` at the same time." if options["branch"] && options["ref"]
|
40
|
+
|
39
41
|
specs = Installer.new.install(names, options)
|
40
42
|
|
41
43
|
save_plugins names, specs
|
@@ -60,7 +62,8 @@ module Bundler
|
|
60
62
|
if names.any?
|
61
63
|
names.each do |name|
|
62
64
|
if index.installed?(name)
|
63
|
-
|
65
|
+
path = index.plugin_path(name).to_s
|
66
|
+
Bundler.rm_rf(path) if index.installed_in_plugin_root?(name)
|
64
67
|
index.unregister_plugin(name)
|
65
68
|
Bundler.ui.info "Uninstalled plugin #{name}"
|
66
69
|
else
|
@@ -98,7 +101,7 @@ module Bundler
|
|
98
101
|
# @param [Pathname] gemfile path
|
99
102
|
# @param [Proc] block that can be evaluated for (inline) Gemfile
|
100
103
|
def gemfile_install(gemfile = nil, &inline)
|
101
|
-
Bundler.settings.temporary(:
|
104
|
+
Bundler.settings.temporary(frozen: false, deployment: false) do
|
102
105
|
builder = DSL.new
|
103
106
|
if block_given?
|
104
107
|
builder.instance_eval(&inline)
|
@@ -195,7 +198,7 @@ module Bundler
|
|
195
198
|
# @param [Hash] The options that are present in the lock file
|
196
199
|
# @return [API::Source] the instance of the class that handles the source
|
197
200
|
# type passed in locked_opts
|
198
|
-
def
|
201
|
+
def from_lock(locked_opts)
|
199
202
|
src = source(locked_opts["type"])
|
200
203
|
|
201
204
|
src.new(locked_opts.merge("uri" => locked_opts["remote"]))
|
@@ -225,7 +228,7 @@ module Bundler
|
|
225
228
|
plugins = index.hook_plugins(event)
|
226
229
|
return unless plugins.any?
|
227
230
|
|
228
|
-
|
231
|
+
plugins.each {|name| load_plugin(name) }
|
229
232
|
|
230
233
|
@hooks_by_event[event].each {|blk| blk.call(*args, &arg_blk) }
|
231
234
|
end
|
@@ -237,6 +240,11 @@ module Bundler
|
|
237
240
|
Index.new.installed?(plugin)
|
238
241
|
end
|
239
242
|
|
243
|
+
# @return [true, false] whether the plugin is loaded
|
244
|
+
def loaded?(plugin)
|
245
|
+
@loaded_plugin_names.include?(plugin)
|
246
|
+
end
|
247
|
+
|
240
248
|
# Post installation processing and registering with index
|
241
249
|
#
|
242
250
|
# @param [Array<String>] plugins list to be installed
|
@@ -299,7 +307,7 @@ module Bundler
|
|
299
307
|
@hooks_by_event = Hash.new {|h, k| h[k] = [] }
|
300
308
|
|
301
309
|
load_paths = spec.load_paths
|
302
|
-
|
310
|
+
Gem.add_to_load_path(*load_paths)
|
303
311
|
path = Pathname.new spec.full_gem_path
|
304
312
|
|
305
313
|
begin
|
@@ -327,13 +335,14 @@ module Bundler
|
|
327
335
|
# @param [String] name of the plugin
|
328
336
|
def load_plugin(name)
|
329
337
|
return unless name && !name.empty?
|
338
|
+
return if loaded?(name)
|
330
339
|
|
331
340
|
# Need to ensure before this that plugin root where the rest of gems
|
332
341
|
# are installed to be on load path to support plugin deps. Currently not
|
333
342
|
# done to avoid conflicts
|
334
343
|
path = index.plugin_path(name)
|
335
344
|
|
336
|
-
|
345
|
+
Gem.add_to_load_path(*index.load_paths(name))
|
337
346
|
|
338
347
|
load path.join(PLUGIN_FILE_NAME)
|
339
348
|
|
data/lib/bundler/process_lock.rb
CHANGED
@@ -12,7 +12,7 @@ module Bundler
|
|
12
12
|
yield
|
13
13
|
f.flock(File::LOCK_UN)
|
14
14
|
end
|
15
|
-
rescue Errno::EACCES, Errno::ENOLCK,
|
15
|
+
rescue Errno::EACCES, Errno::ENOLCK, Errno::ENOTSUP, Errno::EPERM, Errno::EROFS
|
16
16
|
# In the case the user does not have access to
|
17
17
|
# create the lock file or is using NFS where
|
18
18
|
# locks are not available we skip locking.
|
@@ -6,6 +6,7 @@ module Bundler
|
|
6
6
|
# be seeded with what we're given from the source's abbreviated index - the
|
7
7
|
# full specification will only be fetched when necessary.
|
8
8
|
class RemoteSpecification
|
9
|
+
include MatchRemoteMetadata
|
9
10
|
include MatchPlatform
|
10
11
|
include Comparable
|
11
12
|
|
@@ -16,7 +17,8 @@ module Bundler
|
|
16
17
|
def initialize(name, version, platform, spec_fetcher)
|
17
18
|
@name = name
|
18
19
|
@version = Gem::Version.create version
|
19
|
-
@
|
20
|
+
@original_platform = platform || Gem::Platform::RUBY
|
21
|
+
@platform = Gem::Platform.new(platform)
|
20
22
|
@spec_fetcher = spec_fetcher
|
21
23
|
@dependencies = nil
|
22
24
|
end
|
@@ -28,10 +30,10 @@ module Bundler
|
|
28
30
|
end
|
29
31
|
|
30
32
|
def full_name
|
31
|
-
if platform == Gem::Platform::RUBY
|
33
|
+
@full_name ||= if @platform == Gem::Platform::RUBY
|
32
34
|
"#{@name}-#{@version}"
|
33
35
|
else
|
34
|
-
"#{@name}-#{@version}-#{platform}"
|
36
|
+
"#{@name}-#{@version}-#{@platform}"
|
35
37
|
end
|
36
38
|
end
|
37
39
|
|
@@ -86,6 +88,10 @@ module Bundler
|
|
86
88
|
end
|
87
89
|
end
|
88
90
|
|
91
|
+
def runtime_dependencies
|
92
|
+
dependencies.select(&:runtime?)
|
93
|
+
end
|
94
|
+
|
89
95
|
def git_version
|
90
96
|
return unless loaded_from && source.is_a?(Bundler::Source::Git)
|
91
97
|
" #{source.revision[0..6]}"
|
@@ -98,9 +104,9 @@ module Bundler
|
|
98
104
|
end
|
99
105
|
|
100
106
|
def _remote_specification
|
101
|
-
@_remote_specification ||= @spec_fetcher.fetch_spec([@name, @version, @
|
107
|
+
@_remote_specification ||= @spec_fetcher.fetch_spec([@name, @version, @original_platform])
|
102
108
|
@_remote_specification || raise(GemspecError, "Gemspec data for #{full_name} was" \
|
103
|
-
" missing from the server!
|
109
|
+
" missing from the server!")
|
104
110
|
end
|
105
111
|
|
106
112
|
def method_missing(method, *args, &blk)
|
@@ -0,0 +1,111 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative "package"
|
4
|
+
|
5
|
+
module Bundler
|
6
|
+
class Resolver
|
7
|
+
class Base
|
8
|
+
attr_reader :packages, :requirements, :source_requirements
|
9
|
+
|
10
|
+
def initialize(source_requirements, dependencies, base, platforms, options)
|
11
|
+
@source_requirements = source_requirements
|
12
|
+
|
13
|
+
@base = base
|
14
|
+
|
15
|
+
@packages = Hash.new do |hash, name|
|
16
|
+
hash[name] = Package.new(name, platforms, **options)
|
17
|
+
end
|
18
|
+
|
19
|
+
@requirements = dependencies.map do |dep|
|
20
|
+
dep_platforms = dep.gem_platforms(platforms)
|
21
|
+
|
22
|
+
# Dependencies scoped to external platforms are ignored
|
23
|
+
next if dep_platforms.empty?
|
24
|
+
|
25
|
+
name = dep.name
|
26
|
+
|
27
|
+
@packages[name] = Package.new(name, dep_platforms, **options.merge(dependency: dep))
|
28
|
+
|
29
|
+
dep
|
30
|
+
end.compact
|
31
|
+
end
|
32
|
+
|
33
|
+
def specs_compatible_with(result)
|
34
|
+
@base.specs_compatible_with(result)
|
35
|
+
end
|
36
|
+
|
37
|
+
def [](name)
|
38
|
+
@base[name]
|
39
|
+
end
|
40
|
+
|
41
|
+
def delete(specs)
|
42
|
+
@base.delete(specs)
|
43
|
+
end
|
44
|
+
|
45
|
+
def get_package(name)
|
46
|
+
@packages[name]
|
47
|
+
end
|
48
|
+
|
49
|
+
def base_requirements
|
50
|
+
@base_requirements ||= build_base_requirements
|
51
|
+
end
|
52
|
+
|
53
|
+
def unlock_names(names)
|
54
|
+
indirect_pins = indirect_pins(names)
|
55
|
+
|
56
|
+
if indirect_pins.any?
|
57
|
+
loosen_names(indirect_pins)
|
58
|
+
else
|
59
|
+
pins = pins(names)
|
60
|
+
|
61
|
+
if pins.any?
|
62
|
+
loosen_names(pins)
|
63
|
+
else
|
64
|
+
unrestrict_names(names)
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
def include_prereleases(names)
|
70
|
+
names.each do |name|
|
71
|
+
get_package(name).consider_prereleases!
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
private
|
76
|
+
|
77
|
+
def indirect_pins(names)
|
78
|
+
names.select {|name| @base_requirements[name].exact? && @requirements.none? {|dep| dep.name == name } }
|
79
|
+
end
|
80
|
+
|
81
|
+
def pins(names)
|
82
|
+
names.select {|name| @base_requirements[name].exact? }
|
83
|
+
end
|
84
|
+
|
85
|
+
def loosen_names(names)
|
86
|
+
names.each do |name|
|
87
|
+
version = @base_requirements[name].requirements.first[1]
|
88
|
+
|
89
|
+
@base_requirements[name] = Gem::Requirement.new(">= #{version}")
|
90
|
+
|
91
|
+
@base.delete_by_name(name)
|
92
|
+
end
|
93
|
+
end
|
94
|
+
|
95
|
+
def unrestrict_names(names)
|
96
|
+
names.each do |name|
|
97
|
+
@base_requirements.delete(name)
|
98
|
+
end
|
99
|
+
end
|
100
|
+
|
101
|
+
def build_base_requirements
|
102
|
+
base_requirements = {}
|
103
|
+
@base.each do |ls|
|
104
|
+
req = Gem::Requirement.new(ls.version)
|
105
|
+
base_requirements[ls.name] = req
|
106
|
+
end
|
107
|
+
base_requirements
|
108
|
+
end
|
109
|
+
end
|
110
|
+
end
|
111
|
+
end
|
@@ -0,0 +1,82 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative "spec_group"
|
4
|
+
|
5
|
+
module Bundler
|
6
|
+
class Resolver
|
7
|
+
#
|
8
|
+
# This class is a PubGrub compatible "Version" class that takes Bundler
|
9
|
+
# resolution complexities into account.
|
10
|
+
#
|
11
|
+
# Each Resolver::Candidate has a underlying `Gem::Version` plus a set of
|
12
|
+
# platforms. For example, 1.1.0-x86_64-linux is a different resolution candidate
|
13
|
+
# from 1.1.0 (generic). This is because different platform variants of the
|
14
|
+
# same gem version can bring different dependencies, so they need to be
|
15
|
+
# considered separately.
|
16
|
+
#
|
17
|
+
# Some candidates may also keep some information explicitly about the
|
18
|
+
# package they refer to. These candidates are referred to as "canonical" and
|
19
|
+
# are used when materializing resolution results back into RubyGems
|
20
|
+
# specifications that can be installed, written to lock files, and so on.
|
21
|
+
#
|
22
|
+
class Candidate
|
23
|
+
include Comparable
|
24
|
+
|
25
|
+
attr_reader :version
|
26
|
+
|
27
|
+
def initialize(version, group: nil, priority: -1)
|
28
|
+
@spec_group = group || SpecGroup.new([])
|
29
|
+
@version = Gem::Version.new(version)
|
30
|
+
@priority = priority
|
31
|
+
end
|
32
|
+
|
33
|
+
def dependencies
|
34
|
+
@spec_group.dependencies
|
35
|
+
end
|
36
|
+
|
37
|
+
def to_specs(package)
|
38
|
+
return [] if package.meta?
|
39
|
+
|
40
|
+
@spec_group.to_specs(package.force_ruby_platform?)
|
41
|
+
end
|
42
|
+
|
43
|
+
def prerelease?
|
44
|
+
@version.prerelease?
|
45
|
+
end
|
46
|
+
|
47
|
+
def segments
|
48
|
+
@version.segments
|
49
|
+
end
|
50
|
+
|
51
|
+
def sort_obj
|
52
|
+
[@version, @priority]
|
53
|
+
end
|
54
|
+
|
55
|
+
def <=>(other)
|
56
|
+
return unless other.is_a?(self.class)
|
57
|
+
|
58
|
+
sort_obj <=> other.sort_obj
|
59
|
+
end
|
60
|
+
|
61
|
+
def ==(other)
|
62
|
+
return unless other.is_a?(self.class)
|
63
|
+
|
64
|
+
sort_obj == other.sort_obj
|
65
|
+
end
|
66
|
+
|
67
|
+
def eql?(other)
|
68
|
+
return unless other.is_a?(self.class)
|
69
|
+
|
70
|
+
sort_obj.eql?(other.sort_obj)
|
71
|
+
end
|
72
|
+
|
73
|
+
def hash
|
74
|
+
sort_obj.hash
|
75
|
+
end
|
76
|
+
|
77
|
+
def to_s
|
78
|
+
@version.to_s
|
79
|
+
end
|
80
|
+
end
|
81
|
+
end
|
82
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Bundler
|
4
|
+
class Resolver
|
5
|
+
class Incompatibility < PubGrub::Incompatibility
|
6
|
+
attr_reader :extended_explanation
|
7
|
+
|
8
|
+
def initialize(terms, cause:, custom_explanation: nil, extended_explanation: nil)
|
9
|
+
@extended_explanation = extended_explanation
|
10
|
+
|
11
|
+
super(terms, cause: cause, custom_explanation: custom_explanation)
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,81 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Bundler
|
4
|
+
class Resolver
|
5
|
+
#
|
6
|
+
# Represents a gem being resolved, in a format PubGrub likes.
|
7
|
+
#
|
8
|
+
# The class holds the following information:
|
9
|
+
#
|
10
|
+
# * Platforms this gem will be resolved on.
|
11
|
+
# * The locked version of this gem resolution should favor (if any).
|
12
|
+
# * Whether the gem should be unlocked to its latest version.
|
13
|
+
# * The dependency explicit set in the Gemfile for this gem (if any).
|
14
|
+
#
|
15
|
+
class Package
|
16
|
+
attr_reader :name, :platforms, :dependency, :locked_version
|
17
|
+
|
18
|
+
def initialize(name, platforms, locked_specs:, unlock:, prerelease: false, dependency: nil)
|
19
|
+
@name = name
|
20
|
+
@platforms = platforms
|
21
|
+
@locked_version = locked_specs[name].first&.version
|
22
|
+
@unlock = unlock
|
23
|
+
@dependency = dependency || Dependency.new(name, @locked_version)
|
24
|
+
@top_level = !dependency.nil?
|
25
|
+
@prerelease = @dependency.prerelease? || @locked_version&.prerelease? || prerelease ? :consider_first : :ignore
|
26
|
+
end
|
27
|
+
|
28
|
+
def platform_specs(specs)
|
29
|
+
platforms.map {|platform| GemHelpers.select_best_platform_match(specs, platform, prefer_locked: !unlock?) }
|
30
|
+
end
|
31
|
+
|
32
|
+
def to_s
|
33
|
+
@name.delete("\0")
|
34
|
+
end
|
35
|
+
|
36
|
+
def root?
|
37
|
+
false
|
38
|
+
end
|
39
|
+
|
40
|
+
def top_level?
|
41
|
+
@top_level
|
42
|
+
end
|
43
|
+
|
44
|
+
def meta?
|
45
|
+
@name.end_with?("\0")
|
46
|
+
end
|
47
|
+
|
48
|
+
def ==(other)
|
49
|
+
self.class == other.class && @name == other.name
|
50
|
+
end
|
51
|
+
|
52
|
+
def hash
|
53
|
+
@name.hash
|
54
|
+
end
|
55
|
+
|
56
|
+
def unlock?
|
57
|
+
@unlock.empty? || @unlock.include?(name)
|
58
|
+
end
|
59
|
+
|
60
|
+
def ignores_prereleases?
|
61
|
+
@prerelease == :ignore
|
62
|
+
end
|
63
|
+
|
64
|
+
def prerelease_specified?
|
65
|
+
@prerelease == :consider_first
|
66
|
+
end
|
67
|
+
|
68
|
+
def consider_prereleases!
|
69
|
+
@prerelease = :consider_last
|
70
|
+
end
|
71
|
+
|
72
|
+
def force_ruby_platform?
|
73
|
+
@dependency.force_ruby_platform
|
74
|
+
end
|
75
|
+
|
76
|
+
def current_platform?
|
77
|
+
@dependency.current_platform?
|
78
|
+
end
|
79
|
+
end
|
80
|
+
end
|
81
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative "package"
|
4
|
+
|
5
|
+
module Bundler
|
6
|
+
class Resolver
|
7
|
+
#
|
8
|
+
# Represents the Gemfile from the resolver's perspective. It's the root
|
9
|
+
# package and Gemfile entries depend on it.
|
10
|
+
#
|
11
|
+
class Root < Package
|
12
|
+
def initialize(name)
|
13
|
+
@name = name
|
14
|
+
end
|
15
|
+
|
16
|
+
def meta?
|
17
|
+
true
|
18
|
+
end
|
19
|
+
|
20
|
+
def root?
|
21
|
+
true
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|