bundler 1.17.3 → 2.1.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 +4 -4
- data/CHANGELOG.md +794 -570
- data/LICENSE.md +18 -19
- data/README.md +9 -8
- data/bundler.gemspec +8 -25
- data/exe/bundle +19 -3
- data/lib/bundler.rb +202 -87
- data/lib/bundler/build_metadata.rb +3 -3
- data/lib/bundler/capistrano.rb +4 -4
- data/lib/bundler/cli.rb +178 -140
- data/lib/bundler/cli/add.rb +28 -16
- data/lib/bundler/cli/cache.rb +25 -13
- data/lib/bundler/cli/common.rb +11 -12
- data/lib/bundler/cli/config.rb +161 -86
- data/lib/bundler/cli/console.rb +1 -1
- data/lib/bundler/cli/doctor.rb +4 -4
- data/lib/bundler/cli/exec.rb +4 -16
- data/lib/bundler/cli/gem.rb +5 -5
- data/lib/bundler/cli/info.rb +17 -5
- data/lib/bundler/cli/init.rb +1 -1
- data/lib/bundler/cli/install.rb +11 -10
- data/lib/bundler/cli/issue.rb +3 -3
- data/lib/bundler/cli/open.rb +10 -6
- data/lib/bundler/cli/outdated.rb +85 -81
- data/lib/bundler/cli/plugin.rb +9 -2
- data/lib/bundler/cli/pristine.rb +1 -1
- data/lib/bundler/cli/show.rb +1 -1
- data/lib/bundler/cli/update.rb +32 -12
- data/lib/bundler/compact_index_client.rb +25 -9
- data/lib/bundler/compact_index_client/updater.rb +2 -6
- data/lib/bundler/current_ruby.rb +9 -7
- data/lib/bundler/definition.rb +35 -26
- data/lib/bundler/dependency.rb +16 -4
- data/lib/bundler/deployment.rb +1 -1
- data/lib/bundler/dsl.rb +16 -40
- data/lib/bundler/env.rb +8 -13
- data/lib/bundler/environment_preserver.rb +0 -1
- data/lib/bundler/feature_flag.rb +23 -34
- data/lib/bundler/fetcher.rb +16 -13
- data/lib/bundler/fetcher/compact_index.rb +26 -12
- data/lib/bundler/fetcher/dependency.rb +1 -1
- data/lib/bundler/fetcher/downloader.rb +5 -2
- data/lib/bundler/fetcher/index.rb +5 -3
- data/lib/bundler/friendly_errors.rb +6 -7
- data/lib/bundler/gem_helper.rb +40 -25
- data/lib/bundler/gem_helpers.rb +2 -4
- data/lib/bundler/gem_tasks.rb +1 -1
- data/lib/bundler/gem_version_promoter.rb +3 -3
- data/lib/bundler/graph.rb +2 -2
- data/lib/bundler/injector.rb +10 -8
- data/lib/bundler/inline.rb +40 -30
- data/lib/bundler/installer.rb +7 -14
- data/lib/bundler/installer/gem_installer.rb +5 -1
- data/lib/bundler/installer/parallel_installer.rb +4 -8
- data/lib/bundler/installer/standalone.rb +1 -2
- data/lib/bundler/lazy_specification.rb +2 -3
- data/lib/bundler/lockfile_parser.rb +14 -21
- data/lib/bundler/match_platform.rb +1 -1
- data/lib/bundler/mirror.rb +3 -3
- data/lib/bundler/plugin.rb +42 -29
- data/lib/bundler/plugin/api.rb +1 -1
- data/lib/bundler/plugin/api/source.rb +4 -6
- data/lib/bundler/plugin/index.rb +14 -3
- data/lib/bundler/plugin/installer.rb +28 -15
- data/lib/bundler/psyched_yaml.rb +1 -1
- data/lib/bundler/remote_specification.rb +0 -2
- data/lib/bundler/resolver.rb +72 -24
- data/lib/bundler/resolver/spec_group.rb +3 -2
- data/lib/bundler/retry.rb +2 -2
- data/lib/bundler/ruby_version.rb +4 -19
- data/lib/bundler/rubygems_ext.rb +11 -67
- data/lib/bundler/rubygems_gem_installer.rb +1 -8
- data/lib/bundler/rubygems_integration.rb +148 -400
- data/lib/bundler/runtime.rb +2 -9
- data/lib/bundler/settings.rb +22 -51
- data/lib/bundler/setup.rb +11 -12
- data/lib/bundler/shared_helpers.rb +51 -77
- data/lib/bundler/similarity_detector.rb +2 -2
- data/lib/bundler/source.rb +5 -5
- data/lib/bundler/source/git.rb +24 -17
- data/lib/bundler/source/git/git_proxy.rb +38 -41
- data/lib/bundler/source/metadata.rb +7 -2
- data/lib/bundler/source/path.rb +13 -8
- data/lib/bundler/source/rubygems.rb +14 -8
- data/lib/bundler/source/rubygems/remote.rb +2 -3
- data/lib/bundler/source_list.rb +9 -12
- data/lib/bundler/spec_set.rb +23 -12
- data/lib/bundler/stub_specification.rb +18 -30
- data/lib/bundler/templates/Executable.bundler +23 -14
- data/lib/bundler/templates/newgem/CODE_OF_CONDUCT.md.tt +3 -3
- data/lib/bundler/templates/newgem/Gemfile.tt +8 -2
- data/lib/bundler/templates/newgem/README.md.tt +4 -3
- data/lib/bundler/templates/newgem/newgem.gemspec.tt +6 -27
- data/lib/bundler/templates/newgem/test/test_helper.rb.tt +1 -1
- data/lib/bundler/templates/newgem/travis.yml.tt +0 -1
- data/lib/bundler/ui.rb +3 -3
- data/lib/bundler/ui/rg_proxy.rb +1 -1
- data/lib/bundler/ui/shell.rb +4 -8
- data/lib/bundler/uri_credentials_filter.rb +7 -3
- data/lib/bundler/vendor/connection_pool/lib/connection_pool.rb +161 -0
- data/lib/bundler/vendor/connection_pool/lib/connection_pool/monotonic_time.rb +66 -0
- data/lib/bundler/vendor/connection_pool/lib/connection_pool/timed_stack.rb +176 -0
- data/lib/bundler/vendor/connection_pool/lib/connection_pool/version.rb +3 -0
- data/lib/bundler/vendor/fileutils/lib/fileutils.rb +273 -147
- data/lib/bundler/vendor/molinillo/lib/molinillo.rb +6 -6
- data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph.rb +2 -2
- data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/add_edge_no_circular.rb +1 -1
- data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/add_vertex.rb +1 -1
- data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/delete_edge.rb +1 -1
- data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/detach_vertex_named.rb +1 -1
- data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/log.rb +6 -6
- data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/set_payload.rb +1 -1
- data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/tag.rb +1 -1
- data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/vertex.rb +30 -8
- data/lib/bundler/vendor/molinillo/lib/molinillo/errors.rb +1 -1
- data/lib/bundler/vendor/molinillo/lib/molinillo/resolution.rb +4 -4
- data/lib/bundler/vendor/molinillo/lib/molinillo/resolver.rb +2 -2
- data/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb +273 -304
- data/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/connection.rb +40 -0
- data/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/pool.rb +53 -0
- data/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/timed_stack_multi.rb +79 -0
- data/lib/bundler/vendor/thor/lib/thor.rb +19 -4
- data/lib/bundler/vendor/thor/lib/thor/actions.rb +27 -12
- data/lib/bundler/vendor/thor/lib/thor/actions/create_file.rb +1 -1
- data/lib/bundler/vendor/thor/lib/thor/actions/create_link.rb +1 -1
- data/lib/bundler/vendor/thor/lib/thor/actions/directory.rb +7 -17
- data/lib/bundler/vendor/thor/lib/thor/actions/file_manipulation.rb +16 -7
- data/lib/bundler/vendor/thor/lib/thor/actions/inject_into_file.rb +19 -8
- data/lib/bundler/vendor/thor/lib/thor/base.rb +54 -43
- data/lib/bundler/vendor/thor/lib/thor/command.rb +21 -14
- data/lib/bundler/vendor/thor/lib/thor/error.rb +78 -0
- data/lib/bundler/vendor/thor/lib/thor/group.rb +3 -3
- data/lib/bundler/vendor/thor/lib/thor/invocation.rb +1 -0
- data/lib/bundler/vendor/thor/lib/thor/line_editor.rb +2 -2
- data/lib/bundler/vendor/thor/lib/thor/line_editor/basic.rb +1 -1
- data/lib/bundler/vendor/thor/lib/thor/line_editor/readline.rb +6 -6
- data/lib/bundler/vendor/thor/lib/thor/nested_context.rb +29 -0
- data/lib/bundler/vendor/thor/lib/thor/parser.rb +4 -4
- data/lib/bundler/vendor/thor/lib/thor/parser/arguments.rb +2 -2
- data/lib/bundler/vendor/thor/lib/thor/parser/option.rb +20 -7
- data/lib/bundler/vendor/thor/lib/thor/parser/options.rb +20 -5
- data/lib/bundler/vendor/thor/lib/thor/rake_compat.rb +1 -0
- data/lib/bundler/vendor/thor/lib/thor/runner.rb +15 -14
- data/lib/bundler/vendor/thor/lib/thor/shell.rb +4 -4
- data/lib/bundler/vendor/thor/lib/thor/shell/basic.rb +62 -8
- data/lib/bundler/vendor/thor/lib/thor/shell/color.rb +6 -2
- data/lib/bundler/vendor/thor/lib/thor/shell/html.rb +3 -3
- data/lib/bundler/vendor/thor/lib/thor/util.rb +18 -2
- data/lib/bundler/vendor/thor/lib/thor/version.rb +1 -1
- data/lib/bundler/vendor/uri/lib/uri.rb +104 -0
- data/lib/bundler/vendor/uri/lib/uri/common.rb +744 -0
- data/lib/bundler/vendor/uri/lib/uri/file.rb +94 -0
- data/lib/bundler/vendor/uri/lib/uri/ftp.rb +267 -0
- data/lib/bundler/vendor/uri/lib/uri/generic.rb +1568 -0
- data/lib/bundler/vendor/uri/lib/uri/http.rb +88 -0
- data/lib/bundler/vendor/uri/lib/uri/https.rb +23 -0
- data/lib/bundler/vendor/uri/lib/uri/ldap.rb +261 -0
- data/lib/bundler/vendor/uri/lib/uri/ldaps.rb +21 -0
- data/lib/bundler/vendor/uri/lib/uri/mailto.rb +294 -0
- data/lib/bundler/vendor/uri/lib/uri/rfc2396_parser.rb +546 -0
- data/lib/bundler/vendor/uri/lib/uri/rfc3986_parser.rb +125 -0
- data/lib/bundler/vendor/uri/lib/uri/version.rb +6 -0
- data/lib/bundler/vendored_fileutils.rb +1 -6
- data/lib/bundler/vendored_molinillo.rb +1 -1
- data/lib/bundler/vendored_persistent.rb +7 -5
- data/lib/bundler/vendored_thor.rb +2 -2
- data/lib/bundler/vendored_uri.rb +4 -0
- data/lib/bundler/version.rb +1 -20
- data/lib/bundler/version_ranges.rb +51 -5
- data/lib/bundler/vlad.rb +2 -2
- data/lib/bundler/worker.rb +1 -3
- data/lib/bundler/yaml_serializer.rb +2 -3
- data/man/bundle-add.1 +10 -2
- data/man/bundle-add.1.txt +11 -5
- data/man/bundle-add.ronn +7 -1
- data/man/bundle-binstubs.1 +2 -2
- data/man/bundle-binstubs.1.txt +2 -2
- data/man/bundle-binstubs.ronn +1 -1
- data/man/bundle-cache.1 +55 -0
- data/man/bundle-cache.1.txt +78 -0
- data/man/{bundle-package.ronn → bundle-cache.ronn} +15 -15
- data/man/bundle-check.1 +1 -1
- data/man/bundle-check.1.txt +6 -6
- data/man/bundle-clean.1 +1 -1
- data/man/bundle-clean.1.txt +1 -1
- data/man/bundle-config.1 +36 -36
- data/man/bundle-config.1.txt +66 -67
- data/man/bundle-config.ronn +42 -40
- data/man/bundle-doctor.1 +1 -1
- data/man/bundle-doctor.1.txt +1 -1
- data/man/bundle-exec.1 +2 -2
- data/man/bundle-exec.1.txt +2 -2
- data/man/bundle-exec.ronn +1 -1
- data/man/bundle-gem.1 +1 -1
- data/man/bundle-gem.1.txt +3 -3
- data/man/bundle-info.1 +1 -1
- data/man/bundle-info.1.txt +1 -1
- data/man/bundle-init.1 +2 -2
- data/man/bundle-init.1.txt +2 -2
- data/man/bundle-init.ronn +1 -1
- data/man/bundle-inject.1 +1 -1
- data/man/bundle-inject.1.txt +1 -1
- data/man/bundle-install.1 +8 -5
- data/man/bundle-install.1.txt +56 -51
- data/man/bundle-install.ronn +9 -4
- data/man/bundle-list.1 +1 -1
- data/man/bundle-list.1.txt +1 -1
- data/man/bundle-lock.1 +1 -1
- data/man/bundle-lock.1.txt +16 -16
- data/man/bundle-open.1 +1 -1
- data/man/bundle-open.1.txt +1 -1
- data/man/bundle-outdated.1 +1 -1
- data/man/bundle-outdated.1.txt +1 -1
- data/man/bundle-platform.1 +1 -1
- data/man/bundle-platform.1.txt +1 -1
- data/man/bundle-pristine.1 +1 -1
- data/man/bundle-pristine.1.txt +1 -1
- data/man/bundle-remove.1 +1 -1
- data/man/bundle-remove.1.txt +1 -1
- data/man/bundle-show.1 +1 -1
- data/man/bundle-show.1.txt +1 -1
- data/man/bundle-update.1 +4 -4
- data/man/bundle-update.1.txt +64 -65
- data/man/bundle-update.ronn +3 -3
- data/man/bundle-viz.1 +1 -1
- data/man/bundle-viz.1.txt +1 -1
- data/man/bundle.1 +3 -3
- data/man/bundle.1.txt +8 -8
- data/man/bundle.ronn +2 -2
- data/man/gemfile.5 +17 -20
- data/man/gemfile.5.ronn +14 -18
- data/man/gemfile.5.txt +108 -112
- data/man/index.txt +1 -1
- metadata +34 -110
- data/exe/bundle_ruby +0 -60
- data/lib/bundler/cli/package.rb +0 -49
- data/lib/bundler/compatibility_guard.rb +0 -14
- data/lib/bundler/gem_remote_fetcher.rb +0 -43
- data/lib/bundler/ssl_certs/.document +0 -1
- data/lib/bundler/ssl_certs/certificate_manager.rb +0 -66
- data/lib/bundler/ssl_certs/index.rubygems.org/GlobalSignRootCA.pem +0 -21
- data/lib/bundler/ssl_certs/rubygems.global.ssl.fastly.net/DigiCertHighAssuranceEVRootCA.pem +0 -23
- data/lib/bundler/ssl_certs/rubygems.org/AddTrustExternalCARoot.pem +0 -25
- data/lib/bundler/vendor/net-http-persistent/lib/net/http/faster.rb +0 -27
- data/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/ssl_reuse.rb +0 -129
- data/lib/bundler/vendor/thor/lib/thor/core_ext/io_binary_read.rb +0 -12
- data/lib/bundler/vendor/thor/lib/thor/core_ext/ordered_hash.rb +0 -129
- data/man/bundle-package.1 +0 -55
- data/man/bundle-package.1.txt +0 -79
@@ -1,8 +1,6 @@
|
|
1
|
-
# encoding: utf-8
|
2
1
|
# frozen_string_literal: true
|
3
2
|
|
4
|
-
|
5
|
-
require "bundler/vendored_thor"
|
3
|
+
require_relative "vendored_thor"
|
6
4
|
|
7
5
|
module Bundler
|
8
6
|
module FriendlyErrors
|
@@ -17,7 +15,7 @@ module Bundler
|
|
17
15
|
Bundler.ui.error error.message
|
18
16
|
when GemRequireError
|
19
17
|
Bundler.ui.error error.message
|
20
|
-
Bundler.ui.trace error.orig_exception
|
18
|
+
Bundler.ui.trace error.orig_exception
|
21
19
|
when BundlerError
|
22
20
|
Bundler.ui.error error.message, :wrap => true
|
23
21
|
Bundler.ui.trace error
|
@@ -29,7 +27,7 @@ module Bundler
|
|
29
27
|
Bundler.ui.warn <<-WARN, :wrap => true
|
30
28
|
You must recompile Ruby with OpenSSL support or change the sources in your \
|
31
29
|
Gemfile from 'https' to 'http'. Instructions for compiling with OpenSSL \
|
32
|
-
using RVM are available at
|
30
|
+
using RVM are available at https://rvm.io/packages/openssl.
|
33
31
|
WARN
|
34
32
|
Bundler.ui.trace error
|
35
33
|
when Interrupt
|
@@ -45,7 +43,7 @@ module Bundler
|
|
45
43
|
"Alternatively, you can increase the amount of memory the JVM is able to use by running Bundler with jruby -J-Xmx1024m -S bundle (JRuby defaults to 500MB)."
|
46
44
|
else request_issue_report_for(error)
|
47
45
|
end
|
48
|
-
rescue
|
46
|
+
rescue StandardError
|
49
47
|
raise error
|
50
48
|
end
|
51
49
|
|
@@ -115,6 +113,7 @@ module Bundler
|
|
115
113
|
def issues_url(exception)
|
116
114
|
message = exception.message.lines.first.tr(":", " ").chomp
|
117
115
|
message = message.split("-").first if exception.is_a?(Errno)
|
116
|
+
require "cgi"
|
118
117
|
"https://github.com/bundler/bundler/search?q=" \
|
119
118
|
"#{CGI.escape(message)}&type=Issues"
|
120
119
|
end
|
@@ -124,7 +123,7 @@ module Bundler
|
|
124
123
|
yield
|
125
124
|
rescue SignalException
|
126
125
|
raise
|
127
|
-
rescue Exception => e
|
126
|
+
rescue Exception => e # rubocop:disable Lint/RescueException
|
128
127
|
FriendlyErrors.log_error(e)
|
129
128
|
exit FriendlyErrors.exit_status(e)
|
130
129
|
end
|
data/lib/bundler/gem_helper.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
|
4
|
-
require "
|
3
|
+
require_relative "../bundler"
|
4
|
+
require "shellwords"
|
5
5
|
|
6
6
|
module Bundler
|
7
7
|
class GemHelper
|
@@ -25,7 +25,6 @@ module Bundler
|
|
25
25
|
attr_reader :spec_path, :base, :gemspec
|
26
26
|
|
27
27
|
def initialize(base = nil, name = nil)
|
28
|
-
Bundler.ui = UI::Shell.new
|
29
28
|
@base = (base ||= SharedHelpers.pwd)
|
30
29
|
gemspecs = name ? [File.join(base, "#{name}.gemspec")] : Dir[File.join(base, "{,*}.gemspec")]
|
31
30
|
raise "Unable to determine name from existing gemspec. Use :name => 'gemname' in #install_tasks to manually set it." unless gemspecs.size == 1
|
@@ -74,7 +73,7 @@ module Bundler
|
|
74
73
|
|
75
74
|
def build_gem
|
76
75
|
file_name = nil
|
77
|
-
sh("
|
76
|
+
sh("#{gem_command} build -V #{spec_path}".shellsplit) do
|
78
77
|
file_name = File.basename(built_gem_path)
|
79
78
|
SharedHelpers.filesystem_access(File.join(base, "pkg")) {|p| FileUtils.mkdir_p(p) }
|
80
79
|
FileUtils.mv(built_gem_path, "pkg")
|
@@ -85,21 +84,25 @@ module Bundler
|
|
85
84
|
|
86
85
|
def install_gem(built_gem_path = nil, local = false)
|
87
86
|
built_gem_path ||= build_gem
|
88
|
-
|
89
|
-
|
87
|
+
cmd = "#{gem_command} install #{built_gem_path}"
|
88
|
+
cmd += " --local" if local
|
89
|
+
_, status = sh_with_status(cmd.shellsplit)
|
90
|
+
unless status.success?
|
91
|
+
raise "Couldn't install gem, run `gem install #{built_gem_path}' for more detailed output"
|
92
|
+
end
|
90
93
|
Bundler.ui.confirm "#{name} (#{version}) installed."
|
91
94
|
end
|
92
95
|
|
93
96
|
protected
|
94
97
|
|
95
98
|
def rubygem_push(path)
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
+
cmd = %W[#{gem_command} push #{path}]
|
100
|
+
cmd << "--key" << gem_key if gem_key
|
101
|
+
cmd << "--host" << allowed_push_host if allowed_push_host
|
99
102
|
unless allowed_push_host || Bundler.user_home.join(".gem/credentials").file?
|
100
103
|
raise "Your rubygems.org credentials aren't set. Run `gem push` to set them."
|
101
104
|
end
|
102
|
-
|
105
|
+
sh_with_input(cmd)
|
103
106
|
Bundler.ui.confirm "Pushed #{name} #{version} to #{gem_push_host}"
|
104
107
|
end
|
105
108
|
|
@@ -127,12 +130,14 @@ module Bundler
|
|
127
130
|
|
128
131
|
def perform_git_push(options = "")
|
129
132
|
cmd = "git push #{options}"
|
130
|
-
out,
|
131
|
-
|
133
|
+
out, status = sh_with_status(cmd)
|
134
|
+
return if status.success?
|
135
|
+
cmd = cmd.shelljoin if cmd.respond_to?(:shelljoin)
|
136
|
+
raise "Couldn't git push. `#{cmd}' failed with the following output:\n\n#{out}\n"
|
132
137
|
end
|
133
138
|
|
134
139
|
def already_tagged?
|
135
|
-
return false unless sh(
|
140
|
+
return false unless sh(%w[git tag]).split(/\n/).include?(version_tag)
|
136
141
|
Bundler.ui.confirm "Tag #{version_tag} has already been created."
|
137
142
|
true
|
138
143
|
end
|
@@ -142,20 +147,20 @@ module Bundler
|
|
142
147
|
end
|
143
148
|
|
144
149
|
def clean?
|
145
|
-
|
150
|
+
sh_with_status(%w[git diff --exit-code])[1].success?
|
146
151
|
end
|
147
152
|
|
148
153
|
def committed?
|
149
|
-
|
154
|
+
sh_with_status(%w[git diff-index --quiet --cached HEAD])[1].success?
|
150
155
|
end
|
151
156
|
|
152
157
|
def tag_version
|
153
|
-
sh
|
158
|
+
sh %W[git tag -m Version\ #{version} #{version_tag}]
|
154
159
|
Bundler.ui.confirm "Tagged #{version_tag}."
|
155
160
|
yield if block_given?
|
156
161
|
rescue RuntimeError
|
157
162
|
Bundler.ui.error "Untagging #{version_tag} due to error."
|
158
|
-
|
163
|
+
sh_with_status %W[git tag -d #{version_tag}]
|
159
164
|
raise
|
160
165
|
end
|
161
166
|
|
@@ -171,22 +176,28 @@ module Bundler
|
|
171
176
|
gemspec.name
|
172
177
|
end
|
173
178
|
|
179
|
+
def sh_with_input(cmd)
|
180
|
+
Bundler.ui.debug(cmd)
|
181
|
+
SharedHelpers.chdir(base) do
|
182
|
+
abort unless Kernel.system(*cmd)
|
183
|
+
end
|
184
|
+
end
|
185
|
+
|
174
186
|
def sh(cmd, &block)
|
175
|
-
out,
|
176
|
-
unless
|
187
|
+
out, status = sh_with_status(cmd, &block)
|
188
|
+
unless status.success?
|
189
|
+
cmd = cmd.shelljoin if cmd.respond_to?(:shelljoin)
|
177
190
|
raise(out.empty? ? "Running `#{cmd}` failed. Run this command directly for more detailed output." : out)
|
178
191
|
end
|
179
192
|
out
|
180
193
|
end
|
181
194
|
|
182
|
-
def
|
183
|
-
cmd += " 2>&1"
|
184
|
-
outbuf = String.new
|
195
|
+
def sh_with_status(cmd, &block)
|
185
196
|
Bundler.ui.debug(cmd)
|
186
197
|
SharedHelpers.chdir(base) do
|
187
|
-
outbuf =
|
188
|
-
status =
|
189
|
-
block.call(outbuf) if status.
|
198
|
+
outbuf = IO.popen(cmd, :err => [:child, :out], &:read)
|
199
|
+
status = $?
|
200
|
+
block.call(outbuf) if status.success? && block
|
190
201
|
[outbuf, status]
|
191
202
|
end
|
192
203
|
end
|
@@ -198,5 +209,9 @@ module Bundler
|
|
198
209
|
def gem_push?
|
199
210
|
!%w[n no nil false off 0].include?(ENV["gem_push"].to_s.downcase)
|
200
211
|
end
|
212
|
+
|
213
|
+
def gem_command
|
214
|
+
ENV["GEM_COMMAND"] ? ENV["GEM_COMMAND"] : "gem"
|
215
|
+
end
|
201
216
|
end
|
202
217
|
end
|
data/lib/bundler/gem_helpers.rb
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
module Bundler
|
4
4
|
module GemHelpers
|
5
|
-
GENERIC_CACHE = {} # rubocop:disable MutableConstant
|
5
|
+
GENERIC_CACHE = { Gem::Platform::RUBY => Gem::Platform::RUBY } # rubocop:disable Style/MutableConstant
|
6
6
|
GENERICS = [
|
7
7
|
[Gem::Platform.new("java"), Gem::Platform.new("java")],
|
8
8
|
[Gem::Platform.new("mswin32"), Gem::Platform.new("mswin32")],
|
@@ -10,12 +10,10 @@ module Bundler
|
|
10
10
|
[Gem::Platform.new("universal-mingw32"), Gem::Platform.new("universal-mingw32")],
|
11
11
|
[Gem::Platform.new("x64-mingw32"), Gem::Platform.new("x64-mingw32")],
|
12
12
|
[Gem::Platform.new("x86_64-mingw32"), Gem::Platform.new("x64-mingw32")],
|
13
|
-
[Gem::Platform.new("mingw32"), Gem::Platform.new("x86-mingw32")]
|
13
|
+
[Gem::Platform.new("mingw32"), Gem::Platform.new("x86-mingw32")],
|
14
14
|
].freeze
|
15
15
|
|
16
16
|
def generic(p)
|
17
|
-
return p if p == Gem::Platform::RUBY
|
18
|
-
|
19
17
|
GENERIC_CACHE[p] ||= begin
|
20
18
|
_, found = GENERICS.find do |match, _generic|
|
21
19
|
p.os == match.os && (!match.cpu || p.cpu == match.cpu)
|
data/lib/bundler/gem_tasks.rb
CHANGED
@@ -81,8 +81,8 @@ module Bundler
|
|
81
81
|
sort_dep_specs(spec_groups, locked_spec)
|
82
82
|
end.tap do |specs|
|
83
83
|
if DEBUG
|
84
|
-
|
85
|
-
|
84
|
+
warn before_result
|
85
|
+
warn " after sort_versions: #{debug_format_result(dep, specs).inspect}"
|
86
86
|
end
|
87
87
|
end
|
88
88
|
end
|
@@ -109,7 +109,7 @@ module Bundler
|
|
109
109
|
must_match = minor? ? [0] : [0, 1]
|
110
110
|
|
111
111
|
matches = must_match.map {|idx| gsv.segments[idx] == lsv.segments[idx] }
|
112
|
-
|
112
|
+
matches.uniq == [true] ? (gsv >= lsv) : false
|
113
113
|
else
|
114
114
|
true
|
115
115
|
end
|
data/lib/bundler/graph.rb
CHANGED
@@ -117,7 +117,7 @@ module Bundler
|
|
117
117
|
:style => "filled",
|
118
118
|
:fillcolor => "#B9B9D5",
|
119
119
|
:shape => "box3d",
|
120
|
-
:fontsize => 16
|
120
|
+
:fontsize => 16,
|
121
121
|
}.merge(@node_options[group])
|
122
122
|
)
|
123
123
|
end
|
@@ -142,7 +142,7 @@ module Bundler
|
|
142
142
|
g.output @output_format.to_sym => "#{@output_file}.#{@output_format}"
|
143
143
|
Bundler.ui.info "#{@output_file}.#{@output_format}"
|
144
144
|
rescue ArgumentError => e
|
145
|
-
|
145
|
+
warn "Unsupported output format. See Ruby-Graphviz/lib/graphviz/constants.rb"
|
146
146
|
raise e
|
147
147
|
end
|
148
148
|
end
|
data/lib/bundler/injector.rb
CHANGED
@@ -111,8 +111,10 @@ module Bundler
|
|
111
111
|
end
|
112
112
|
|
113
113
|
source = ", :source => \"#{d.source}\"" unless d.source.nil?
|
114
|
+
git = ", :git => \"#{d.git}\"" unless d.git.nil?
|
115
|
+
branch = ", :branch => \"#{d.branch}\"" unless d.branch.nil?
|
114
116
|
|
115
|
-
%(gem #{name}#{requirement}#{group}#{source})
|
117
|
+
%(gem #{name}#{requirement}#{group}#{source}#{git}#{branch})
|
116
118
|
end.join("\n")
|
117
119
|
end
|
118
120
|
|
@@ -123,7 +125,7 @@ module Bundler
|
|
123
125
|
end
|
124
126
|
end
|
125
127
|
|
126
|
-
#
|
128
|
+
# evaluates a gemfile to remove the specified gem
|
127
129
|
# from it.
|
128
130
|
def remove_deps(gemfile_path)
|
129
131
|
initial_gemfile = IO.readlines(gemfile_path)
|
@@ -136,8 +138,8 @@ module Bundler
|
|
136
138
|
|
137
139
|
removed_deps = remove_gems_from_dependencies(builder, @deps, gemfile_path)
|
138
140
|
|
139
|
-
# abort the
|
140
|
-
# no need to operate on gemfile
|
141
|
+
# abort the operation if no gems were removed
|
142
|
+
# no need to operate on gemfile further
|
141
143
|
return [] if removed_deps.empty?
|
142
144
|
|
143
145
|
cleaned_gemfile = remove_gems_from_gemfile(@deps, gemfile_path)
|
@@ -153,8 +155,8 @@ module Bundler
|
|
153
155
|
|
154
156
|
# @param [Dsl] builder Dsl object of current Gemfile.
|
155
157
|
# @param [Array] gems Array of names of gems to be removed.
|
156
|
-
# @param [Pathname]
|
157
|
-
# @return [Array]
|
158
|
+
# @param [Pathname] gemfile_path Path of the Gemfile.
|
159
|
+
# @return [Array] Array of removed dependencies.
|
158
160
|
def remove_gems_from_dependencies(builder, gems, gemfile_path)
|
159
161
|
removed_deps = []
|
160
162
|
|
@@ -206,7 +208,7 @@ module Bundler
|
|
206
208
|
nested_blocks -= 1
|
207
209
|
|
208
210
|
gemfile.each_with_index do |line, index|
|
209
|
-
next unless !line.nil? && line.
|
211
|
+
next unless !line.nil? && line.strip.start_with?(block_name)
|
210
212
|
if gemfile[index + 1] =~ /^\s*end\s*$/
|
211
213
|
gemfile[index] = nil
|
212
214
|
gemfile[index + 1] = nil
|
@@ -222,7 +224,7 @@ module Bundler
|
|
222
224
|
# @param [Array] removed_deps Array of removed dependencies.
|
223
225
|
# @param [Array] initial_gemfile Contents of original Gemfile before any operation.
|
224
226
|
def cross_check_for_errors(gemfile_path, original_deps, removed_deps, initial_gemfile)
|
225
|
-
#
|
227
|
+
# evaluate the new gemfile to look for any failure cases
|
226
228
|
builder = Dsl.new
|
227
229
|
builder.eval_gemfile(gemfile_path)
|
228
230
|
|
data/lib/bundler/inline.rb
CHANGED
@@ -1,7 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require "bundler/compatibility_guard"
|
4
|
-
|
5
3
|
# Allows for declaring a Gemfile inline in a ruby script, optionally installing
|
6
4
|
# any gems that aren't already installed on the user's system.
|
7
5
|
#
|
@@ -32,43 +30,55 @@ require "bundler/compatibility_guard"
|
|
32
30
|
# puts Pod::VERSION # => "0.34.4"
|
33
31
|
#
|
34
32
|
def gemfile(install = false, options = {}, &gemfile)
|
35
|
-
|
33
|
+
require_relative "../bundler"
|
36
34
|
|
37
35
|
opts = options.dup
|
38
36
|
ui = opts.delete(:ui) { Bundler::UI::Shell.new }
|
37
|
+
ui.level = "silent" if opts.delete(:quiet)
|
39
38
|
raise ArgumentError, "Unknown options: #{opts.keys.join(", ")}" unless opts.empty?
|
40
39
|
|
41
|
-
|
42
|
-
|
43
|
-
Bundler
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
40
|
+
begin
|
41
|
+
old_root = Bundler.method(:root)
|
42
|
+
bundler_module = class << Bundler; self; end
|
43
|
+
bundler_module.send(:remove_method, :root)
|
44
|
+
def Bundler.root
|
45
|
+
Bundler::SharedHelpers.pwd.expand_path
|
46
|
+
end
|
47
|
+
old_gemfile = ENV["BUNDLE_GEMFILE"]
|
48
|
+
Bundler::SharedHelpers.set_env "BUNDLE_GEMFILE", "Gemfile"
|
50
49
|
|
51
|
-
|
52
|
-
|
53
|
-
|
50
|
+
Bundler::Plugin.gemfile_install(&gemfile) if Bundler.feature_flag.plugins?
|
51
|
+
builder = Bundler::Dsl.new
|
52
|
+
builder.instance_eval(&gemfile)
|
54
53
|
|
55
|
-
|
56
|
-
|
57
|
-
|
54
|
+
Bundler.settings.temporary(:frozen => false) do
|
55
|
+
definition = builder.to_definition(nil, true)
|
56
|
+
def definition.lock(*); end
|
57
|
+
definition.validate_runtime!
|
58
58
|
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
59
|
+
Bundler.ui = install ? ui : Bundler::UI::Silent.new
|
60
|
+
if install || definition.missing_specs?
|
61
|
+
Bundler.settings.temporary(:inline => true, :disable_platform_warnings => true) do
|
62
|
+
installer = Bundler::Installer.install(Bundler.root, definition, :system => true)
|
63
|
+
installer.post_install_messages.each do |name, message|
|
64
|
+
Bundler.ui.info "Post-install message from #{name}:\n#{message}"
|
65
|
+
end
|
66
|
+
end
|
65
67
|
end
|
68
|
+
|
69
|
+
runtime = Bundler::Runtime.new(nil, definition)
|
70
|
+
runtime.setup.require
|
71
|
+
end
|
72
|
+
ensure
|
73
|
+
if bundler_module
|
74
|
+
bundler_module.send(:remove_method, :root)
|
75
|
+
bundler_module.send(:define_method, :root, old_root)
|
66
76
|
end
|
67
|
-
end
|
68
77
|
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
78
|
+
if old_gemfile
|
79
|
+
ENV["BUNDLE_GEMFILE"] = old_gemfile
|
80
|
+
else
|
81
|
+
ENV.delete("BUNDLE_GEMFILE")
|
82
|
+
end
|
83
|
+
end
|
74
84
|
end
|
data/lib/bundler/installer.rb
CHANGED
@@ -2,10 +2,10 @@
|
|
2
2
|
|
3
3
|
require "erb"
|
4
4
|
require "rubygems/dependency_installer"
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
5
|
+
require_relative "worker"
|
6
|
+
require_relative "installer/parallel_installer"
|
7
|
+
require_relative "installer/standalone"
|
8
|
+
require_relative "installer/gem_installer"
|
9
9
|
|
10
10
|
module Bundler
|
11
11
|
class Installer
|
@@ -221,7 +221,7 @@ module Bundler
|
|
221
221
|
def processor_count
|
222
222
|
require "etc"
|
223
223
|
Etc.nprocessors
|
224
|
-
rescue
|
224
|
+
rescue StandardError
|
225
225
|
1
|
226
226
|
end
|
227
227
|
|
@@ -275,14 +275,7 @@ module Bundler
|
|
275
275
|
end
|
276
276
|
|
277
277
|
def can_install_in_parallel?
|
278
|
-
|
279
|
-
true
|
280
|
-
else
|
281
|
-
Bundler.ui.warn "RubyGems #{Gem::VERSION} is not threadsafe, so your "\
|
282
|
-
"gems will be installed one at a time. Upgrade to RubyGems 2.1.0 " \
|
283
|
-
"or higher to enable parallel gem installation."
|
284
|
-
false
|
285
|
-
end
|
278
|
+
true
|
286
279
|
end
|
287
280
|
|
288
281
|
def install_in_parallel(size, standalone, force = false)
|
@@ -303,7 +296,7 @@ module Bundler
|
|
303
296
|
|
304
297
|
# returns whether or not a re-resolve was needed
|
305
298
|
def resolve_if_needed(options)
|
306
|
-
if !@definition.unlocking? && !options["force"] && !Bundler.settings[:inline] && Bundler.default_lockfile.file?
|
299
|
+
if !@definition.unlocking? && !options["force"] && !options["all-platforms"] && !Bundler.settings[:inline] && Bundler.default_lockfile.file?
|
307
300
|
return false if @definition.nothing_changed? && !@definition.missing_specs?
|
308
301
|
end
|
309
302
|
|