bundler 2.0.2
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 +7 -0
- data/CHANGELOG.md +3111 -0
- data/LICENSE.md +23 -0
- data/README.md +63 -0
- data/bundler.gemspec +65 -0
- data/exe/bundle +31 -0
- data/exe/bundle_ruby +60 -0
- data/exe/bundler +4 -0
- data/lib/bundler.rb +567 -0
- data/lib/bundler/build_metadata.rb +53 -0
- data/lib/bundler/capistrano.rb +22 -0
- data/lib/bundler/cli.rb +792 -0
- data/lib/bundler/cli/add.rb +35 -0
- data/lib/bundler/cli/binstubs.rb +49 -0
- data/lib/bundler/cli/cache.rb +36 -0
- data/lib/bundler/cli/check.rb +38 -0
- data/lib/bundler/cli/clean.rb +25 -0
- data/lib/bundler/cli/common.rb +102 -0
- data/lib/bundler/cli/config.rb +119 -0
- data/lib/bundler/cli/console.rb +43 -0
- data/lib/bundler/cli/doctor.rb +140 -0
- data/lib/bundler/cli/exec.rb +105 -0
- data/lib/bundler/cli/gem.rb +252 -0
- data/lib/bundler/cli/info.rb +50 -0
- data/lib/bundler/cli/init.rb +47 -0
- data/lib/bundler/cli/inject.rb +60 -0
- data/lib/bundler/cli/install.rb +218 -0
- 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 +26 -0
- data/lib/bundler/cli/outdated.rb +266 -0
- data/lib/bundler/cli/package.rb +49 -0
- data/lib/bundler/cli/platform.rb +46 -0
- 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 +75 -0
- data/lib/bundler/cli/update.rb +91 -0
- data/lib/bundler/cli/viz.rb +31 -0
- 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 +13 -0
- data/lib/bundler/constants.rb +7 -0
- data/lib/bundler/current_ruby.rb +94 -0
- data/lib/bundler/definition.rb +995 -0
- data/lib/bundler/dep_proxy.rb +48 -0
- data/lib/bundler/dependency.rb +139 -0
- data/lib/bundler/deployment.rb +69 -0
- data/lib/bundler/deprecate.rb +44 -0
- data/lib/bundler/dsl.rb +615 -0
- data/lib/bundler/endpoint_specification.rb +141 -0
- data/lib/bundler/env.rb +149 -0
- data/lib/bundler/environment_preserver.rb +59 -0
- data/lib/bundler/errors.rb +158 -0
- data/lib/bundler/feature_flag.rb +75 -0
- data/lib/bundler/fetcher.rb +312 -0
- 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 +131 -0
- data/lib/bundler/gem_helper.rb +217 -0
- data/lib/bundler/gem_helpers.rb +101 -0
- data/lib/bundler/gem_remote_fetcher.rb +43 -0
- data/lib/bundler/gem_tasks.rb +7 -0
- data/lib/bundler/gem_version_promoter.rb +190 -0
- data/lib/bundler/gemdeps.rb +29 -0
- data/lib/bundler/graph.rb +152 -0
- data/lib/bundler/index.rb +213 -0
- data/lib/bundler/injector.rb +253 -0
- data/lib/bundler/inline.rb +74 -0
- data/lib/bundler/installer.rb +318 -0
- data/lib/bundler/installer/gem_installer.rb +85 -0
- data/lib/bundler/installer/parallel_installer.rb +229 -0
- data/lib/bundler/installer/standalone.rb +53 -0
- data/lib/bundler/lazy_specification.rb +123 -0
- data/lib/bundler/lockfile_generator.rb +95 -0
- data/lib/bundler/lockfile_parser.rb +256 -0
- data/lib/bundler/match_platform.rb +24 -0
- data/lib/bundler/mirror.rb +223 -0
- data/lib/bundler/plugin.rb +294 -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 +165 -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 +37 -0
- data/lib/bundler/remote_specification.rb +114 -0
- data/lib/bundler/resolver.rb +373 -0
- data/lib/bundler/resolver/spec_group.rb +106 -0
- data/lib/bundler/retry.rb +66 -0
- data/lib/bundler/ruby_dsl.rb +18 -0
- data/lib/bundler/ruby_version.rb +152 -0
- data/lib/bundler/rubygems_ext.rb +209 -0
- data/lib/bundler/rubygems_gem_installer.rb +99 -0
- data/lib/bundler/rubygems_integration.rb +915 -0
- data/lib/bundler/runtime.rb +322 -0
- data/lib/bundler/settings.rb +464 -0
- data/lib/bundler/settings/validator.rb +102 -0
- data/lib/bundler/setup.rb +28 -0
- data/lib/bundler/shared_helpers.rb +386 -0
- data/lib/bundler/similarity_detector.rb +63 -0
- data/lib/bundler/source.rb +94 -0
- data/lib/bundler/source/gemspec.rb +18 -0
- data/lib/bundler/source/git.rb +329 -0
- data/lib/bundler/source/git/git_proxy.rb +262 -0
- data/lib/bundler/source/metadata.rb +62 -0
- data/lib/bundler/source/path.rb +249 -0
- data/lib/bundler/source/path/installer.rb +74 -0
- data/lib/bundler/source/rubygems.rb +539 -0
- data/lib/bundler/source/rubygems/remote.rb +69 -0
- data/lib/bundler/source_list.rb +186 -0
- data/lib/bundler/spec_set.rb +208 -0
- data/lib/bundler/ssl_certs/.document +1 -0
- data/lib/bundler/ssl_certs/certificate_manager.rb +66 -0
- data/lib/bundler/ssl_certs/index.rubygems.org/GlobalSignRootCA.pem +21 -0
- data/lib/bundler/ssl_certs/rubygems.global.ssl.fastly.net/DigiCertHighAssuranceEVRootCA.pem +23 -0
- data/lib/bundler/ssl_certs/rubygems.org/AddTrustExternalCARoot.pem +25 -0
- data/lib/bundler/stub_specification.rb +108 -0
- data/lib/bundler/templates/.document +1 -0
- data/lib/bundler/templates/Executable +29 -0
- data/lib/bundler/templates/Executable.bundler +105 -0
- data/lib/bundler/templates/Executable.standalone +14 -0
- data/lib/bundler/templates/Gemfile +7 -0
- data/lib/bundler/templates/gems.rb +8 -0
- data/lib/bundler/templates/newgem/CODE_OF_CONDUCT.md.tt +74 -0
- data/lib/bundler/templates/newgem/Gemfile.tt +4 -0
- data/lib/bundler/templates/newgem/LICENSE.txt.tt +21 -0
- data/lib/bundler/templates/newgem/README.md.tt +47 -0
- data/lib/bundler/templates/newgem/Rakefile.tt +29 -0
- data/lib/bundler/templates/newgem/bin/console.tt +14 -0
- data/lib/bundler/templates/newgem/bin/setup.tt +8 -0
- data/lib/bundler/templates/newgem/exe/newgem.tt +3 -0
- data/lib/bundler/templates/newgem/ext/newgem/extconf.rb.tt +3 -0
- data/lib/bundler/templates/newgem/ext/newgem/newgem.c.tt +9 -0
- data/lib/bundler/templates/newgem/ext/newgem/newgem.h.tt +6 -0
- data/lib/bundler/templates/newgem/gitignore.tt +20 -0
- data/lib/bundler/templates/newgem/lib/newgem.rb.tt +13 -0
- data/lib/bundler/templates/newgem/lib/newgem/version.rb.tt +7 -0
- data/lib/bundler/templates/newgem/newgem.gemspec.tt +50 -0
- data/lib/bundler/templates/newgem/rspec.tt +3 -0
- data/lib/bundler/templates/newgem/spec/newgem_spec.rb.tt +9 -0
- data/lib/bundler/templates/newgem/spec/spec_helper.rb.tt +14 -0
- data/lib/bundler/templates/newgem/test/newgem_test.rb.tt +11 -0
- data/lib/bundler/templates/newgem/test/test_helper.rb.tt +8 -0
- data/lib/bundler/templates/newgem/travis.yml.tt +7 -0
- data/lib/bundler/ui.rb +9 -0
- data/lib/bundler/ui/rg_proxy.rb +19 -0
- data/lib/bundler/ui/shell.rb +146 -0
- data/lib/bundler/ui/silent.rb +69 -0
- data/lib/bundler/uri_credentials_filter.rb +37 -0
- data/lib/bundler/vendor/fileutils/lib/fileutils.rb +1741 -0
- data/lib/bundler/vendor/fileutils/lib/fileutils/version.rb +5 -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/lib/molinillo/modules/specification_provider.rb +101 -0
- data/lib/bundler/vendor/molinillo/lib/molinillo/modules/ui.rb +67 -0
- data/lib/bundler/vendor/molinillo/lib/molinillo/resolution.rb +837 -0
- data/lib/bundler/vendor/molinillo/lib/molinillo/resolver.rb +46 -0
- data/lib/bundler/vendor/molinillo/lib/molinillo/state.rb +58 -0
- data/lib/bundler/vendor/net-http-persistent/lib/net/http/faster.rb +27 -0
- data/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb +1233 -0
- data/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/ssl_reuse.rb +129 -0
- data/lib/bundler/vendor/thor/lib/thor.rb +509 -0
- data/lib/bundler/vendor/thor/lib/thor/actions.rb +331 -0
- data/lib/bundler/vendor/thor/lib/thor/actions/create_file.rb +104 -0
- data/lib/bundler/vendor/thor/lib/thor/actions/create_link.rb +60 -0
- data/lib/bundler/vendor/thor/lib/thor/actions/directory.rb +118 -0
- data/lib/bundler/vendor/thor/lib/thor/actions/empty_directory.rb +143 -0
- data/lib/bundler/vendor/thor/lib/thor/actions/file_manipulation.rb +373 -0
- data/lib/bundler/vendor/thor/lib/thor/actions/inject_into_file.rb +109 -0
- data/lib/bundler/vendor/thor/lib/thor/base.rb +678 -0
- data/lib/bundler/vendor/thor/lib/thor/command.rb +135 -0
- data/lib/bundler/vendor/thor/lib/thor/core_ext/hash_with_indifferent_access.rb +97 -0
- 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/lib/thor/error.rb +114 -0
- data/lib/bundler/vendor/thor/lib/thor/group.rb +281 -0
- data/lib/bundler/vendor/thor/lib/thor/invocation.rb +177 -0
- data/lib/bundler/vendor/thor/lib/thor/line_editor.rb +17 -0
- data/lib/bundler/vendor/thor/lib/thor/line_editor/basic.rb +37 -0
- data/lib/bundler/vendor/thor/lib/thor/line_editor/readline.rb +88 -0
- data/lib/bundler/vendor/thor/lib/thor/parser.rb +4 -0
- data/lib/bundler/vendor/thor/lib/thor/parser/argument.rb +70 -0
- data/lib/bundler/vendor/thor/lib/thor/parser/arguments.rb +175 -0
- data/lib/bundler/vendor/thor/lib/thor/parser/option.rb +146 -0
- data/lib/bundler/vendor/thor/lib/thor/parser/options.rb +226 -0
- data/lib/bundler/vendor/thor/lib/thor/rake_compat.rb +71 -0
- data/lib/bundler/vendor/thor/lib/thor/runner.rb +324 -0
- data/lib/bundler/vendor/thor/lib/thor/shell.rb +81 -0
- data/lib/bundler/vendor/thor/lib/thor/shell/basic.rb +482 -0
- data/lib/bundler/vendor/thor/lib/thor/shell/color.rb +149 -0
- data/lib/bundler/vendor/thor/lib/thor/shell/html.rb +126 -0
- data/lib/bundler/vendor/thor/lib/thor/util.rb +268 -0
- data/lib/bundler/vendor/thor/lib/thor/version.rb +3 -0
- data/lib/bundler/vendored_fileutils.rb +9 -0
- data/lib/bundler/vendored_molinillo.rb +4 -0
- data/lib/bundler/vendored_persistent.rb +52 -0
- data/lib/bundler/vendored_thor.rb +8 -0
- data/lib/bundler/version.rb +28 -0
- data/lib/bundler/version_ranges.rb +76 -0
- data/lib/bundler/vlad.rb +17 -0
- data/lib/bundler/worker.rb +106 -0
- 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 +397 -0
- 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 +152 -0
- 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 +378 -0
- 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 +72 -0
- data/man/bundle-platform.1 +61 -0
- data/man/bundle-platform.1.txt +57 -0
- data/man/bundle-platform.ronn +42 -0
- 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 +350 -0
- 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 +111 -0
- data/man/gemfile.5 +689 -0
- data/man/gemfile.5.ronn +521 -0
- data/man/gemfile.5.txt +653 -0
- data/man/index.txt +25 -0
- metadata +463 -0
@@ -0,0 +1,35 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Bundler
|
4
|
+
class CLI::Add
|
5
|
+
def initialize(options, gems)
|
6
|
+
@gems = gems
|
7
|
+
@options = options
|
8
|
+
@options[:group] = @options[:group].split(",").map(&:strip) if !@options[:group].nil? && !@options[:group].empty?
|
9
|
+
end
|
10
|
+
|
11
|
+
def run
|
12
|
+
raise InvalidOption, "You can not specify `--strict` and `--optimistic` at the same time." if @options[:strict] && @options[:optimistic]
|
13
|
+
|
14
|
+
# raise error when no gems are specified
|
15
|
+
raise InvalidOption, "Please specify gems to add." if @gems.empty?
|
16
|
+
|
17
|
+
version = @options[:version].nil? ? nil : @options[:version].split(",").map(&:strip)
|
18
|
+
|
19
|
+
unless version.nil?
|
20
|
+
version.each do |v|
|
21
|
+
raise InvalidOption, "Invalid gem requirement pattern '#{v}'" unless Gem::Requirement::PATTERN =~ v.to_s
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
dependencies = @gems.map {|g| Bundler::Dependency.new(g, version, @options) }
|
26
|
+
|
27
|
+
Injector.inject(dependencies,
|
28
|
+
:conservative_versioning => @options[:version].nil?, # Perform conservative versioning only when version is not specified
|
29
|
+
:optimistic => @options[:optimistic],
|
30
|
+
:strict => @options[:strict])
|
31
|
+
|
32
|
+
Installer.install(Bundler.root, Bundler.definition) unless @options["skip-install"]
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
@@ -0,0 +1,49 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Bundler
|
4
|
+
class CLI::Binstubs
|
5
|
+
attr_reader :options, :gems
|
6
|
+
def initialize(options, gems)
|
7
|
+
@options = options
|
8
|
+
@gems = gems
|
9
|
+
end
|
10
|
+
|
11
|
+
def run
|
12
|
+
Bundler.definition.validate_runtime!
|
13
|
+
path_option = options["path"]
|
14
|
+
path_option = nil if path_option && path_option.empty?
|
15
|
+
Bundler.settings.set_command_option :bin, path_option if options["path"]
|
16
|
+
Bundler.settings.set_command_option_if_given :shebang, options["shebang"]
|
17
|
+
installer = Installer.new(Bundler.root, Bundler.definition)
|
18
|
+
|
19
|
+
installer_opts = { :force => options[:force], :binstubs_cmd => true }
|
20
|
+
|
21
|
+
if options[:all]
|
22
|
+
raise InvalidOption, "Cannot specify --all with specific gems" unless gems.empty?
|
23
|
+
@gems = Bundler.definition.specs.map(&:name)
|
24
|
+
installer_opts.delete(:binstubs_cmd)
|
25
|
+
elsif gems.empty?
|
26
|
+
Bundler.ui.error "`bundle binstubs` needs at least one gem to run."
|
27
|
+
exit 1
|
28
|
+
end
|
29
|
+
|
30
|
+
gems.each do |gem_name|
|
31
|
+
spec = Bundler.definition.specs.find {|s| s.name == gem_name }
|
32
|
+
unless spec
|
33
|
+
raise GemNotFound, Bundler::CLI::Common.gem_not_found_message(
|
34
|
+
gem_name, Bundler.definition.specs
|
35
|
+
)
|
36
|
+
end
|
37
|
+
|
38
|
+
if options[:standalone]
|
39
|
+
next Bundler.ui.warn("Sorry, Bundler can only be run via RubyGems.") if gem_name == "bundler"
|
40
|
+
Bundler.settings.temporary(:path => (Bundler.settings[:path] || Bundler.root)) do
|
41
|
+
installer.generate_standalone_bundler_executable_stubs(spec)
|
42
|
+
end
|
43
|
+
else
|
44
|
+
installer.generate_bundler_executable_stubs(spec, installer_opts)
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Bundler
|
4
|
+
class CLI::Cache
|
5
|
+
attr_reader :options
|
6
|
+
def initialize(options)
|
7
|
+
@options = options
|
8
|
+
end
|
9
|
+
|
10
|
+
def run
|
11
|
+
Bundler.definition.validate_runtime!
|
12
|
+
Bundler.definition.resolve_with_cache!
|
13
|
+
setup_cache_all
|
14
|
+
Bundler.settings.set_command_option_if_given :cache_all_platforms, options["all-platforms"]
|
15
|
+
Bundler.load.cache
|
16
|
+
Bundler.settings.set_command_option_if_given :no_prune, options["no-prune"]
|
17
|
+
Bundler.load.lock
|
18
|
+
rescue GemNotFound => e
|
19
|
+
Bundler.ui.error(e.message)
|
20
|
+
Bundler.ui.warn "Run `bundle install` to install missing gems."
|
21
|
+
exit 1
|
22
|
+
end
|
23
|
+
|
24
|
+
private
|
25
|
+
|
26
|
+
def setup_cache_all
|
27
|
+
Bundler.settings.set_command_option_if_given :cache_all, options[:all]
|
28
|
+
|
29
|
+
if Bundler.definition.has_local_dependencies? && !Bundler.feature_flag.cache_all?
|
30
|
+
Bundler.ui.warn "Your Gemfile contains path and git dependencies. If you want " \
|
31
|
+
"to package them as well, please pass the --all flag. This will be the default " \
|
32
|
+
"on Bundler 2.0."
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Bundler
|
4
|
+
class CLI::Check
|
5
|
+
attr_reader :options
|
6
|
+
|
7
|
+
def initialize(options)
|
8
|
+
@options = options
|
9
|
+
end
|
10
|
+
|
11
|
+
def run
|
12
|
+
Bundler.settings.set_command_option_if_given :path, options[:path]
|
13
|
+
|
14
|
+
begin
|
15
|
+
definition = Bundler.definition
|
16
|
+
definition.validate_runtime!
|
17
|
+
not_installed = definition.missing_specs
|
18
|
+
rescue GemNotFound, VersionConflict
|
19
|
+
Bundler.ui.error "Bundler can't satisfy your Gemfile's dependencies."
|
20
|
+
Bundler.ui.warn "Install missing gems with `bundle install`."
|
21
|
+
exit 1
|
22
|
+
end
|
23
|
+
|
24
|
+
if not_installed.any?
|
25
|
+
Bundler.ui.error "The following gems are missing"
|
26
|
+
not_installed.each {|s| Bundler.ui.error " * #{s.name} (#{s.version})" }
|
27
|
+
Bundler.ui.warn "Install missing gems with `bundle install`"
|
28
|
+
exit 1
|
29
|
+
elsif !Bundler.default_lockfile.file? && Bundler.frozen_bundle?
|
30
|
+
Bundler.ui.error "This bundle has been frozen, but there is no #{Bundler.default_lockfile.relative_path_from(SharedHelpers.pwd)} present"
|
31
|
+
exit 1
|
32
|
+
else
|
33
|
+
Bundler.load.lock(:preserve_unknown_sections => true) unless options[:"dry-run"]
|
34
|
+
Bundler.ui.info "The Gemfile's dependencies are satisfied"
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Bundler
|
4
|
+
class CLI::Clean
|
5
|
+
attr_reader :options
|
6
|
+
|
7
|
+
def initialize(options)
|
8
|
+
@options = options
|
9
|
+
end
|
10
|
+
|
11
|
+
def run
|
12
|
+
require_path_or_force unless options[:"dry-run"]
|
13
|
+
Bundler.load.clean(options[:"dry-run"])
|
14
|
+
end
|
15
|
+
|
16
|
+
protected
|
17
|
+
|
18
|
+
def require_path_or_force
|
19
|
+
return unless Bundler.use_system_gems? && !options[:force]
|
20
|
+
raise InvalidOption, "Cleaning all the gems on your system is dangerous! " \
|
21
|
+
"If you're sure you want to remove every system gem not in this " \
|
22
|
+
"bundle, run `bundle clean --force`."
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,102 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Bundler
|
4
|
+
module CLI::Common
|
5
|
+
def self.output_post_install_messages(messages)
|
6
|
+
return if Bundler.settings["ignore_messages"]
|
7
|
+
messages.to_a.each do |name, msg|
|
8
|
+
print_post_install_message(name, msg) unless Bundler.settings["ignore_messages.#{name}"]
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
def self.print_post_install_message(name, msg)
|
13
|
+
Bundler.ui.confirm "Post-install message from #{name}:"
|
14
|
+
Bundler.ui.info msg
|
15
|
+
end
|
16
|
+
|
17
|
+
def self.output_without_groups_message
|
18
|
+
return if Bundler.settings[:without].empty?
|
19
|
+
Bundler.ui.confirm without_groups_message
|
20
|
+
end
|
21
|
+
|
22
|
+
def self.without_groups_message
|
23
|
+
groups = Bundler.settings[:without]
|
24
|
+
group_list = [groups[0...-1].join(", "), groups[-1..-1]].
|
25
|
+
reject {|s| s.to_s.empty? }.join(" and ")
|
26
|
+
group_str = (groups.size == 1) ? "group" : "groups"
|
27
|
+
"Gems in the #{group_str} #{group_list} were not installed."
|
28
|
+
end
|
29
|
+
|
30
|
+
def self.select_spec(name, regex_match = nil)
|
31
|
+
specs = []
|
32
|
+
regexp = Regexp.new(name) if regex_match
|
33
|
+
|
34
|
+
Bundler.definition.specs.each do |spec|
|
35
|
+
return spec if spec.name == name
|
36
|
+
specs << spec if regexp && spec.name =~ regexp
|
37
|
+
end
|
38
|
+
|
39
|
+
case specs.count
|
40
|
+
when 0
|
41
|
+
raise GemNotFound, gem_not_found_message(name, Bundler.definition.dependencies)
|
42
|
+
when 1
|
43
|
+
specs.first
|
44
|
+
else
|
45
|
+
ask_for_spec_from(specs)
|
46
|
+
end
|
47
|
+
rescue RegexpError
|
48
|
+
raise GemNotFound, gem_not_found_message(name, Bundler.definition.dependencies)
|
49
|
+
end
|
50
|
+
|
51
|
+
def self.ask_for_spec_from(specs)
|
52
|
+
if !$stdout.tty? && ENV["BUNDLE_SPEC_RUN"].nil?
|
53
|
+
raise GemNotFound, gem_not_found_message(name, Bundler.definition.dependencies)
|
54
|
+
end
|
55
|
+
|
56
|
+
specs.each_with_index do |spec, index|
|
57
|
+
Bundler.ui.info "#{index.succ} : #{spec.name}", true
|
58
|
+
end
|
59
|
+
Bundler.ui.info "0 : - exit -", true
|
60
|
+
|
61
|
+
num = Bundler.ui.ask("> ").to_i
|
62
|
+
num > 0 ? specs[num - 1] : nil
|
63
|
+
end
|
64
|
+
|
65
|
+
def self.gem_not_found_message(missing_gem_name, alternatives)
|
66
|
+
require "bundler/similarity_detector"
|
67
|
+
message = "Could not find gem '#{missing_gem_name}'."
|
68
|
+
alternate_names = alternatives.map {|a| a.respond_to?(:name) ? a.name : a }
|
69
|
+
suggestions = SimilarityDetector.new(alternate_names).similar_word_list(missing_gem_name)
|
70
|
+
message += "\nDid you mean #{suggestions}?" if suggestions
|
71
|
+
message
|
72
|
+
end
|
73
|
+
|
74
|
+
def self.ensure_all_gems_in_lockfile!(names, locked_gems = Bundler.locked_gems)
|
75
|
+
locked_names = locked_gems.specs.map(&:name).uniq
|
76
|
+
names.-(locked_names).each do |g|
|
77
|
+
raise GemNotFound, gem_not_found_message(g, locked_names)
|
78
|
+
end
|
79
|
+
end
|
80
|
+
|
81
|
+
def self.configure_gem_version_promoter(definition, options)
|
82
|
+
patch_level = patch_level_options(options)
|
83
|
+
raise InvalidOption, "Provide only one of the following options: #{patch_level.join(", ")}" unless patch_level.length <= 1
|
84
|
+
definition.gem_version_promoter.tap do |gvp|
|
85
|
+
gvp.level = patch_level.first || :major
|
86
|
+
gvp.strict = options[:strict] || options["update-strict"]
|
87
|
+
end
|
88
|
+
end
|
89
|
+
|
90
|
+
def self.patch_level_options(options)
|
91
|
+
[:major, :minor, :patch].select {|v| options.keys.include?(v.to_s) }
|
92
|
+
end
|
93
|
+
|
94
|
+
def self.clean_after_install?
|
95
|
+
clean = Bundler.settings[:clean]
|
96
|
+
return clean unless clean.nil?
|
97
|
+
clean ||= Bundler.feature_flag.auto_clean_without_path? && Bundler.settings[:path].nil?
|
98
|
+
clean &&= !Bundler.use_system_gems?
|
99
|
+
clean
|
100
|
+
end
|
101
|
+
end
|
102
|
+
end
|
@@ -0,0 +1,119 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Bundler
|
4
|
+
class CLI::Config
|
5
|
+
attr_reader :name, :options, :scope, :thor
|
6
|
+
attr_accessor :args
|
7
|
+
|
8
|
+
def initialize(options, args, thor)
|
9
|
+
@options = options
|
10
|
+
@args = args
|
11
|
+
@thor = thor
|
12
|
+
@name = peek = args.shift
|
13
|
+
@scope = "global"
|
14
|
+
return unless peek && peek.start_with?("--")
|
15
|
+
@name = args.shift
|
16
|
+
@scope = peek[2..-1]
|
17
|
+
end
|
18
|
+
|
19
|
+
def run
|
20
|
+
unless name
|
21
|
+
confirm_all
|
22
|
+
return
|
23
|
+
end
|
24
|
+
|
25
|
+
unless valid_scope?(scope)
|
26
|
+
Bundler.ui.error "Invalid scope --#{scope} given. Please use --local or --global."
|
27
|
+
exit 1
|
28
|
+
end
|
29
|
+
|
30
|
+
if scope == "delete"
|
31
|
+
Bundler.settings.set_local(name, nil)
|
32
|
+
Bundler.settings.set_global(name, nil)
|
33
|
+
return
|
34
|
+
end
|
35
|
+
|
36
|
+
if args.empty?
|
37
|
+
if options[:parseable]
|
38
|
+
if value = Bundler.settings[name]
|
39
|
+
Bundler.ui.info("#{name}=#{value}")
|
40
|
+
end
|
41
|
+
return
|
42
|
+
end
|
43
|
+
|
44
|
+
confirm(name)
|
45
|
+
return
|
46
|
+
end
|
47
|
+
|
48
|
+
Bundler.ui.info(message) if message
|
49
|
+
Bundler.settings.send("set_#{scope}", name, new_value)
|
50
|
+
end
|
51
|
+
|
52
|
+
private
|
53
|
+
|
54
|
+
def confirm_all
|
55
|
+
if @options[:parseable]
|
56
|
+
thor.with_padding do
|
57
|
+
Bundler.settings.all.each do |setting|
|
58
|
+
val = Bundler.settings[setting]
|
59
|
+
Bundler.ui.info "#{setting}=#{val}"
|
60
|
+
end
|
61
|
+
end
|
62
|
+
else
|
63
|
+
Bundler.ui.confirm "Settings are listed in order of priority. The top value will be used.\n"
|
64
|
+
Bundler.settings.all.each do |setting|
|
65
|
+
Bundler.ui.confirm "#{setting}"
|
66
|
+
show_pretty_values_for(setting)
|
67
|
+
Bundler.ui.confirm ""
|
68
|
+
end
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
def confirm(name)
|
73
|
+
Bundler.ui.confirm "Settings for `#{name}` in order of priority. The top value will be used"
|
74
|
+
show_pretty_values_for(name)
|
75
|
+
end
|
76
|
+
|
77
|
+
def new_value
|
78
|
+
pathname = Pathname.new(args.join(" "))
|
79
|
+
if name.start_with?("local.") && pathname.directory?
|
80
|
+
pathname.expand_path.to_s
|
81
|
+
else
|
82
|
+
args.join(" ")
|
83
|
+
end
|
84
|
+
end
|
85
|
+
|
86
|
+
def message
|
87
|
+
locations = Bundler.settings.locations(name)
|
88
|
+
if @options[:parseable]
|
89
|
+
"#{name}=#{new_value}" if new_value
|
90
|
+
elsif scope == "global"
|
91
|
+
if locations[:local]
|
92
|
+
"Your application has set #{name} to #{locations[:local].inspect}. " \
|
93
|
+
"This will override the global value you are currently setting"
|
94
|
+
elsif locations[:env]
|
95
|
+
"You have a bundler environment variable for #{name} set to " \
|
96
|
+
"#{locations[:env].inspect}. This will take precedence over the global value you are setting"
|
97
|
+
elsif locations[:global] && locations[:global] != args.join(" ")
|
98
|
+
"You are replacing the current global value of #{name}, which is currently " \
|
99
|
+
"#{locations[:global].inspect}"
|
100
|
+
end
|
101
|
+
elsif scope == "local" && locations[:local] != args.join(" ")
|
102
|
+
"You are replacing the current local value of #{name}, which is currently " \
|
103
|
+
"#{locations[:local].inspect}"
|
104
|
+
end
|
105
|
+
end
|
106
|
+
|
107
|
+
def show_pretty_values_for(setting)
|
108
|
+
thor.with_padding do
|
109
|
+
Bundler.settings.pretty_values_for(setting).each do |line|
|
110
|
+
Bundler.ui.info line
|
111
|
+
end
|
112
|
+
end
|
113
|
+
end
|
114
|
+
|
115
|
+
def valid_scope?(scope)
|
116
|
+
%w[delete local global].include?(scope)
|
117
|
+
end
|
118
|
+
end
|
119
|
+
end
|
@@ -0,0 +1,43 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Bundler
|
4
|
+
class CLI::Console
|
5
|
+
attr_reader :options, :group
|
6
|
+
def initialize(options, group)
|
7
|
+
@options = options
|
8
|
+
@group = group
|
9
|
+
end
|
10
|
+
|
11
|
+
def run
|
12
|
+
Bundler::SharedHelpers.major_deprecation 3, "bundle console will be replaced " \
|
13
|
+
"by `bin/console` generated by `bundle gem <name>`"
|
14
|
+
|
15
|
+
group ? Bundler.require(:default, *(group.split.map!(&:to_sym))) : Bundler.require
|
16
|
+
ARGV.clear
|
17
|
+
|
18
|
+
console = get_console(Bundler.settings[:console] || "irb")
|
19
|
+
console.start
|
20
|
+
end
|
21
|
+
|
22
|
+
def get_console(name)
|
23
|
+
require name
|
24
|
+
get_constant(name)
|
25
|
+
rescue LoadError
|
26
|
+
Bundler.ui.error "Couldn't load console #{name}, falling back to irb"
|
27
|
+
require "irb"
|
28
|
+
get_constant("irb")
|
29
|
+
end
|
30
|
+
|
31
|
+
def get_constant(name)
|
32
|
+
const_name = {
|
33
|
+
"pry" => :Pry,
|
34
|
+
"ripl" => :Ripl,
|
35
|
+
"irb" => :IRB,
|
36
|
+
}[name]
|
37
|
+
Object.const_get(const_name)
|
38
|
+
rescue NameError
|
39
|
+
Bundler.ui.error "Could not find constant #{const_name}"
|
40
|
+
exit 1
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|