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/lib/bundler/source/git.rb
CHANGED
@@ -11,6 +11,7 @@ module Bundler
|
|
11
11
|
|
12
12
|
def initialize(options)
|
13
13
|
@options = options
|
14
|
+
@checksum_store = Checksum::Store.new
|
14
15
|
@glob = options["glob"] || DEFAULT_GLOB
|
15
16
|
|
16
17
|
@allow_cached = false
|
@@ -19,7 +20,7 @@ module Bundler
|
|
19
20
|
# Stringify options that could be set as symbols
|
20
21
|
%w[ref branch tag revision].each {|k| options[k] = options[k].to_s if options[k] }
|
21
22
|
|
22
|
-
@uri = options["uri"] || ""
|
23
|
+
@uri = URINormalizer.normalize_suffix(options["uri"] || "", trailing_slash: false)
|
23
24
|
@safe_uri = URICredentialsFilter.credential_filtered_uri(@uri)
|
24
25
|
@branch = options["branch"]
|
25
26
|
@ref = options["ref"] || options["branch"] || options["tag"]
|
@@ -31,6 +32,20 @@ module Bundler
|
|
31
32
|
@local = false
|
32
33
|
end
|
33
34
|
|
35
|
+
def remote!
|
36
|
+
return if @allow_remote
|
37
|
+
|
38
|
+
@local_specs = nil
|
39
|
+
@allow_remote = true
|
40
|
+
end
|
41
|
+
|
42
|
+
def cached!
|
43
|
+
return if @allow_cached
|
44
|
+
|
45
|
+
@local_specs = nil
|
46
|
+
@allow_cached = true
|
47
|
+
end
|
48
|
+
|
34
49
|
def self.from_lock(options)
|
35
50
|
new(options.merge("uri" => options.delete("remote")))
|
36
51
|
end
|
@@ -46,6 +61,14 @@ module Bundler
|
|
46
61
|
out << " specs:\n"
|
47
62
|
end
|
48
63
|
|
64
|
+
def to_gemfile
|
65
|
+
specifiers = %w[ref branch tag submodules glob].map do |opt|
|
66
|
+
"#{opt}: #{options[opt]}" if options[opt]
|
67
|
+
end
|
68
|
+
|
69
|
+
uri_with_specifiers(specifiers)
|
70
|
+
end
|
71
|
+
|
49
72
|
def hash
|
50
73
|
[self.class, uri, ref, branch, name, version, glob, submodules].hash
|
51
74
|
end
|
@@ -59,28 +82,32 @@ module Bundler
|
|
59
82
|
|
60
83
|
alias_method :==, :eql?
|
61
84
|
|
85
|
+
def include?(other)
|
86
|
+
other.is_a?(Git) && uri == other.uri &&
|
87
|
+
name == other.name &&
|
88
|
+
glob == other.glob &&
|
89
|
+
submodules == other.submodules
|
90
|
+
end
|
91
|
+
|
62
92
|
def to_s
|
63
93
|
begin
|
64
|
-
at =
|
65
|
-
path
|
66
|
-
elsif user_ref = options["ref"]
|
67
|
-
if ref =~ /\A[a-z0-9]{4,}\z/i
|
68
|
-
shortref_for_display(user_ref)
|
69
|
-
else
|
70
|
-
user_ref
|
71
|
-
end
|
72
|
-
elsif ref
|
73
|
-
ref
|
74
|
-
else
|
75
|
-
git_proxy.branch
|
76
|
-
end
|
94
|
+
at = humanized_ref || current_branch
|
77
95
|
|
78
96
|
rev = "at #{at}@#{shortref_for_display(revision)}"
|
79
97
|
rescue GitError
|
80
98
|
""
|
81
99
|
end
|
82
100
|
|
83
|
-
|
101
|
+
uri_with_specifiers([rev, glob_for_display])
|
102
|
+
end
|
103
|
+
|
104
|
+
def identifier
|
105
|
+
uri_with_specifiers([humanized_ref, cached_revision, glob_for_display])
|
106
|
+
end
|
107
|
+
|
108
|
+
def uri_with_specifiers(specifiers)
|
109
|
+
specifiers.compact!
|
110
|
+
|
84
111
|
suffix =
|
85
112
|
if specifiers.any?
|
86
113
|
" (#{specifiers.join(", ")})"
|
@@ -102,13 +129,7 @@ module Bundler
|
|
102
129
|
@install_path ||= begin
|
103
130
|
git_scope = "#{base_name}-#{shortref_for_path(revision)}"
|
104
131
|
|
105
|
-
|
106
|
-
|
107
|
-
if !path.exist? && Bundler.requires_sudo?
|
108
|
-
Bundler.user_bundle_path.join(Bundler.ruby_scope).join(git_scope)
|
109
|
-
else
|
110
|
-
path
|
111
|
-
end
|
132
|
+
Bundler.install_path.join(git_scope)
|
112
133
|
end
|
113
134
|
end
|
114
135
|
|
@@ -132,7 +153,7 @@ module Bundler
|
|
132
153
|
path = Pathname.new(path)
|
133
154
|
path = path.expand_path(Bundler.root) unless path.relative?
|
134
155
|
|
135
|
-
unless
|
156
|
+
unless branch || Bundler.settings[:disable_local_branch_check]
|
136
157
|
raise GitError, "Cannot use local override for #{name} at #{path} because " \
|
137
158
|
":branch is not specified in Gemfile. Specify a branch or run " \
|
138
159
|
"`bundle config unset local.#{override_for(original_path)}` to remove the local override"
|
@@ -147,14 +168,14 @@ module Bundler
|
|
147
168
|
|
148
169
|
# Create a new git proxy without the cached revision
|
149
170
|
# so the Gemfile.lock always picks up the new revision.
|
150
|
-
@git_proxy = GitProxy.new(path, uri,
|
171
|
+
@git_proxy = GitProxy.new(path, uri, options)
|
151
172
|
|
152
|
-
if
|
173
|
+
if current_branch != branch && !Bundler.settings[:disable_local_branch_check]
|
153
174
|
raise GitError, "Local override for #{name} at #{path} is using branch " \
|
154
|
-
"#{
|
175
|
+
"#{current_branch} but Gemfile specifies #{branch}"
|
155
176
|
end
|
156
177
|
|
157
|
-
changed = cached_revision && cached_revision !=
|
178
|
+
changed = cached_revision && cached_revision != revision
|
158
179
|
|
159
180
|
if !Bundler.settings[:disable_local_revision_check] && changed && !@unlocked && !git_proxy.contains?(cached_revision)
|
160
181
|
raise GitError, "The Gemfile lock is pointing to revision #{shortref_for_display(cached_revision)} " \
|
@@ -179,9 +200,10 @@ module Bundler
|
|
179
200
|
end
|
180
201
|
|
181
202
|
def install(spec, options = {})
|
203
|
+
return if Bundler.settings[:no_install]
|
182
204
|
force = options[:force]
|
183
205
|
|
184
|
-
print_using_message "Using #{version_message(spec)} from #{self}"
|
206
|
+
print_using_message "Using #{version_message(spec, options[:previous_spec])} from #{self}"
|
185
207
|
|
186
208
|
if (requires_checkout? && !@copied) || force
|
187
209
|
Bundler.ui.debug " * Checking out revision: #{ref}"
|
@@ -190,7 +212,7 @@ module Bundler
|
|
190
212
|
@copied = true
|
191
213
|
end
|
192
214
|
|
193
|
-
generate_bin_options = { :
|
215
|
+
generate_bin_options = { disable_extensions: !Bundler.rubygems.spec_missing_extensions?(spec), build_args: options[:build_args] }
|
194
216
|
generate_bin(spec, generate_bin_options)
|
195
217
|
|
196
218
|
requires_checkout? ? spec.post_install_message : nil
|
@@ -219,13 +241,11 @@ module Bundler
|
|
219
241
|
# across different projects, this cache will be shared.
|
220
242
|
# When using local git repos, this is set to the local repo.
|
221
243
|
def cache_path
|
222
|
-
@cache_path ||=
|
223
|
-
|
224
|
-
|
225
|
-
|
226
|
-
|
227
|
-
end.join("git", git_scope)
|
228
|
-
end
|
244
|
+
@cache_path ||= if Bundler.feature_flag.global_gem_cache?
|
245
|
+
Bundler.user_cache
|
246
|
+
else
|
247
|
+
Bundler.bundle_path.join("cache", "bundler")
|
248
|
+
end.join("git", git_scope)
|
229
249
|
end
|
230
250
|
|
231
251
|
def app_cache_dirname
|
@@ -236,6 +256,10 @@ module Bundler
|
|
236
256
|
git_proxy.revision
|
237
257
|
end
|
238
258
|
|
259
|
+
def current_branch
|
260
|
+
git_proxy.current_branch
|
261
|
+
end
|
262
|
+
|
239
263
|
def allow_git_ops?
|
240
264
|
@allow_remote || @allow_cached
|
241
265
|
end
|
@@ -246,6 +270,20 @@ module Bundler
|
|
246
270
|
|
247
271
|
private
|
248
272
|
|
273
|
+
def humanized_ref
|
274
|
+
if local?
|
275
|
+
path
|
276
|
+
elsif user_ref = options["ref"]
|
277
|
+
if /\A[a-z0-9]{4,}\z/i.match?(ref)
|
278
|
+
shortref_for_display(user_ref)
|
279
|
+
else
|
280
|
+
user_ref
|
281
|
+
end
|
282
|
+
elsif ref
|
283
|
+
ref
|
284
|
+
end
|
285
|
+
end
|
286
|
+
|
249
287
|
def serialize_gemspecs_in(destination)
|
250
288
|
destination = destination.expand_path(Bundler.root) if destination.relative?
|
251
289
|
Dir["#{destination}/#{@glob}"].each do |spec_path|
|
@@ -299,15 +337,17 @@ module Bundler
|
|
299
337
|
end
|
300
338
|
|
301
339
|
def uri_hash
|
302
|
-
if
|
340
|
+
if %r{^\w+://(\w+@)?}.match?(uri)
|
303
341
|
# Downcase the domain component of the URI
|
304
342
|
# and strip off a trailing slash, if one is present
|
305
|
-
input =
|
343
|
+
input = Gem::URI.parse(uri).normalize.to_s.sub(%r{/$}, "")
|
306
344
|
else
|
307
345
|
# If there is no URI scheme, assume it is an ssh/git URI
|
308
346
|
input = uri
|
309
347
|
end
|
310
|
-
|
348
|
+
# We use SHA1 here for historical reason and to preserve backward compatibility.
|
349
|
+
# But a transition to a simpler mangling algorithm would be welcome.
|
350
|
+
Bundler::Digest.sha1(input)
|
311
351
|
end
|
312
352
|
|
313
353
|
def cached_revision
|
@@ -319,7 +359,7 @@ module Bundler
|
|
319
359
|
end
|
320
360
|
|
321
361
|
def git_proxy
|
322
|
-
@git_proxy ||= GitProxy.new(cache_path, uri,
|
362
|
+
@git_proxy ||= GitProxy.new(cache_path, uri, options, cached_revision, self)
|
323
363
|
end
|
324
364
|
|
325
365
|
def fetch
|
@@ -334,7 +374,7 @@ module Bundler
|
|
334
374
|
|
335
375
|
def load_gemspec(file)
|
336
376
|
stub = Gem::StubSpecification.gemspec_stub(file, install_path.parent, install_path.parent)
|
337
|
-
stub.full_gem_path = Pathname.new(file).dirname.expand_path(root).to_s
|
377
|
+
stub.full_gem_path = Pathname.new(file).dirname.expand_path(root).to_s
|
338
378
|
StubSpecification.from_stub(stub)
|
339
379
|
end
|
340
380
|
|
@@ -5,28 +5,29 @@ module Bundler
|
|
5
5
|
class Metadata < Source
|
6
6
|
def specs
|
7
7
|
@specs ||= Index.build do |idx|
|
8
|
-
idx << Gem::Specification.new("Ruby\0", RubyVersion.system.
|
8
|
+
idx << Gem::Specification.new("Ruby\0", Bundler::RubyVersion.system.gem_version)
|
9
9
|
idx << Gem::Specification.new("RubyGems\0", Gem::VERSION) do |s|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.default
|
11
11
|
end
|
12
12
|
|
13
|
-
|
14
|
-
|
15
|
-
s.version = VERSION
|
16
|
-
s.license = "MIT"
|
17
|
-
s.platform = Gem::Platform::RUBY
|
18
|
-
s.source = self
|
19
|
-
s.authors = ["bundler team"]
|
20
|
-
s.bindir = "exe"
|
21
|
-
s.homepage = "https://bundler.io"
|
22
|
-
s.summary = "The best way to manage your application's dependencies"
|
23
|
-
s.executables = %w[bundle]
|
24
|
-
# can't point to the actual gemspec or else the require paths will be wrong
|
25
|
-
s.loaded_from = File.expand_path("..", __FILE__)
|
26
|
-
end
|
13
|
+
if local_spec = Gem.loaded_specs["bundler"]
|
14
|
+
raise CorruptBundlerInstallError.new(local_spec) if local_spec.version.to_s != Bundler::VERSION
|
27
15
|
|
28
|
-
if local_spec = Bundler.rubygems.find_name("bundler").find {|s| s.version.to_s == VERSION }
|
29
16
|
idx << local_spec
|
17
|
+
else
|
18
|
+
idx << Gem::Specification.new do |s|
|
19
|
+
s.name = "bundler"
|
20
|
+
s.version = VERSION
|
21
|
+
s.license = "MIT"
|
22
|
+
s.platform = Gem::Platform::RUBY
|
23
|
+
s.authors = ["bundler team"]
|
24
|
+
s.bindir = "exe"
|
25
|
+
s.homepage = "https://bundler.io"
|
26
|
+
s.summary = "The best way to manage your application's dependencies"
|
27
|
+
s.executables = %w[bundle]
|
28
|
+
# can't point to the actual gemspec or else the require paths will be wrong
|
29
|
+
s.loaded_from = __dir__
|
30
|
+
end
|
30
31
|
end
|
31
32
|
|
32
33
|
idx.each {|s| s.source = self }
|
@@ -18,13 +18,7 @@ module Bundler
|
|
18
18
|
@build_args = options[:build_args] || Bundler.rubygems.build_args
|
19
19
|
@gem_bin_dir = "#{Bundler.rubygems.gem_dir}/bin"
|
20
20
|
@disable_extensions = options[:disable_extensions]
|
21
|
-
|
22
|
-
if Bundler.requires_sudo?
|
23
|
-
@tmp_dir = Bundler.tmp(spec.full_name).to_s
|
24
|
-
@bin_dir = "#{@tmp_dir}/bin"
|
25
|
-
else
|
26
|
-
@bin_dir = @gem_bin_dir
|
27
|
-
end
|
21
|
+
@bin_dir = @gem_bin_dir
|
28
22
|
end
|
29
23
|
|
30
24
|
def post_install
|
@@ -38,25 +32,10 @@ module Bundler
|
|
38
32
|
generate_bin unless spec.executables.empty?
|
39
33
|
|
40
34
|
run_hooks(:post_install)
|
41
|
-
ensure
|
42
|
-
Bundler.rm_rf(@tmp_dir) if Bundler.requires_sudo?
|
43
35
|
end
|
44
36
|
|
45
37
|
private
|
46
38
|
|
47
|
-
def generate_bin
|
48
|
-
super
|
49
|
-
|
50
|
-
if Bundler.requires_sudo?
|
51
|
-
SharedHelpers.filesystem_access(@gem_bin_dir) do |p|
|
52
|
-
Bundler.mkdir_p(p)
|
53
|
-
end
|
54
|
-
spec.executables.each do |exe|
|
55
|
-
Bundler.sudo "cp -R #{@bin_dir}/#{exe} #{@gem_bin_dir}"
|
56
|
-
end
|
57
|
-
end
|
58
|
-
end
|
59
|
-
|
60
39
|
def run_hooks(type)
|
61
40
|
hooks_meth = "#{type}_hooks"
|
62
41
|
return unless Gem.respond_to?(hooks_meth)
|
data/lib/bundler/source/path.rb
CHANGED
@@ -11,15 +11,13 @@ module Bundler
|
|
11
11
|
|
12
12
|
protected :original_path
|
13
13
|
|
14
|
-
DEFAULT_GLOB = "{,*,*/*}.gemspec"
|
14
|
+
DEFAULT_GLOB = "{,*,*/*}.gemspec"
|
15
15
|
|
16
16
|
def initialize(options)
|
17
|
+
@checksum_store = Checksum::Store.new
|
17
18
|
@options = options.dup
|
18
19
|
@glob = options["glob"] || DEFAULT_GLOB
|
19
20
|
|
20
|
-
@allow_cached = false
|
21
|
-
@allow_remote = false
|
22
|
-
|
23
21
|
@root_path = options["root_path"] || root
|
24
22
|
|
25
23
|
if options["path"]
|
@@ -40,16 +38,6 @@ module Bundler
|
|
40
38
|
@original_path = @path
|
41
39
|
end
|
42
40
|
|
43
|
-
def remote!
|
44
|
-
@local_specs = nil
|
45
|
-
@allow_remote = true
|
46
|
-
end
|
47
|
-
|
48
|
-
def cached!
|
49
|
-
@local_specs = nil
|
50
|
-
@allow_cached = true
|
51
|
-
end
|
52
|
-
|
53
41
|
def self.from_lock(options)
|
54
42
|
new(options.merge("path" => options.delete("remote")))
|
55
43
|
end
|
@@ -82,10 +70,10 @@ module Bundler
|
|
82
70
|
end
|
83
71
|
|
84
72
|
def install(spec, options = {})
|
85
|
-
using_message = "Using #{version_message(spec)} from #{self}"
|
73
|
+
using_message = "Using #{version_message(spec, options[:previous_spec])} from #{self}"
|
86
74
|
using_message += " and installing its executables" unless spec.executables.empty?
|
87
75
|
print_using_message using_message
|
88
|
-
generate_bin(spec, :
|
76
|
+
generate_bin(spec, disable_extensions: true)
|
89
77
|
nil # no post-install message
|
90
78
|
end
|
91
79
|
|
@@ -224,22 +212,22 @@ module Bundler
|
|
224
212
|
|
225
213
|
# Some gem authors put absolute paths in their gemspec
|
226
214
|
# and we have to save them from themselves
|
227
|
-
spec.files = spec.files.map do |
|
228
|
-
next
|
229
|
-
next if File.directory?(
|
215
|
+
spec.files = spec.files.map do |path|
|
216
|
+
next path unless /\A#{Pathname::SEPARATOR_PAT}/o.match?(path)
|
217
|
+
next if File.directory?(path)
|
230
218
|
begin
|
231
|
-
Pathname.new(
|
219
|
+
Pathname.new(path).relative_path_from(gem_dir).to_s
|
232
220
|
rescue ArgumentError
|
233
|
-
|
221
|
+
path
|
234
222
|
end
|
235
223
|
end.compact
|
236
224
|
|
237
225
|
installer = Path::Installer.new(
|
238
226
|
spec,
|
239
|
-
:
|
240
|
-
:
|
241
|
-
:
|
242
|
-
:
|
227
|
+
env_shebang: false,
|
228
|
+
disable_extensions: options[:disable_extensions],
|
229
|
+
build_args: options[:build_args],
|
230
|
+
bundler_extension_cache_path: extension_cache_path(spec)
|
243
231
|
)
|
244
232
|
installer.post_install
|
245
233
|
rescue Gem::InvalidSpecificationException => e
|
@@ -48,7 +48,7 @@ module Bundler
|
|
48
48
|
end
|
49
49
|
|
50
50
|
uri
|
51
|
-
rescue
|
51
|
+
rescue Gem::URI::InvalidComponentError
|
52
52
|
error_message = "Please CGI escape your usernames and passwords before " \
|
53
53
|
"setting them for authentication."
|
54
54
|
raise HTTPError.new(error_message)
|