bundler 1.9.0 → 1.17.3
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of bundler might be problematic. Click here for more details.
- checksums.yaml +5 -5
- data/CHANGELOG.md +1157 -6
- data/README.md +33 -6
- data/bundler.gemspec +51 -18
- data/exe/bundle +31 -0
- data/{bin → exe}/bundle_ruby +10 -6
- data/exe/bundler +4 -0
- data/lib/bundler.rb +326 -207
- data/lib/bundler/build_metadata.rb +53 -0
- data/lib/bundler/capistrano.rb +9 -3
- data/lib/bundler/cli.rb +522 -141
- data/lib/bundler/cli/add.rb +35 -0
- data/lib/bundler/cli/binstubs.rb +22 -11
- data/lib/bundler/cli/cache.rb +7 -6
- data/lib/bundler/cli/check.rb +11 -8
- data/lib/bundler/cli/clean.rb +7 -8
- data/lib/bundler/cli/common.rb +53 -7
- data/lib/bundler/cli/config.rb +84 -49
- data/lib/bundler/cli/console.rb +13 -8
- data/lib/bundler/cli/doctor.rb +140 -0
- data/lib/bundler/cli/exec.rb +77 -16
- data/lib/bundler/cli/gem.rb +120 -52
- data/lib/bundler/cli/info.rb +50 -0
- data/lib/bundler/cli/init.rb +21 -7
- data/lib/bundler/cli/inject.rb +37 -10
- data/lib/bundler/cli/install.rb +139 -78
- data/lib/bundler/cli/issue.rb +40 -0
- data/lib/bundler/cli/list.rb +58 -0
- data/lib/bundler/cli/lock.rb +63 -0
- data/lib/bundler/cli/open.rb +9 -6
- data/lib/bundler/cli/outdated.rb +221 -35
- data/lib/bundler/cli/package.rb +11 -7
- data/lib/bundler/cli/platform.rb +7 -4
- data/lib/bundler/cli/plugin.rb +24 -0
- data/lib/bundler/cli/pristine.rb +47 -0
- data/lib/bundler/cli/remove.rb +18 -0
- data/lib/bundler/cli/show.rb +11 -10
- data/lib/bundler/cli/update.rb +47 -29
- data/lib/bundler/cli/viz.rb +12 -8
- data/lib/bundler/compact_index_client.rb +109 -0
- data/lib/bundler/compact_index_client/cache.rb +118 -0
- data/lib/bundler/compact_index_client/updater.rb +116 -0
- data/lib/bundler/compatibility_guard.rb +14 -0
- data/lib/bundler/constants.rb +3 -1
- data/lib/bundler/current_ruby.rb +47 -137
- data/lib/bundler/definition.rb +599 -230
- data/lib/bundler/dep_proxy.rb +15 -10
- data/lib/bundler/dependency.rb +54 -25
- data/lib/bundler/deployment.rb +12 -2
- data/lib/bundler/deprecate.rb +33 -4
- data/lib/bundler/dsl.rb +383 -99
- data/lib/bundler/endpoint_specification.rb +72 -7
- data/lib/bundler/env.rb +121 -41
- data/lib/bundler/environment_preserver.rb +59 -0
- data/lib/bundler/errors.rb +158 -0
- data/lib/bundler/feature_flag.rb +74 -0
- data/lib/bundler/fetcher.rb +171 -280
- data/lib/bundler/fetcher/base.rb +52 -0
- data/lib/bundler/fetcher/compact_index.rb +126 -0
- data/lib/bundler/fetcher/dependency.rb +82 -0
- data/lib/bundler/fetcher/downloader.rb +84 -0
- data/lib/bundler/fetcher/index.rb +52 -0
- data/lib/bundler/friendly_errors.rb +113 -58
- data/lib/bundler/gem_helper.rb +73 -46
- data/lib/bundler/gem_helpers.rb +85 -9
- data/lib/bundler/gem_remote_fetcher.rb +43 -0
- data/lib/bundler/gem_tasks.rb +6 -1
- data/lib/bundler/gem_version_promoter.rb +190 -0
- data/lib/bundler/gemdeps.rb +29 -0
- data/lib/bundler/graph.rb +32 -49
- data/lib/bundler/index.rb +79 -67
- data/lib/bundler/injector.rb +219 -30
- data/lib/bundler/inline.rb +74 -0
- data/lib/bundler/installer.rb +191 -206
- data/lib/bundler/installer/gem_installer.rb +85 -0
- data/lib/bundler/installer/parallel_installer.rb +233 -0
- data/lib/bundler/installer/standalone.rb +53 -0
- data/lib/bundler/lazy_specification.rb +53 -13
- data/lib/bundler/lockfile_generator.rb +95 -0
- data/lib/bundler/lockfile_parser.rb +157 -62
- data/lib/bundler/match_platform.rb +15 -4
- data/lib/bundler/mirror.rb +223 -0
- data/lib/bundler/plugin.rb +292 -0
- data/lib/bundler/plugin/api.rb +81 -0
- data/lib/bundler/plugin/api/source.rb +306 -0
- data/lib/bundler/plugin/dsl.rb +53 -0
- data/lib/bundler/plugin/events.rb +61 -0
- data/lib/bundler/plugin/index.rb +162 -0
- data/lib/bundler/plugin/installer.rb +96 -0
- data/lib/bundler/plugin/installer/git.rb +38 -0
- data/lib/bundler/plugin/installer/rubygems.rb +27 -0
- data/lib/bundler/plugin/source_list.rb +27 -0
- data/lib/bundler/process_lock.rb +24 -0
- data/lib/bundler/psyched_yaml.rb +17 -6
- data/lib/bundler/remote_specification.rb +68 -11
- data/lib/bundler/resolver.rb +263 -229
- data/lib/bundler/resolver/spec_group.rb +106 -0
- data/lib/bundler/retry.rb +25 -19
- data/lib/bundler/ruby_dsl.rb +9 -2
- data/lib/bundler/ruby_version.rb +101 -66
- data/lib/bundler/rubygems_ext.rb +77 -37
- data/lib/bundler/rubygems_gem_installer.rb +106 -0
- data/lib/bundler/rubygems_integration.rb +450 -163
- data/lib/bundler/runtime.rb +133 -103
- data/lib/bundler/settings.rb +344 -83
- data/lib/bundler/settings/validator.rb +102 -0
- data/lib/bundler/setup.rb +7 -3
- data/lib/bundler/shared_helpers.rb +284 -54
- data/lib/bundler/similarity_detector.rb +21 -21
- data/lib/bundler/source.rb +68 -15
- data/lib/bundler/source/gemspec.rb +18 -0
- data/lib/bundler/source/git.rb +90 -55
- data/lib/bundler/source/git/git_proxy.rb +135 -35
- data/lib/bundler/source/metadata.rb +62 -0
- data/lib/bundler/source/path.rb +84 -61
- data/lib/bundler/source/path/installer.rb +53 -17
- data/lib/bundler/source/rubygems.rb +282 -122
- data/lib/bundler/source/rubygems/remote.rb +69 -0
- data/lib/bundler/source_list.rb +107 -22
- data/lib/bundler/spec_set.rb +83 -45
- data/lib/bundler/ssl_certs/certificate_manager.rb +8 -7
- data/lib/bundler/ssl_certs/index.rubygems.org/GlobalSignRootCA.pem +21 -0
- data/lib/bundler/ssl_certs/{DigiCertHighAssuranceEVRootCA.pem → rubygems.global.ssl.fastly.net/DigiCertHighAssuranceEVRootCA.pem} +0 -0
- data/lib/bundler/ssl_certs/{AddTrustExternalCARoot-2048.pem → rubygems.org/AddTrustExternalCARoot.pem} +0 -0
- data/lib/bundler/stub_specification.rb +108 -0
- data/lib/bundler/templates/.document +1 -0
- data/lib/bundler/templates/Executable +19 -6
- data/lib/bundler/templates/Executable.bundler +105 -0
- data/lib/bundler/templates/Executable.standalone +6 -4
- data/lib/bundler/templates/Gemfile +4 -1
- data/lib/bundler/templates/gems.rb +8 -0
- data/lib/bundler/templates/newgem/CODE_OF_CONDUCT.md.tt +68 -7
- data/lib/bundler/templates/newgem/Gemfile.tt +4 -2
- data/lib/bundler/templates/newgem/LICENSE.txt.tt +1 -1
- data/lib/bundler/templates/newgem/README.md.tt +19 -11
- data/lib/bundler/templates/newgem/Rakefile.tt +10 -6
- data/lib/bundler/templates/newgem/bin/console.tt +1 -1
- data/lib/bundler/templates/newgem/bin/setup.tt +2 -1
- data/lib/bundler/templates/newgem/ext/newgem/newgem.c.tt +4 -4
- data/lib/bundler/templates/newgem/ext/newgem/newgem.h.tt +3 -3
- data/lib/bundler/templates/newgem/gitignore.tt +5 -1
- data/lib/bundler/templates/newgem/lib/newgem.rb.tt +7 -6
- data/lib/bundler/templates/newgem/lib/newgem/version.rb.tt +4 -4
- data/lib/bundler/templates/newgem/newgem.gemspec.tt +31 -15
- data/lib/bundler/templates/newgem/rspec.tt +1 -0
- data/lib/bundler/templates/newgem/spec/newgem_spec.rb.tt +3 -5
- data/lib/bundler/templates/newgem/spec/spec_helper.rb.tt +14 -2
- data/lib/bundler/templates/newgem/test/{test_newgem.rb.tt → newgem_test.rb.tt} +2 -2
- data/lib/bundler/templates/newgem/test/test_helper.rb.tt +4 -0
- data/lib/bundler/templates/newgem/travis.yml.tt +7 -0
- data/lib/bundler/ui.rb +5 -3
- data/lib/bundler/ui/rg_proxy.rb +5 -7
- data/lib/bundler/ui/shell.rb +69 -18
- data/lib/bundler/ui/silent.rb +26 -1
- data/lib/bundler/uri_credentials_filter.rb +37 -0
- data/lib/bundler/vendor/fileutils/lib/fileutils.rb +1638 -0
- data/lib/bundler/vendor/molinillo/lib/molinillo.rb +12 -0
- data/lib/bundler/vendor/molinillo/lib/molinillo/compatibility.rb +26 -0
- data/lib/bundler/vendor/molinillo/lib/molinillo/delegates/resolution_state.rb +57 -0
- data/lib/bundler/vendor/molinillo/lib/molinillo/delegates/specification_provider.rb +81 -0
- data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph.rb +223 -0
- data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/action.rb +36 -0
- data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/add_edge_no_circular.rb +66 -0
- data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/add_vertex.rb +62 -0
- data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/delete_edge.rb +63 -0
- data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/detach_vertex_named.rb +61 -0
- data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/log.rb +126 -0
- data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/set_payload.rb +46 -0
- data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/tag.rb +36 -0
- data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/vertex.rb +136 -0
- data/lib/bundler/vendor/molinillo/lib/molinillo/errors.rb +143 -0
- data/lib/bundler/vendor/molinillo/lib/molinillo/gem_metadata.rb +6 -0
- data/lib/bundler/vendor/{Molinillo-0.2.1 → molinillo}/lib/molinillo/modules/specification_provider.rb +11 -0
- data/lib/bundler/vendor/{Molinillo-0.2.1 → molinillo}/lib/molinillo/modules/ui.rb +6 -2
- data/lib/bundler/vendor/molinillo/lib/molinillo/resolution.rb +837 -0
- data/lib/bundler/vendor/{Molinillo-0.2.1 → molinillo}/lib/molinillo/resolver.rb +6 -3
- data/lib/bundler/vendor/molinillo/lib/molinillo/state.rb +58 -0
- data/lib/bundler/vendor/{net → net-http-persistent/lib/net}/http/faster.rb +1 -0
- data/lib/bundler/vendor/{net → net-http-persistent/lib/net}/http/persistent.rb +27 -24
- data/lib/bundler/vendor/{net → net-http-persistent/lib/net}/http/persistent/ssl_reuse.rb +2 -1
- data/lib/bundler/vendor/{thor-0.19.1 → thor}/lib/thor.rb +47 -22
- data/lib/bundler/vendor/{thor-0.19.1 → thor}/lib/thor/actions.rb +31 -29
- data/lib/bundler/vendor/{thor-0.19.1 → thor}/lib/thor/actions/create_file.rb +3 -2
- data/lib/bundler/vendor/{thor-0.19.1 → thor}/lib/thor/actions/create_link.rb +3 -2
- data/lib/bundler/vendor/{thor-0.19.1 → thor}/lib/thor/actions/directory.rb +3 -3
- data/lib/bundler/vendor/{thor-0.19.1 → thor}/lib/thor/actions/empty_directory.rb +16 -8
- data/lib/bundler/vendor/{thor-0.19.1 → thor}/lib/thor/actions/file_manipulation.rb +66 -18
- data/lib/bundler/vendor/{thor-0.19.1 → thor}/lib/thor/actions/inject_into_file.rb +18 -16
- data/lib/bundler/vendor/{thor-0.19.1 → thor}/lib/thor/base.rb +67 -44
- data/lib/bundler/vendor/{thor-0.19.1 → thor}/lib/thor/command.rb +13 -11
- data/lib/bundler/vendor/{thor-0.19.1 → thor}/lib/thor/core_ext/hash_with_indifferent_access.rb +21 -1
- data/lib/bundler/vendor/thor/lib/thor/core_ext/io_binary_read.rb +12 -0
- data/lib/bundler/vendor/thor/lib/thor/core_ext/ordered_hash.rb +129 -0
- data/lib/bundler/vendor/{thor-0.19.1 → thor}/lib/thor/error.rb +3 -3
- data/lib/bundler/vendor/{thor-0.19.1 → thor}/lib/thor/group.rb +14 -14
- data/lib/bundler/vendor/{thor-0.19.1 → thor}/lib/thor/invocation.rb +4 -5
- data/lib/bundler/vendor/{thor-0.19.1 → thor}/lib/thor/line_editor.rb +2 -2
- data/lib/bundler/vendor/{thor-0.19.1 → thor}/lib/thor/line_editor/basic.rb +2 -0
- data/lib/bundler/vendor/{thor-0.19.1 → thor}/lib/thor/line_editor/readline.rb +0 -0
- data/lib/bundler/vendor/thor/lib/thor/parser.rb +4 -0
- data/lib/bundler/vendor/{thor-0.19.1 → thor}/lib/thor/parser/argument.rb +4 -7
- data/lib/bundler/vendor/{thor-0.19.1 → thor}/lib/thor/parser/arguments.rb +16 -16
- data/lib/bundler/vendor/{thor-0.19.1 → thor}/lib/thor/parser/option.rb +42 -21
- data/lib/bundler/vendor/{thor-0.19.1 → thor}/lib/thor/parser/options.rb +13 -10
- data/lib/bundler/vendor/{thor-0.19.1 → thor}/lib/thor/rake_compat.rb +1 -1
- data/lib/bundler/vendor/{thor-0.19.1 → thor}/lib/thor/runner.rb +35 -33
- data/lib/bundler/vendor/{thor-0.19.1 → thor}/lib/thor/shell.rb +4 -4
- data/lib/bundler/vendor/{thor-0.19.1 → thor}/lib/thor/shell/basic.rb +49 -33
- data/lib/bundler/vendor/{thor-0.19.1 → thor}/lib/thor/shell/color.rb +2 -2
- data/lib/bundler/vendor/{thor-0.19.1 → thor}/lib/thor/shell/html.rb +5 -5
- data/lib/bundler/vendor/{thor-0.19.1 → thor}/lib/thor/util.rb +8 -7
- data/lib/bundler/vendor/{thor-0.19.1 → thor}/lib/thor/version.rb +1 -1
- data/lib/bundler/vendored_fileutils.rb +9 -0
- data/lib/bundler/vendored_molinillo.rb +4 -5
- data/lib/bundler/vendored_persistent.rb +45 -4
- data/lib/bundler/vendored_thor.rb +8 -5
- data/lib/bundler/version.rb +23 -1
- data/lib/bundler/version_ranges.rb +76 -0
- data/lib/bundler/vlad.rb +8 -2
- data/lib/bundler/worker.rb +39 -6
- data/lib/bundler/yaml_serializer.rb +90 -0
- data/man/bundle-add.1 +58 -0
- data/man/bundle-add.1.txt +52 -0
- data/man/bundle-add.ronn +40 -0
- data/man/bundle-binstubs.1 +40 -0
- data/man/bundle-binstubs.1.txt +48 -0
- data/man/bundle-binstubs.ronn +43 -0
- data/man/bundle-check.1 +31 -0
- data/man/bundle-check.1.txt +33 -0
- data/man/bundle-check.ronn +26 -0
- data/man/bundle-clean.1 +24 -0
- data/man/bundle-clean.1.txt +26 -0
- data/man/bundle-clean.ronn +18 -0
- data/man/bundle-config.1 +497 -0
- data/man/bundle-config.1.txt +529 -0
- data/man/bundle-config.ronn +256 -31
- data/man/bundle-doctor.1 +44 -0
- data/man/bundle-doctor.1.txt +44 -0
- data/man/bundle-doctor.ronn +33 -0
- data/man/bundle-exec.1 +165 -0
- data/man/bundle-exec.1.txt +178 -0
- data/man/bundle-exec.ronn +19 -3
- data/man/bundle-gem.1 +80 -0
- data/man/bundle-gem.1.txt +91 -0
- data/man/bundle-gem.ronn +78 -0
- data/man/bundle-info.1 +20 -0
- data/man/bundle-info.1.txt +21 -0
- data/man/bundle-info.ronn +17 -0
- data/man/bundle-init.1 +25 -0
- data/man/bundle-init.1.txt +34 -0
- data/man/bundle-init.ronn +29 -0
- data/man/bundle-inject.1 +33 -0
- data/man/bundle-inject.1.txt +32 -0
- data/man/bundle-inject.ronn +22 -0
- data/man/bundle-install.1 +308 -0
- data/man/bundle-install.1.txt +396 -0
- data/man/bundle-install.ronn +64 -67
- data/man/bundle-list.1 +50 -0
- data/man/bundle-list.1.txt +43 -0
- data/man/bundle-list.ronn +33 -0
- data/man/bundle-lock.1 +84 -0
- data/man/bundle-lock.1.txt +93 -0
- data/man/bundle-lock.ronn +94 -0
- data/man/bundle-open.1 +32 -0
- data/man/bundle-open.1.txt +29 -0
- data/man/bundle-open.ronn +19 -0
- data/man/bundle-outdated.1 +155 -0
- data/man/bundle-outdated.1.txt +131 -0
- data/man/bundle-outdated.ronn +111 -0
- data/man/bundle-package.1 +55 -0
- data/man/bundle-package.1.txt +79 -0
- data/man/bundle-package.ronn +14 -8
- data/man/bundle-platform.1 +61 -0
- data/man/bundle-platform.1.txt +57 -0
- data/man/bundle-platform.ronn +1 -1
- data/man/bundle-pristine.1 +34 -0
- data/man/bundle-pristine.1.txt +44 -0
- data/man/bundle-pristine.ronn +34 -0
- data/man/bundle-remove.1 +31 -0
- data/man/bundle-remove.1.txt +34 -0
- data/man/bundle-remove.ronn +23 -0
- data/man/bundle-show.1 +23 -0
- data/man/bundle-show.1.txt +27 -0
- data/man/bundle-show.ronn +21 -0
- data/man/bundle-update.1 +394 -0
- data/man/bundle-update.1.txt +391 -0
- data/man/bundle-update.ronn +180 -18
- data/man/bundle-viz.1 +39 -0
- data/man/bundle-viz.1.txt +39 -0
- data/man/bundle-viz.ronn +30 -0
- data/man/bundle.1 +136 -0
- data/man/bundle.1.txt +116 -0
- data/man/bundle.ronn +46 -33
- data/man/gemfile.5 +689 -0
- data/man/gemfile.5.ronn +127 -79
- data/man/gemfile.5.txt +653 -0
- data/man/index.txt +25 -7
- metadata +242 -95
- data/.gitignore +0 -16
- data/.rspec +0 -3
- data/.travis.yml +0 -110
- data/CODE_OF_CONDUCT.md +0 -40
- data/CONTRIBUTING.md +0 -32
- data/DEVELOPMENT.md +0 -119
- data/ISSUES.md +0 -96
- data/Rakefile +0 -302
- data/UPGRADING.md +0 -103
- data/bin/bundle +0 -21
- data/bin/bundler +0 -21
- data/lib/bundler/anonymizable_uri.rb +0 -32
- data/lib/bundler/environment.rb +0 -42
- data/lib/bundler/gem_installer.rb +0 -9
- data/lib/bundler/gem_path_manipulation.rb +0 -8
- data/lib/bundler/ssl_certs/AddTrustExternalCARoot.pem +0 -32
- data/lib/bundler/ssl_certs/Class3PublicPrimaryCertificationAuthority.pem +0 -14
- data/lib/bundler/ssl_certs/EntrustnetSecureServerCertificationAuthority.pem +0 -28
- data/lib/bundler/ssl_certs/GeoTrustGlobalCA.pem +0 -20
- data/lib/bundler/templates/newgem/.travis.yml.tt +0 -3
- data/lib/bundler/templates/newgem/test/minitest_helper.rb.tt +0 -4
- data/lib/bundler/vendor/Molinillo-0.2.1/lib/molinillo.rb +0 -5
- data/lib/bundler/vendor/Molinillo-0.2.1/lib/molinillo/dependency_graph.rb +0 -266
- data/lib/bundler/vendor/Molinillo-0.2.1/lib/molinillo/errors.rb +0 -69
- data/lib/bundler/vendor/Molinillo-0.2.1/lib/molinillo/gem_metadata.rb +0 -3
- data/lib/bundler/vendor/Molinillo-0.2.1/lib/molinillo/resolution.rb +0 -412
- data/lib/bundler/vendor/Molinillo-0.2.1/lib/molinillo/state.rb +0 -43
- data/lib/bundler/vendor/thor-0.19.1/lib/thor/core_ext/io_binary_read.rb +0 -10
- data/lib/bundler/vendor/thor-0.19.1/lib/thor/core_ext/ordered_hash.rb +0 -98
- data/lib/bundler/vendor/thor-0.19.1/lib/thor/parser.rb +0 -4
data/lib/bundler/cli/package.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module Bundler
|
2
4
|
class CLI::Package
|
3
5
|
attr_reader :options
|
@@ -8,22 +10,22 @@ module Bundler
|
|
8
10
|
|
9
11
|
def run
|
10
12
|
Bundler.ui.level = "error" if options[:quiet]
|
11
|
-
Bundler.settings
|
12
|
-
Bundler.settings
|
13
|
-
Bundler.settings
|
13
|
+
Bundler.settings.set_command_option_if_given :path, options[:path]
|
14
|
+
Bundler.settings.set_command_option_if_given :cache_all_platforms, options["all-platforms"]
|
15
|
+
Bundler.settings.set_command_option_if_given :cache_path, options["cache-path"]
|
14
16
|
|
15
17
|
setup_cache_all
|
16
18
|
install
|
17
19
|
|
18
20
|
# TODO: move cache contents here now that all bundles are locked
|
19
|
-
custom_path =
|
21
|
+
custom_path = Bundler.settings[:path] if options[:path]
|
20
22
|
Bundler.load.cache(custom_path)
|
21
23
|
end
|
22
24
|
|
23
25
|
private
|
24
26
|
|
25
27
|
def install
|
26
|
-
require
|
28
|
+
require "bundler/cli/install"
|
27
29
|
options = self.options.dup
|
28
30
|
if Bundler.settings[:cache_all_platforms]
|
29
31
|
options["local"] = false
|
@@ -33,9 +35,11 @@ module Bundler
|
|
33
35
|
end
|
34
36
|
|
35
37
|
def setup_cache_all
|
36
|
-
|
38
|
+
all = options.fetch(:all, Bundler.feature_flag.cache_command_is_package? || nil)
|
39
|
+
|
40
|
+
Bundler.settings.set_command_option_if_given :cache_all, all
|
37
41
|
|
38
|
-
if Bundler.definition.has_local_dependencies? && !Bundler.
|
42
|
+
if Bundler.definition.has_local_dependencies? && !Bundler.feature_flag.cache_all?
|
39
43
|
Bundler.ui.warn "Your Gemfile contains path and git dependencies. If you want " \
|
40
44
|
"to package them as well, please pass the --all flag. This will be the default " \
|
41
45
|
"on Bundler 2.0."
|
data/lib/bundler/cli/platform.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module Bundler
|
2
4
|
class CLI::Platform
|
3
5
|
attr_reader :options
|
@@ -7,8 +9,10 @@ module Bundler
|
|
7
9
|
|
8
10
|
def run
|
9
11
|
platforms, ruby_version = Bundler.ui.silence do
|
10
|
-
|
11
|
-
|
12
|
+
locked_ruby_version = Bundler.locked_gems && Bundler.locked_gems.ruby_version
|
13
|
+
gemfile_ruby_version = Bundler.definition.ruby_version && Bundler.definition.ruby_version.single_version_string
|
14
|
+
[Bundler.definition.platforms.map {|p| "* #{p}" },
|
15
|
+
locked_ruby_version || gemfile_ruby_version]
|
12
16
|
end
|
13
17
|
output = []
|
14
18
|
|
@@ -26,7 +30,7 @@ module Bundler
|
|
26
30
|
output << "Your Gemfile specifies a Ruby version requirement:\n* #{ruby_version}"
|
27
31
|
|
28
32
|
begin
|
29
|
-
Bundler.definition.
|
33
|
+
Bundler.definition.validate_runtime!
|
30
34
|
output << "Your current platform satisfies the Ruby version requirement."
|
31
35
|
rescue RubyVersionMismatch => e
|
32
36
|
output << e.message
|
@@ -38,6 +42,5 @@ module Bundler
|
|
38
42
|
|
39
43
|
Bundler.ui.info output.join("\n\n")
|
40
44
|
end
|
41
|
-
|
42
45
|
end
|
43
46
|
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "bundler/vendored_thor"
|
4
|
+
module Bundler
|
5
|
+
class CLI::Plugin < Thor
|
6
|
+
desc "install PLUGINS", "Install the plugin from the source"
|
7
|
+
long_desc <<-D
|
8
|
+
Install plugins either from the rubygems source provided (with --source option) or from a git source provided with (--git option). If no sources are provided, it uses Gem.sources
|
9
|
+
D
|
10
|
+
method_option "source", :type => :string, :default => nil, :banner =>
|
11
|
+
"URL of the RubyGems source to fetch the plugin from"
|
12
|
+
method_option "version", :type => :string, :default => nil, :banner =>
|
13
|
+
"The version of the plugin to fetch"
|
14
|
+
method_option "git", :type => :string, :default => nil, :banner =>
|
15
|
+
"URL of the git repo to fetch from"
|
16
|
+
method_option "branch", :type => :string, :default => nil, :banner =>
|
17
|
+
"The git branch to checkout"
|
18
|
+
method_option "ref", :type => :string, :default => nil, :banner =>
|
19
|
+
"The git revision to check out"
|
20
|
+
def install(*plugins)
|
21
|
+
Bundler::Plugin.install(plugins, options)
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,47 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Bundler
|
4
|
+
class CLI::Pristine
|
5
|
+
def initialize(gems)
|
6
|
+
@gems = gems
|
7
|
+
end
|
8
|
+
|
9
|
+
def run
|
10
|
+
CLI::Common.ensure_all_gems_in_lockfile!(@gems)
|
11
|
+
definition = Bundler.definition
|
12
|
+
definition.validate_runtime!
|
13
|
+
installer = Bundler::Installer.new(Bundler.root, definition)
|
14
|
+
|
15
|
+
Bundler.load.specs.each do |spec|
|
16
|
+
next if spec.name == "bundler" # Source::Rubygems doesn't install bundler
|
17
|
+
next if !@gems.empty? && !@gems.include?(spec.name)
|
18
|
+
|
19
|
+
gem_name = "#{spec.name} (#{spec.version}#{spec.git_version})"
|
20
|
+
gem_name += " (#{spec.platform})" if !spec.platform.nil? && spec.platform != Gem::Platform::RUBY
|
21
|
+
|
22
|
+
case source = spec.source
|
23
|
+
when Source::Rubygems
|
24
|
+
cached_gem = spec.cache_file
|
25
|
+
unless File.exist?(cached_gem)
|
26
|
+
Bundler.ui.error("Failed to pristine #{gem_name}. Cached gem #{cached_gem} does not exist.")
|
27
|
+
next
|
28
|
+
end
|
29
|
+
|
30
|
+
FileUtils.rm_rf spec.full_gem_path
|
31
|
+
when Source::Git
|
32
|
+
source.remote!
|
33
|
+
if extension_cache_path = source.extension_cache_path(spec)
|
34
|
+
FileUtils.rm_rf extension_cache_path
|
35
|
+
end
|
36
|
+
FileUtils.rm_rf spec.extension_dir if spec.respond_to?(:extension_dir)
|
37
|
+
FileUtils.rm_rf spec.full_gem_path
|
38
|
+
else
|
39
|
+
Bundler.ui.warn("Cannot pristine #{gem_name}. Gem is sourced from local path.")
|
40
|
+
next
|
41
|
+
end
|
42
|
+
|
43
|
+
Bundler::GemInstaller.new(spec, installer, false, 0, true).install_from_spec
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Bundler
|
4
|
+
class CLI::Remove
|
5
|
+
def initialize(gems, options)
|
6
|
+
@gems = gems
|
7
|
+
@options = options
|
8
|
+
end
|
9
|
+
|
10
|
+
def run
|
11
|
+
raise InvalidOption, "Please specify gems to remove." if @gems.empty?
|
12
|
+
|
13
|
+
Injector.remove(@gems, {})
|
14
|
+
|
15
|
+
Installer.install(Bundler.root, Bundler.definition) if @options["install"]
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
data/lib/bundler/cli/show.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
|
1
|
+
# frozen_string_literal: true
|
2
2
|
|
3
3
|
module Bundler
|
4
4
|
class CLI::Show
|
@@ -12,7 +12,7 @@ module Bundler
|
|
12
12
|
|
13
13
|
def run
|
14
14
|
Bundler.ui.silence do
|
15
|
-
Bundler.definition.
|
15
|
+
Bundler.definition.validate_runtime!
|
16
16
|
Bundler.load.lock
|
17
17
|
end
|
18
18
|
|
@@ -23,7 +23,7 @@ module Bundler
|
|
23
23
|
spec = Bundler::CLI::Common.select_spec(gem_name, :regex_match)
|
24
24
|
return unless spec
|
25
25
|
path = spec.full_gem_path
|
26
|
-
|
26
|
+
unless File.directory?(path)
|
27
27
|
Bundler.ui.warn "The gem #{gem_name} has been deleted. It was installed at:"
|
28
28
|
end
|
29
29
|
end
|
@@ -31,19 +31,19 @@ module Bundler
|
|
31
31
|
end
|
32
32
|
|
33
33
|
if options[:paths]
|
34
|
-
Bundler.load.specs.sort_by
|
34
|
+
Bundler.load.specs.sort_by(&:name).map do |s|
|
35
35
|
Bundler.ui.info s.full_gem_path
|
36
36
|
end
|
37
37
|
else
|
38
38
|
Bundler.ui.info "Gems included by the bundle:"
|
39
|
-
Bundler.load.specs.sort_by
|
39
|
+
Bundler.load.specs.sort_by(&:name).each do |s|
|
40
40
|
desc = " * #{s.name} (#{s.version}#{s.git_version})"
|
41
41
|
if @verbose
|
42
|
-
latest = latest_specs.find {
|
43
|
-
Bundler.ui.info <<-END.gsub(/^ +/,
|
42
|
+
latest = latest_specs.find {|l| l.name == s.name }
|
43
|
+
Bundler.ui.info <<-END.gsub(/^ +/, "")
|
44
44
|
#{desc}
|
45
|
-
\tSummary: #{s.summary ||
|
46
|
-
\tHomepage: #{s.homepage ||
|
45
|
+
\tSummary: #{s.summary || "No description available."}
|
46
|
+
\tHomepage: #{s.homepage || "No website available."}
|
47
47
|
\tStatus: #{outdated?(s, latest) ? "Outdated - #{s.version} < #{latest.version}" : "Up to date"}
|
48
48
|
END
|
49
49
|
else
|
@@ -53,7 +53,7 @@ module Bundler
|
|
53
53
|
end
|
54
54
|
end
|
55
55
|
|
56
|
-
|
56
|
+
private
|
57
57
|
|
58
58
|
def fetch_latest_specs
|
59
59
|
definition = Bundler.definition(true)
|
@@ -63,6 +63,7 @@ module Bundler
|
|
63
63
|
else
|
64
64
|
definition.resolve_with_cache!
|
65
65
|
end
|
66
|
+
Bundler.reset!
|
66
67
|
definition.specs
|
67
68
|
end
|
68
69
|
|
data/lib/bundler/cli/update.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module Bundler
|
2
4
|
class CLI::Update
|
3
5
|
attr_reader :options, :gems
|
@@ -9,10 +11,23 @@ module Bundler
|
|
9
11
|
def run
|
10
12
|
Bundler.ui.level = "error" if options[:quiet]
|
11
13
|
|
14
|
+
Plugin.gemfile_install(Bundler.default_gemfile) if Bundler.feature_flag.plugins?
|
15
|
+
|
12
16
|
sources = Array(options[:source])
|
13
17
|
groups = Array(options[:group]).map(&:to_sym)
|
14
18
|
|
15
|
-
|
19
|
+
full_update = gems.empty? && sources.empty? && groups.empty? && !options[:ruby] && !options[:bundler]
|
20
|
+
|
21
|
+
if full_update && !options[:all]
|
22
|
+
if Bundler.feature_flag.update_requires_all_flag?
|
23
|
+
raise InvalidOption, "To update everything, pass the `--all` flag."
|
24
|
+
end
|
25
|
+
SharedHelpers.major_deprecation 2, "Pass --all to `bundle update` to update everything"
|
26
|
+
elsif !full_update && options[:all]
|
27
|
+
raise InvalidOption, "Cannot specify --all along with specific options."
|
28
|
+
end
|
29
|
+
|
30
|
+
if full_update
|
16
31
|
# We're doing a full update
|
17
32
|
Bundler.definition(true)
|
18
33
|
else
|
@@ -20,54 +35,57 @@ module Bundler
|
|
20
35
|
raise GemfileLockNotFound, "This Bundle hasn't been installed yet. " \
|
21
36
|
"Run `bundle install` to update and install the bundled gems."
|
22
37
|
end
|
23
|
-
|
24
|
-
names = Bundler.locked_gems.specs.map{ |s| s.name }
|
25
|
-
gems.each do |g|
|
26
|
-
next if names.include?(g)
|
27
|
-
require "bundler/cli/common"
|
28
|
-
raise GemNotFound, Bundler::CLI::Common.gem_not_found_message(g, names)
|
29
|
-
end
|
38
|
+
Bundler::CLI::Common.ensure_all_gems_in_lockfile!(gems)
|
30
39
|
|
31
40
|
if groups.any?
|
32
|
-
|
33
|
-
|
41
|
+
deps = Bundler.definition.dependencies.select {|d| (d.groups & groups).any? }
|
42
|
+
gems.concat(deps.map(&:name))
|
34
43
|
end
|
35
44
|
|
36
|
-
Bundler.definition(:gems => gems, :sources => sources
|
45
|
+
Bundler.definition(:gems => gems, :sources => sources, :ruby => options[:ruby],
|
46
|
+
:lock_shared_dependencies => options[:conservative],
|
47
|
+
:bundler => options[:bundler])
|
37
48
|
end
|
38
49
|
|
50
|
+
Bundler::CLI::Common.configure_gem_version_promoter(Bundler.definition, options)
|
51
|
+
|
39
52
|
Bundler::Fetcher.disable_endpoint = options["full-index"]
|
40
53
|
|
41
54
|
opts = options.dup
|
42
55
|
opts["update"] = true
|
43
56
|
opts["local"] = options[:local]
|
44
57
|
|
45
|
-
Bundler.settings
|
46
|
-
|
47
|
-
# rubygems plugins sometimes hook into the gem install process
|
48
|
-
Gem.load_env_plugins if Gem.respond_to?(:load_env_plugins)
|
58
|
+
Bundler.settings.set_command_option_if_given :jobs, opts["jobs"]
|
49
59
|
|
50
|
-
Bundler.definition.
|
51
|
-
Installer.install Bundler.root, Bundler.definition, opts
|
60
|
+
Bundler.definition.validate_runtime!
|
61
|
+
installer = Installer.install Bundler.root, Bundler.definition, opts
|
52
62
|
Bundler.load.cache if Bundler.app_cache.exist?
|
53
63
|
|
54
|
-
if
|
64
|
+
if CLI::Common.clean_after_install?
|
55
65
|
require "bundler/cli/clean"
|
56
66
|
Bundler::CLI::Clean.new(options).run
|
57
67
|
end
|
58
68
|
|
59
|
-
Bundler.
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
+
if locked_gems = Bundler.definition.locked_gems
|
70
|
+
gems.each do |name|
|
71
|
+
locked_version = locked_gems.specs.find {|s| s.name == name }
|
72
|
+
locked_version &&= locked_version.version
|
73
|
+
next unless locked_version
|
74
|
+
new_version = Bundler.definition.specs[name].first
|
75
|
+
new_version &&= new_version.version
|
76
|
+
if !new_version
|
77
|
+
Bundler.ui.warn "Bundler attempted to update #{name} but it was removed from the bundle"
|
78
|
+
elsif new_version < locked_version
|
79
|
+
Bundler.ui.warn "Note: #{name} version regressed from #{locked_version} to #{new_version}"
|
80
|
+
elsif new_version == locked_version
|
81
|
+
Bundler.ui.warn "Bundler attempted to update #{name} but its version stayed the same"
|
82
|
+
end
|
83
|
+
end
|
69
84
|
end
|
70
|
-
end
|
71
85
|
|
86
|
+
Bundler.ui.confirm "Bundle updated!"
|
87
|
+
Bundler::CLI::Common.output_without_groups_message
|
88
|
+
Bundler::CLI::Common.output_post_install_messages installer.post_install_messages
|
89
|
+
end
|
72
90
|
end
|
73
91
|
end
|
data/lib/bundler/cli/viz.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module Bundler
|
2
4
|
class CLI::Viz
|
3
5
|
attr_reader :options, :gem_name
|
@@ -6,8 +8,14 @@ module Bundler
|
|
6
8
|
end
|
7
9
|
|
8
10
|
def run
|
9
|
-
|
11
|
+
# make sure we get the right `graphviz`. There is also a `graphviz`
|
12
|
+
# gem we're not built to support
|
13
|
+
gem "ruby-graphviz"
|
14
|
+
require "graphviz"
|
15
|
+
|
16
|
+
options[:without] = options[:without].join(":").tr(" ", ":").split(":")
|
10
17
|
output_file = File.expand_path(options[:file])
|
18
|
+
|
11
19
|
graph = Graph.new(Bundler.load, output_file, options[:version], options[:requirements], options[:format], options[:without])
|
12
20
|
graph.viz
|
13
21
|
rescue LoadError => e
|
@@ -15,13 +23,9 @@ module Bundler
|
|
15
23
|
Bundler.ui.warn "Make sure you have the graphviz ruby gem. You can install it with:"
|
16
24
|
Bundler.ui.warn "`gem install ruby-graphviz`"
|
17
25
|
rescue StandardError => e
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
else
|
22
|
-
raise
|
23
|
-
end
|
26
|
+
raise unless e.message =~ /GraphViz not installed or dot not in PATH/
|
27
|
+
Bundler.ui.error e.message
|
28
|
+
Bundler.ui.warn "Please install GraphViz. On a Mac with Homebrew, you can run `brew install graphviz`."
|
24
29
|
end
|
25
|
-
|
26
30
|
end
|
27
31
|
end
|
@@ -0,0 +1,109 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "pathname"
|
4
|
+
require "set"
|
5
|
+
|
6
|
+
module Bundler
|
7
|
+
class CompactIndexClient
|
8
|
+
DEBUG_MUTEX = Mutex.new
|
9
|
+
def self.debug
|
10
|
+
return unless ENV["DEBUG_COMPACT_INDEX"]
|
11
|
+
DEBUG_MUTEX.synchronize { warn("[#{self}] #{yield}") }
|
12
|
+
end
|
13
|
+
|
14
|
+
class Error < StandardError; end
|
15
|
+
|
16
|
+
require "bundler/compact_index_client/cache"
|
17
|
+
require "bundler/compact_index_client/updater"
|
18
|
+
|
19
|
+
attr_reader :directory
|
20
|
+
|
21
|
+
# @return [Lambda] A lambda that takes an array of inputs and a block, and
|
22
|
+
# maps the inputs with the block in parallel.
|
23
|
+
#
|
24
|
+
attr_accessor :in_parallel
|
25
|
+
|
26
|
+
def initialize(directory, fetcher)
|
27
|
+
@directory = Pathname.new(directory)
|
28
|
+
@updater = Updater.new(fetcher)
|
29
|
+
@cache = Cache.new(@directory)
|
30
|
+
@endpoints = Set.new
|
31
|
+
@info_checksums_by_name = {}
|
32
|
+
@parsed_checksums = false
|
33
|
+
@mutex = Mutex.new
|
34
|
+
@in_parallel = lambda do |inputs, &blk|
|
35
|
+
inputs.map(&blk)
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
def names
|
40
|
+
Bundler::CompactIndexClient.debug { "/names" }
|
41
|
+
update(@cache.names_path, "names")
|
42
|
+
@cache.names
|
43
|
+
end
|
44
|
+
|
45
|
+
def versions
|
46
|
+
Bundler::CompactIndexClient.debug { "/versions" }
|
47
|
+
update(@cache.versions_path, "versions")
|
48
|
+
versions, @info_checksums_by_name = @cache.versions
|
49
|
+
versions
|
50
|
+
end
|
51
|
+
|
52
|
+
def dependencies(names)
|
53
|
+
Bundler::CompactIndexClient.debug { "dependencies(#{names})" }
|
54
|
+
in_parallel.call(names) do |name|
|
55
|
+
update_info(name)
|
56
|
+
@cache.dependencies(name).map {|d| d.unshift(name) }
|
57
|
+
end.flatten(1)
|
58
|
+
end
|
59
|
+
|
60
|
+
def spec(name, version, platform = nil)
|
61
|
+
Bundler::CompactIndexClient.debug { "spec(name = #{name}, version = #{version}, platform = #{platform})" }
|
62
|
+
update_info(name)
|
63
|
+
@cache.specific_dependency(name, version, platform)
|
64
|
+
end
|
65
|
+
|
66
|
+
def update_and_parse_checksums!
|
67
|
+
Bundler::CompactIndexClient.debug { "update_and_parse_checksums!" }
|
68
|
+
return @info_checksums_by_name if @parsed_checksums
|
69
|
+
update(@cache.versions_path, "versions")
|
70
|
+
@info_checksums_by_name = @cache.checksums
|
71
|
+
@parsed_checksums = true
|
72
|
+
end
|
73
|
+
|
74
|
+
private
|
75
|
+
|
76
|
+
def update(local_path, remote_path)
|
77
|
+
Bundler::CompactIndexClient.debug { "update(#{local_path}, #{remote_path})" }
|
78
|
+
unless synchronize { @endpoints.add?(remote_path) }
|
79
|
+
Bundler::CompactIndexClient.debug { "already fetched #{remote_path}" }
|
80
|
+
return
|
81
|
+
end
|
82
|
+
@updater.update(local_path, url(remote_path))
|
83
|
+
end
|
84
|
+
|
85
|
+
def update_info(name)
|
86
|
+
Bundler::CompactIndexClient.debug { "update_info(#{name})" }
|
87
|
+
path = @cache.info_path(name)
|
88
|
+
checksum = @updater.checksum_for_file(path)
|
89
|
+
unless existing = @info_checksums_by_name[name]
|
90
|
+
Bundler::CompactIndexClient.debug { "skipping updating info for #{name} since it is missing from versions" }
|
91
|
+
return
|
92
|
+
end
|
93
|
+
if checksum == existing
|
94
|
+
Bundler::CompactIndexClient.debug { "skipping updating info for #{name} since the versions checksum matches the local checksum" }
|
95
|
+
return
|
96
|
+
end
|
97
|
+
Bundler::CompactIndexClient.debug { "updating info for #{name} since the versions checksum #{existing} != the local checksum #{checksum}" }
|
98
|
+
update(path, "info/#{name}")
|
99
|
+
end
|
100
|
+
|
101
|
+
def url(path)
|
102
|
+
path
|
103
|
+
end
|
104
|
+
|
105
|
+
def synchronize
|
106
|
+
@mutex.synchronize { yield }
|
107
|
+
end
|
108
|
+
end
|
109
|
+
end
|