bundler 1.15.4 → 1.16.0.pre.1
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 +43 -0
- data/README.md +12 -7
- data/exe/bundle +1 -1
- data/exe/bundle_ruby +4 -3
- data/lib/bundler.rb +47 -37
- data/lib/bundler/build_metadata.rb +38 -0
- data/lib/bundler/capistrano.rb +5 -0
- data/lib/bundler/cli.rb +155 -67
- data/lib/bundler/cli/add.rb +0 -1
- data/lib/bundler/cli/binstubs.rb +9 -7
- data/lib/bundler/cli/cache.rb +5 -4
- data/lib/bundler/cli/check.rb +3 -5
- data/lib/bundler/cli/clean.rb +5 -6
- data/lib/bundler/cli/common.rb +11 -2
- data/lib/bundler/cli/config.rb +2 -1
- data/lib/bundler/cli/console.rb +2 -1
- data/lib/bundler/cli/doctor.rb +1 -0
- data/lib/bundler/cli/exec.rb +2 -1
- data/lib/bundler/cli/gem.rb +3 -2
- data/lib/bundler/cli/info.rb +0 -1
- data/lib/bundler/cli/init.rb +17 -6
- data/lib/bundler/cli/inject.rb +1 -0
- data/lib/bundler/cli/install.rb +61 -61
- data/lib/bundler/cli/issue.rb +1 -1
- data/lib/bundler/cli/list.rb +22 -0
- data/lib/bundler/cli/lock.rb +0 -1
- data/lib/bundler/cli/open.rb +2 -2
- data/lib/bundler/cli/outdated.rb +13 -8
- data/lib/bundler/cli/package.rb +9 -6
- data/lib/bundler/cli/platform.rb +1 -0
- data/lib/bundler/cli/plugin.rb +1 -0
- data/lib/bundler/cli/pristine.rb +9 -2
- data/lib/bundler/cli/show.rb +0 -1
- data/lib/bundler/cli/update.rb +31 -5
- data/lib/bundler/cli/viz.rb +1 -0
- data/lib/bundler/compact_index_client.rb +1 -0
- data/lib/bundler/compact_index_client/cache.rb +1 -0
- data/lib/bundler/compact_index_client/updater.rb +3 -2
- data/lib/bundler/compatibility_guard.rb +14 -0
- data/lib/bundler/constants.rb +1 -0
- data/lib/bundler/current_ruby.rb +5 -4
- data/lib/bundler/definition.rb +140 -95
- data/lib/bundler/dep_proxy.rb +2 -0
- data/lib/bundler/dependency.rb +6 -7
- data/lib/bundler/deployment.rb +1 -1
- data/lib/bundler/deprecate.rb +1 -0
- data/lib/bundler/dsl.rb +97 -62
- data/lib/bundler/endpoint_specification.rb +9 -0
- data/lib/bundler/env.rb +63 -27
- data/lib/bundler/environment_preserver.rb +26 -6
- data/lib/bundler/errors.rb +1 -0
- data/lib/bundler/feature_flag.rb +39 -4
- data/lib/bundler/fetcher.rb +15 -8
- data/lib/bundler/fetcher/base.rb +1 -0
- data/lib/bundler/fetcher/compact_index.rb +2 -11
- data/lib/bundler/fetcher/dependency.rb +1 -0
- data/lib/bundler/fetcher/downloader.rb +1 -0
- data/lib/bundler/fetcher/index.rb +1 -0
- data/lib/bundler/friendly_errors.rb +2 -1
- data/lib/bundler/gem_helper.rb +14 -9
- data/lib/bundler/gem_helpers.rb +1 -0
- data/lib/bundler/gem_remote_fetcher.rb +1 -0
- data/lib/bundler/gem_tasks.rb +1 -0
- data/lib/bundler/gem_version_promoter.rb +1 -0
- data/lib/bundler/gemdeps.rb +1 -0
- data/lib/bundler/graph.rb +1 -0
- data/lib/bundler/index.rb +15 -8
- data/lib/bundler/injector.rb +25 -22
- data/lib/bundler/inline.rb +5 -7
- data/lib/bundler/installer.rb +93 -45
- data/lib/bundler/installer/gem_installer.rb +2 -0
- data/lib/bundler/installer/parallel_installer.rb +73 -42
- data/lib/bundler/installer/standalone.rb +1 -0
- data/lib/bundler/lazy_specification.rb +2 -1
- data/lib/bundler/lockfile_generator.rb +95 -0
- data/lib/bundler/lockfile_parser.rb +10 -4
- data/lib/bundler/match_platform.rb +1 -0
- data/lib/bundler/mirror.rb +6 -3
- data/lib/bundler/plugin.rb +1 -0
- data/lib/bundler/plugin/api/source.rb +8 -0
- data/lib/bundler/plugin/installer.rb +7 -6
- data/lib/bundler/plugin/source_list.rb +7 -8
- data/lib/bundler/process_lock.rb +24 -0
- data/lib/bundler/psyched_yaml.rb +1 -0
- data/lib/bundler/remote_specification.rb +1 -0
- data/lib/bundler/resolver.rb +138 -191
- data/lib/bundler/resolver/spec_group.rb +111 -0
- data/lib/bundler/retry.rb +1 -0
- data/lib/bundler/ruby_dsl.rb +1 -0
- data/lib/bundler/ruby_version.rb +1 -0
- data/lib/bundler/rubygems_ext.rb +5 -4
- data/lib/bundler/rubygems_gem_installer.rb +23 -0
- data/lib/bundler/rubygems_integration.rb +56 -27
- data/lib/bundler/runtime.rb +3 -5
- data/lib/bundler/settings.rb +177 -76
- data/lib/bundler/settings/validator.rb +79 -0
- data/lib/bundler/setup.rb +1 -0
- data/lib/bundler/shared_helpers.rb +86 -26
- data/lib/bundler/similarity_detector.rb +1 -0
- data/lib/bundler/source.rb +32 -0
- data/lib/bundler/source/gemspec.rb +1 -0
- data/lib/bundler/source/git.rb +21 -16
- data/lib/bundler/source/git/git_proxy.rb +14 -10
- data/lib/bundler/source/metadata.rb +63 -0
- data/lib/bundler/source/path.rb +8 -8
- data/lib/bundler/source/path/installer.rb +2 -0
- data/lib/bundler/source/rubygems.rb +131 -84
- data/lib/bundler/source/rubygems/remote.rb +3 -0
- data/lib/bundler/source_list.rb +75 -15
- data/lib/bundler/spec_set.rb +2 -1
- data/lib/bundler/ssl_certs/certificate_manager.rb +2 -1
- data/lib/bundler/stub_specification.rb +1 -0
- data/lib/bundler/templates/Executable +4 -0
- data/lib/bundler/templates/Executable.bundler +105 -0
- data/lib/bundler/templates/Gemfile +1 -0
- data/lib/bundler/templates/gems.rb +8 -0
- data/lib/bundler/templates/newgem/README.md.tt +1 -1
- data/lib/bundler/templates/newgem/gitignore.tt +0 -1
- data/lib/bundler/templates/newgem/newgem.gemspec.tt +4 -1
- data/lib/bundler/templates/newgem/rspec.tt +1 -0
- data/lib/bundler/templates/newgem/spec/newgem_spec.rb.tt +0 -2
- data/lib/bundler/ui.rb +1 -0
- data/lib/bundler/ui/rg_proxy.rb +1 -0
- data/lib/bundler/ui/shell.rb +15 -4
- data/lib/bundler/ui/silent.rb +1 -0
- data/lib/bundler/uri_credentials_filter.rb +1 -0
- data/lib/bundler/vendor/fileutils/lib/fileutils.rb +1638 -0
- data/lib/bundler/vendor/molinillo/lib/molinillo.rb +2 -0
- data/lib/bundler/vendor/molinillo/lib/molinillo/compatibility.rb +26 -0
- data/lib/bundler/vendor/molinillo/lib/molinillo/delegates/resolution_state.rb +7 -0
- data/lib/bundler/vendor/molinillo/lib/molinillo/delegates/specification_provider.rb +1 -0
- data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph.rb +3 -2
- data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/action.rb +1 -0
- data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/add_edge_no_circular.rb +1 -0
- data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/add_vertex.rb +1 -0
- data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/delete_edge.rb +1 -0
- data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/detach_vertex_named.rb +1 -0
- data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/log.rb +1 -0
- data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/set_payload.rb +1 -0
- data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/tag.rb +1 -0
- data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/vertex.rb +3 -2
- data/lib/bundler/vendor/molinillo/lib/molinillo/errors.rb +69 -6
- data/lib/bundler/vendor/molinillo/lib/molinillo/gem_metadata.rb +2 -1
- data/lib/bundler/vendor/molinillo/lib/molinillo/modules/specification_provider.rb +1 -0
- data/lib/bundler/vendor/molinillo/lib/molinillo/modules/ui.rb +3 -1
- data/lib/bundler/vendor/molinillo/lib/molinillo/resolution.rb +487 -148
- data/lib/bundler/vendor/molinillo/lib/molinillo/resolver.rb +1 -0
- data/lib/bundler/vendor/molinillo/lib/molinillo/state.rb +8 -4
- data/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb +1 -1
- data/lib/bundler/vendored_fileutils.rb +9 -0
- data/lib/bundler/vendored_molinillo.rb +1 -0
- data/lib/bundler/vendored_persistent.rb +34 -0
- data/lib/bundler/vendored_thor.rb +1 -0
- data/lib/bundler/version.rb +6 -2
- data/lib/bundler/version_ranges.rb +1 -0
- data/lib/bundler/vlad.rb +5 -0
- data/lib/bundler/worker.rb +1 -0
- data/lib/bundler/yaml_serializer.rb +3 -3
- data/man/bundle-add.1 +43 -0
- data/man/bundle-add.1.txt +40 -0
- data/man/bundle-binstubs.1 +40 -0
- data/man/bundle-binstubs.1.txt +48 -0
- data/man/bundle-binstubs.ronn +14 -0
- data/man/bundle-check.1 +31 -0
- data/man/bundle-check.1.txt +32 -0
- data/man/bundle-clean.1 +24 -0
- data/man/bundle-clean.1.txt +26 -0
- data/man/bundle-config.1 +455 -0
- data/man/bundle-config.1.txt +491 -0
- data/man/bundle-config.ronn +133 -79
- data/man/bundle-exec.1 +165 -0
- data/man/bundle-exec.1.txt +178 -0
- data/man/bundle-exec.ronn +7 -0
- data/man/bundle-gem.1 +80 -0
- data/man/bundle-gem.1.txt +91 -0
- data/man/bundle-gem.ronn +2 -1
- data/man/bundle-info.1 +20 -0
- data/man/bundle-info.1.txt +21 -0
- data/man/bundle-init.1 +20 -0
- data/man/bundle-init.1.txt +24 -0
- data/man/bundle-inject.1 +33 -0
- data/man/bundle-inject.1.txt +32 -0
- data/man/bundle-install.1 +305 -0
- data/man/bundle-install.1.txt +385 -0
- data/man/bundle-install.ronn +32 -32
- data/man/bundle-list.1 +20 -0
- data/man/bundle-list.1.txt +21 -0
- data/man/bundle-list.ronn +15 -0
- data/man/bundle-lock.1 +84 -0
- data/man/bundle-lock.1.txt +93 -0
- data/man/bundle-open.1 +32 -0
- data/man/bundle-open.1.txt +29 -0
- data/man/bundle-outdated.1 +151 -0
- data/man/bundle-outdated.1.txt +127 -0
- data/man/bundle-outdated.ronn +1 -1
- data/man/bundle-package.1 +55 -0
- data/man/bundle-package.1.txt +79 -0
- data/man/bundle-package.ronn +5 -0
- data/man/bundle-platform.1 +61 -0
- data/man/bundle-platform.1.txt +57 -0
- data/man/bundle-pristine.1 +34 -0
- data/man/bundle-pristine.1.txt +44 -0
- data/man/bundle-pristine.ronn +24 -3
- data/man/bundle-show.1 +23 -0
- data/man/bundle-show.1.txt +25 -0
- data/man/bundle-update.1 +390 -0
- data/man/bundle-update.1.txt +386 -0
- data/man/bundle-update.ronn +2 -2
- data/man/bundle-viz.1 +39 -0
- data/man/bundle-viz.1.txt +38 -0
- data/man/bundle-viz.ronn +5 -5
- data/man/bundle.1 +132 -0
- data/man/bundle.1.txt +113 -0
- data/man/bundle.ronn +5 -2
- data/man/gemfile.5 +679 -0
- data/man/gemfile.5.ronn +31 -0
- data/man/gemfile.5.txt +636 -0
- data/man/index.txt +23 -0
- metadata +21 -36
- data/.codeclimate.yml +0 -25
- data/.gitignore +0 -18
- data/.rspec +0 -3
- data/.rubocop.yml +0 -131
- data/.rubocop_todo.yml +0 -418
- data/.travis.yml +0 -122
- data/CODE_OF_CONDUCT.md +0 -42
- data/CONTRIBUTING.md +0 -17
- data/Rakefile +0 -338
- data/bin/rake +0 -19
- data/bin/rspec +0 -15
- data/bin/rubocop +0 -17
- data/bin/with_rubygems +0 -39
- data/bundler.gemspec +0 -48
- data/doc/README.md +0 -30
- data/doc/TROUBLESHOOTING.md +0 -64
- data/doc/contributing/BUG_TRIAGE.md +0 -36
- data/doc/contributing/COMMUNITY.md +0 -13
- data/doc/contributing/GETTING_HELP.md +0 -11
- data/doc/contributing/HOW_YOU_CAN_HELP.md +0 -27
- data/doc/contributing/ISSUES.md +0 -51
- data/doc/contributing/README.md +0 -38
- data/doc/development/NEW_FEATURES.md +0 -10
- data/doc/development/PULL_REQUESTS.md +0 -40
- data/doc/development/README.md +0 -19
- data/doc/development/RELEASING.md +0 -9
- data/doc/development/SETUP.md +0 -27
- data/doc/documentation/README.md +0 -29
- data/doc/documentation/VISION.md +0 -26
- data/doc/documentation/WRITING.md +0 -54
- data/task/release.rake +0 -116
data/lib/bundler/cli/add.rb
CHANGED
data/lib/bundler/cli/binstubs.rb
CHANGED
@@ -1,5 +1,4 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
-
require "bundler/cli/common"
|
3
2
|
|
4
3
|
module Bundler
|
5
4
|
class CLI::Binstubs
|
@@ -11,8 +10,10 @@ module Bundler
|
|
11
10
|
|
12
11
|
def run
|
13
12
|
Bundler.definition.validate_runtime!
|
14
|
-
|
15
|
-
|
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"]
|
16
17
|
installer = Installer.new(Bundler.root, Bundler.definition)
|
17
18
|
|
18
19
|
if gems.empty?
|
@@ -28,10 +29,11 @@ module Bundler
|
|
28
29
|
)
|
29
30
|
end
|
30
31
|
|
31
|
-
if
|
32
|
-
Bundler.ui.warn
|
33
|
-
|
34
|
-
|
32
|
+
if options[:standalone]
|
33
|
+
next Bundler.ui.warn("Sorry, Bundler can only be run via RubyGems.") if gem_name == "bundler"
|
34
|
+
Bundler.settings.temporary(:path => (Bundler.settings[:path] || Bundler.root)) do
|
35
|
+
installer.generate_standalone_bundler_executable_stubs(spec)
|
36
|
+
end
|
35
37
|
else
|
36
38
|
installer.generate_bundler_executable_stubs(spec, :force => options[:force], :binstubs_cmd => true)
|
37
39
|
end
|
data/lib/bundler/cli/cache.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
module Bundler
|
3
4
|
class CLI::Cache
|
4
5
|
attr_reader :options
|
@@ -10,9 +11,9 @@ module Bundler
|
|
10
11
|
Bundler.definition.validate_runtime!
|
11
12
|
Bundler.definition.resolve_with_cache!
|
12
13
|
setup_cache_all
|
13
|
-
Bundler.settings
|
14
|
+
Bundler.settings.set_command_option_if_given :cache_all_platforms, options["all-platforms"]
|
14
15
|
Bundler.load.cache
|
15
|
-
Bundler.settings
|
16
|
+
Bundler.settings.set_command_option_if_given :no_prune, options["no-prune"]
|
16
17
|
Bundler.load.lock
|
17
18
|
rescue GemNotFound => e
|
18
19
|
Bundler.ui.error(e.message)
|
@@ -23,9 +24,9 @@ module Bundler
|
|
23
24
|
private
|
24
25
|
|
25
26
|
def setup_cache_all
|
26
|
-
Bundler.settings
|
27
|
+
Bundler.settings.set_command_option_if_given :cache_all, options[:all]
|
27
28
|
|
28
|
-
if Bundler.definition.has_local_dependencies? && !Bundler.
|
29
|
+
if Bundler.definition.has_local_dependencies? && !Bundler.feature_flag.cache_all?
|
29
30
|
Bundler.ui.warn "Your Gemfile contains path and git dependencies. If you want " \
|
30
31
|
"to package them as well, please pass the --all flag. This will be the default " \
|
31
32
|
"on Bundler 2.0."
|
data/lib/bundler/cli/check.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
module Bundler
|
3
4
|
class CLI::Check
|
4
5
|
attr_reader :options
|
@@ -8,10 +9,7 @@ module Bundler
|
|
8
9
|
end
|
9
10
|
|
10
11
|
def run
|
11
|
-
|
12
|
-
Bundler.settings[:path] = File.expand_path(options[:path])
|
13
|
-
Bundler.settings[:disable_shared_gems] = true
|
14
|
-
end
|
12
|
+
Bundler.settings.set_command_option_if_given :path, options[:path]
|
15
13
|
|
16
14
|
begin
|
17
15
|
definition = Bundler.definition
|
@@ -28,7 +26,7 @@ module Bundler
|
|
28
26
|
not_installed.each {|s| Bundler.ui.error " * #{s.name} (#{s.version})" }
|
29
27
|
Bundler.ui.warn "Install missing gems with `bundle install`"
|
30
28
|
exit 1
|
31
|
-
elsif !Bundler.default_lockfile.file? && Bundler.
|
29
|
+
elsif !Bundler.default_lockfile.file? && Bundler.frozen?
|
32
30
|
Bundler.ui.error "This bundle has been frozen, but there is no #{Bundler.default_lockfile.relative_path_from(SharedHelpers.pwd)} present"
|
33
31
|
exit 1
|
34
32
|
else
|
data/lib/bundler/cli/clean.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
module Bundler
|
3
4
|
class CLI::Clean
|
4
5
|
attr_reader :options
|
@@ -15,12 +16,10 @@ module Bundler
|
|
15
16
|
protected
|
16
17
|
|
17
18
|
def require_path_or_force
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
exit 1
|
23
|
-
end
|
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`."
|
24
23
|
end
|
25
24
|
end
|
26
25
|
end
|
data/lib/bundler/cli/common.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
module Bundler
|
3
4
|
module CLI::Common
|
4
5
|
def self.output_post_install_messages(messages)
|
@@ -14,12 +15,12 @@ module Bundler
|
|
14
15
|
end
|
15
16
|
|
16
17
|
def self.output_without_groups_message
|
17
|
-
return
|
18
|
+
return if Bundler.settings[:without].empty?
|
18
19
|
Bundler.ui.confirm without_groups_message
|
19
20
|
end
|
20
21
|
|
21
22
|
def self.without_groups_message
|
22
|
-
groups = Bundler.settings
|
23
|
+
groups = Bundler.settings[:without]
|
23
24
|
group_list = [groups[0...-1].join(", "), groups[-1..-1]].
|
24
25
|
reject {|s| s.to_s.empty? }.join(" and ")
|
25
26
|
group_str = (groups.size == 1) ? "group" : "groups"
|
@@ -89,5 +90,13 @@ module Bundler
|
|
89
90
|
def self.patch_level_options(options)
|
90
91
|
[:major, :minor, :patch].select {|v| options.keys.include?(v.to_s) }
|
91
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
|
92
101
|
end
|
93
102
|
end
|
data/lib/bundler/cli/config.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
module Bundler
|
3
4
|
class CLI::Config
|
4
5
|
attr_reader :name, :options, :scope, :thor
|
@@ -112,7 +113,7 @@ module Bundler
|
|
112
113
|
end
|
113
114
|
|
114
115
|
def valid_scope?(scope)
|
115
|
-
%w
|
116
|
+
%w[delete local global].include?(scope)
|
116
117
|
end
|
117
118
|
end
|
118
119
|
end
|
data/lib/bundler/cli/console.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
module Bundler
|
3
4
|
class CLI::Console
|
4
5
|
attr_reader :options, :group
|
@@ -8,7 +9,7 @@ module Bundler
|
|
8
9
|
end
|
9
10
|
|
10
11
|
def run
|
11
|
-
Bundler::SharedHelpers.major_deprecation "bundle console will be replaced " \
|
12
|
+
Bundler::SharedHelpers.major_deprecation 2, "bundle console will be replaced " \
|
12
13
|
"by `bin/console` generated by `bundle gem <name>`"
|
13
14
|
|
14
15
|
group ? Bundler.require(:default, *(group.split.map!(&:to_sym))) : Bundler.require
|
data/lib/bundler/cli/doctor.rb
CHANGED
data/lib/bundler/cli/exec.rb
CHANGED
@@ -1,11 +1,12 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
require "bundler/current_ruby"
|
3
4
|
|
4
5
|
module Bundler
|
5
6
|
class CLI::Exec
|
6
7
|
attr_reader :options, :args, :cmd
|
7
8
|
|
8
|
-
RESERVED_SIGNALS = %w
|
9
|
+
RESERVED_SIGNALS = %w[SEGV BUS ILL FPE VTALRM KILL STOP].freeze
|
9
10
|
|
10
11
|
def initialize(options, args)
|
11
12
|
@options = options
|
data/lib/bundler/cli/gem.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
require "pathname"
|
3
4
|
|
4
5
|
module Bundler
|
@@ -71,10 +72,10 @@ module Bundler
|
|
71
72
|
"bin/setup.tt" => "bin/setup"
|
72
73
|
}
|
73
74
|
|
74
|
-
executables = %w
|
75
|
+
executables = %w[
|
75
76
|
bin/console
|
76
77
|
bin/setup
|
77
|
-
|
78
|
+
]
|
78
79
|
|
79
80
|
templates.merge!("gitignore.tt" => ".gitignore") if Bundler.git_present?
|
80
81
|
|
data/lib/bundler/cli/info.rb
CHANGED
data/lib/bundler/cli/init.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
module Bundler
|
3
4
|
class CLI::Init
|
4
5
|
attr_reader :options
|
@@ -7,8 +8,8 @@ module Bundler
|
|
7
8
|
end
|
8
9
|
|
9
10
|
def run
|
10
|
-
if File.exist?(
|
11
|
-
Bundler.ui.error "
|
11
|
+
if File.exist?(gemfile)
|
12
|
+
Bundler.ui.error "#{gemfile} already exists at #{File.expand_path(gemfile)}"
|
12
13
|
exit 1
|
13
14
|
end
|
14
15
|
|
@@ -21,14 +22,24 @@ module Bundler
|
|
21
22
|
|
22
23
|
spec = Bundler.load_gemspec_uncached(gemspec)
|
23
24
|
|
24
|
-
|
25
|
-
File.open("Gemfile", "wb") do |file|
|
25
|
+
File.open(gemfile, "wb") do |file|
|
26
26
|
file << "# Generated from #{gemspec}\n"
|
27
27
|
file << spec.to_gemfile
|
28
28
|
end
|
29
29
|
else
|
30
|
-
|
31
|
-
|
30
|
+
FileUtils.cp(File.expand_path("../../templates/#{gemfile}", __FILE__), gemfile)
|
31
|
+
end
|
32
|
+
|
33
|
+
puts "Writing new #{gemfile} to #{SharedHelpers.pwd}/#{gemfile}"
|
34
|
+
end
|
35
|
+
|
36
|
+
private
|
37
|
+
|
38
|
+
def gemfile
|
39
|
+
@gemfile ||= begin
|
40
|
+
Bundler.default_gemfile
|
41
|
+
rescue GemfileNotFound
|
42
|
+
Bundler.feature_flag.init_gems_rb? ? "gems.rb" : "Gemfile"
|
32
43
|
end
|
33
44
|
end
|
34
45
|
end
|
data/lib/bundler/cli/inject.rb
CHANGED
data/lib/bundler/cli/install.rb
CHANGED
@@ -1,5 +1,4 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
-
require "bundler/cli/common"
|
3
2
|
|
4
3
|
module Bundler
|
5
4
|
class CLI::Install
|
@@ -13,17 +12,9 @@ module Bundler
|
|
13
12
|
|
14
13
|
warn_if_root
|
15
14
|
|
16
|
-
[:with, :without].each do |option|
|
17
|
-
if options[option]
|
18
|
-
options[option] = options[option].join(":").tr(" ", ":").split(":")
|
19
|
-
end
|
20
|
-
end
|
21
|
-
|
22
|
-
check_for_group_conflicts
|
23
|
-
|
24
15
|
normalize_groups
|
25
16
|
|
26
|
-
|
17
|
+
Bundler::SharedHelpers.set_env "RB_USER_INSTALL", "1" if Bundler::FREEBSD
|
27
18
|
|
28
19
|
# Disable color in deployment mode
|
29
20
|
Bundler.ui.shell = Thor::Shell::Basic.new if options[:deployment]
|
@@ -32,22 +23,28 @@ module Bundler
|
|
32
23
|
|
33
24
|
check_trust_policy
|
34
25
|
|
35
|
-
if options[:deployment] || options[:frozen]
|
26
|
+
if options[:deployment] || options[:frozen] || Bundler.frozen?
|
36
27
|
unless Bundler.default_lockfile.exist?
|
37
|
-
flag
|
38
|
-
|
28
|
+
flag = "--deployment flag" if options[:deployment]
|
29
|
+
flag ||= "--frozen flag" if options[:frozen]
|
30
|
+
flag ||= "deployment setting"
|
31
|
+
raise ProductionError, "The #{flag} requires a #{Bundler.default_lockfile.relative_path_from(SharedHelpers.pwd)}. Please make " \
|
39
32
|
"sure you have checked your #{Bundler.default_lockfile.relative_path_from(SharedHelpers.pwd)} into version control " \
|
40
33
|
"before deploying."
|
41
34
|
end
|
42
35
|
|
43
36
|
options[:local] = true if Bundler.app_cache.exist?
|
44
37
|
|
45
|
-
Bundler.
|
38
|
+
if Bundler.feature_flag.deployment_means_frozen?
|
39
|
+
Bundler.settings.set_command_option :deployment, true
|
40
|
+
else
|
41
|
+
Bundler.settings.set_command_option :frozen, true
|
42
|
+
end
|
46
43
|
end
|
47
44
|
|
48
45
|
# When install is called with --no-deployment, disable deployment mode
|
49
46
|
if options[:deployment] == false
|
50
|
-
Bundler.settings.
|
47
|
+
Bundler.settings.set_command_option :frozen, nil
|
51
48
|
options[:system] = true
|
52
49
|
end
|
53
50
|
|
@@ -56,7 +53,7 @@ module Bundler
|
|
56
53
|
Bundler::Fetcher.disable_endpoint = options["full-index"]
|
57
54
|
|
58
55
|
if options["binstubs"]
|
59
|
-
Bundler::SharedHelpers.major_deprecation
|
56
|
+
Bundler::SharedHelpers.major_deprecation 2,
|
60
57
|
"The --binstubs option will be removed in favor of `bundle binstubs`"
|
61
58
|
end
|
62
59
|
|
@@ -66,24 +63,24 @@ module Bundler
|
|
66
63
|
definition.validate_runtime!
|
67
64
|
|
68
65
|
installer = Installer.install(Bundler.root, definition, options)
|
69
|
-
Bundler.load.cache if Bundler.app_cache.exist? && !options["no-cache"] && !Bundler.
|
66
|
+
Bundler.load.cache if Bundler.app_cache.exist? && !options["no-cache"] && !Bundler.frozen?
|
70
67
|
|
71
68
|
Bundler.ui.confirm "Bundle complete! #{dependencies_count_for(definition)}, #{gems_installed_for(definition)}."
|
72
69
|
Bundler::CLI::Common.output_without_groups_message
|
73
70
|
|
74
|
-
if Bundler.
|
75
|
-
absolute_path = File.expand_path(Bundler.settings[:path])
|
76
|
-
relative_path = absolute_path.sub(File.expand_path(".") + File::SEPARATOR, "." + File::SEPARATOR)
|
77
|
-
Bundler.ui.confirm "Bundled gems are installed into #{relative_path}."
|
78
|
-
else
|
71
|
+
if Bundler.use_system_gems?
|
79
72
|
Bundler.ui.confirm "Use `bundle info [gemname]` to see where a bundled gem is installed."
|
73
|
+
else
|
74
|
+
absolute_path = File.expand_path(Bundler.configured_bundle_path.base_path)
|
75
|
+
relative_path = absolute_path.sub(File.expand_path(".") + File::SEPARATOR, "." + File::SEPARATOR)
|
76
|
+
Bundler.ui.confirm "Bundled gems are installed into `#{relative_path}`"
|
80
77
|
end
|
81
78
|
|
82
79
|
Bundler::CLI::Common.output_post_install_messages installer.post_install_messages
|
83
80
|
|
84
81
|
warn_ambiguous_gems
|
85
82
|
|
86
|
-
if
|
83
|
+
if CLI::Common.clean_after_install?
|
87
84
|
require "bundler/cli/clean"
|
88
85
|
Bundler::CLI::Clean.new(options).run
|
89
86
|
end
|
@@ -124,15 +121,11 @@ module Bundler
|
|
124
121
|
"#{count} #{count == 1 ? "gem" : "gems"} now installed"
|
125
122
|
end
|
126
123
|
|
127
|
-
def
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
" The offending groups are: #{conflicting_groups.join(", ")}."
|
133
|
-
exit 1
|
134
|
-
end
|
135
|
-
end
|
124
|
+
def check_for_group_conflicts_in_cli_options
|
125
|
+
conflicting_groups = Array(options[:without]) & Array(options[:with])
|
126
|
+
return if conflicting_groups.empty?
|
127
|
+
raise InvalidOption, "You can't list a group in both with and without." \
|
128
|
+
" The offending groups are: #{conflicting_groups.join(", ")}."
|
136
129
|
end
|
137
130
|
|
138
131
|
def check_for_options_conflicts
|
@@ -145,28 +138,29 @@ module Bundler
|
|
145
138
|
end
|
146
139
|
|
147
140
|
def check_trust_policy
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
exit 1
|
153
|
-
end
|
154
|
-
Bundler.settings["trust-policy"] = options["trust-policy"]
|
155
|
-
else
|
156
|
-
Bundler.settings["trust-policy"] = nil if Bundler.settings["trust-policy"]
|
141
|
+
trust_policy = options["trust-policy"]
|
142
|
+
unless Bundler.rubygems.security_policies.keys.unshift(nil).include?(trust_policy)
|
143
|
+
raise InvalidOption, "RubyGems doesn't know about trust policy '#{trust_policy}'. " \
|
144
|
+
"The known policies are: #{Bundler.rubygems.security_policies.keys.join(", ")}."
|
157
145
|
end
|
146
|
+
Bundler.settings.set_command_option_if_given :"trust-policy", trust_policy
|
158
147
|
end
|
159
148
|
|
160
149
|
def normalize_groups
|
161
|
-
|
162
|
-
|
150
|
+
options[:with] &&= options[:with].join(":").tr(" ", ":").split(":")
|
151
|
+
options[:without] &&= options[:without].join(":").tr(" ", ":").split(":")
|
152
|
+
|
153
|
+
check_for_group_conflicts_in_cli_options
|
163
154
|
|
164
|
-
with
|
165
|
-
|
155
|
+
Bundler.settings.set_command_option :with, nil if options[:with] == []
|
156
|
+
Bundler.settings.set_command_option :without, nil if options[:without] == []
|
157
|
+
|
158
|
+
with = options.fetch(:with, [])
|
159
|
+
with |= Bundler.settings[:with].map(&:to_s)
|
166
160
|
with -= options[:without] if options[:without]
|
167
161
|
|
168
|
-
without = options.fetch(
|
169
|
-
without |= Bundler.settings
|
162
|
+
without = options.fetch(:without, [])
|
163
|
+
without |= Bundler.settings[:without].map(&:to_s)
|
170
164
|
without -= options[:with] if options[:with]
|
171
165
|
|
172
166
|
options[:with] = with
|
@@ -174,28 +168,34 @@ module Bundler
|
|
174
168
|
end
|
175
169
|
|
176
170
|
def normalize_settings
|
177
|
-
Bundler.settings
|
178
|
-
Bundler.settings
|
179
|
-
Bundler.settings
|
180
|
-
Bundler.settings
|
171
|
+
Bundler.settings.set_command_option :path, nil if options[:system]
|
172
|
+
Bundler.settings.set_command_option :path, "vendor/bundle" if options[:deployment]
|
173
|
+
Bundler.settings.set_command_option_if_given :path, options["path"]
|
174
|
+
Bundler.settings.set_command_option :path, "bundle" if options["standalone"] && Bundler.settings[:path].nil?
|
181
175
|
|
182
|
-
|
183
|
-
|
176
|
+
bin_option = options["binstubs"]
|
177
|
+
bin_option = nil if bin_option && bin_option.empty?
|
178
|
+
Bundler.settings.set_command_option :bin, bin_option if options["binstubs"]
|
184
179
|
|
185
|
-
Bundler.settings
|
180
|
+
Bundler.settings.set_command_option_if_given :shebang, options["shebang"]
|
186
181
|
|
187
|
-
Bundler.settings
|
182
|
+
Bundler.settings.set_command_option_if_given :jobs, options["jobs"]
|
188
183
|
|
189
|
-
Bundler.settings
|
184
|
+
Bundler.settings.set_command_option_if_given :no_prune, options["no-prune"]
|
190
185
|
|
191
|
-
Bundler.settings
|
186
|
+
Bundler.settings.set_command_option_if_given :no_install, options["no-install"]
|
192
187
|
|
193
|
-
Bundler.settings
|
188
|
+
Bundler.settings.set_command_option_if_given :clean, options["clean"]
|
194
189
|
|
195
|
-
Bundler.settings
|
196
|
-
|
190
|
+
unless Bundler.settings[:without] == options[:without] && Bundler.settings[:with] == options[:with]
|
191
|
+
# need to nil them out first to get around validation for backwards compatibility
|
192
|
+
Bundler.settings.set_command_option :without, nil
|
193
|
+
Bundler.settings.set_command_option :with, nil
|
194
|
+
Bundler.settings.set_command_option :without, options[:without] - options[:with]
|
195
|
+
Bundler.settings.set_command_option :with, options[:with]
|
196
|
+
end
|
197
197
|
|
198
|
-
|
198
|
+
options[:force] = options[:redownload]
|
199
199
|
end
|
200
200
|
|
201
201
|
def warn_ambiguous_gems
|