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
@@ -1,12 +1,28 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
module Bundler
|
3
4
|
class EnvironmentPreserver
|
5
|
+
INTENTIONALLY_NIL = "BUNDLER_ENVIRONMENT_PRESERVER_INTENTIONALLY_NIL".freeze
|
6
|
+
BUNDLER_KEYS = %w[
|
7
|
+
BUNDLE_BIN_PATH
|
8
|
+
BUNDLE_GEMFILE
|
9
|
+
BUNDLER_ORIG_MANPATH
|
10
|
+
BUNDLER_VERSION
|
11
|
+
GEM_HOME
|
12
|
+
GEM_PATH
|
13
|
+
MANPATH
|
14
|
+
PATH
|
15
|
+
RUBYLIB
|
16
|
+
RUBYOPT
|
17
|
+
].map(&:freeze).freeze
|
18
|
+
BUNDLER_PREFIX = "BUNDLER_ORIG_".freeze
|
19
|
+
|
4
20
|
# @param env [ENV]
|
5
21
|
# @param keys [Array<String>]
|
6
22
|
def initialize(env, keys)
|
7
23
|
@original = env.to_hash
|
8
24
|
@keys = keys
|
9
|
-
@prefix =
|
25
|
+
@prefix = BUNDLER_PREFIX
|
10
26
|
end
|
11
27
|
|
12
28
|
# @return [Hash]
|
@@ -14,9 +30,10 @@ module Bundler
|
|
14
30
|
env = @original.clone
|
15
31
|
@keys.each do |key|
|
16
32
|
value = env[key]
|
17
|
-
|
18
|
-
|
19
|
-
|
33
|
+
if !value.nil? && !value.empty?
|
34
|
+
env[@prefix + key] ||= value
|
35
|
+
elsif value.nil?
|
36
|
+
env[@prefix + key] ||= INTENTIONALLY_NIL
|
20
37
|
end
|
21
38
|
end
|
22
39
|
env
|
@@ -27,10 +44,13 @@ module Bundler
|
|
27
44
|
env = @original.clone
|
28
45
|
@keys.each do |key|
|
29
46
|
value_original = env[@prefix + key]
|
30
|
-
|
47
|
+
next if value_original.nil? || value_original.empty?
|
48
|
+
if value_original == INTENTIONALLY_NIL
|
49
|
+
env.delete(key)
|
50
|
+
else
|
31
51
|
env[key] = value_original
|
32
|
-
env.delete(@prefix + key)
|
33
52
|
end
|
53
|
+
env.delete(@prefix + key)
|
34
54
|
end
|
35
55
|
env
|
36
56
|
end
|
data/lib/bundler/errors.rb
CHANGED
data/lib/bundler/feature_flag.rb
CHANGED
@@ -1,22 +1,59 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
module Bundler
|
3
4
|
class FeatureFlag
|
4
5
|
def self.settings_flag(flag, &default)
|
5
6
|
unless Bundler::Settings::BOOL_KEYS.include?(flag.to_s)
|
6
7
|
raise "Cannot use `#{flag}` as a settings feature flag since it isn't a bool key"
|
7
8
|
end
|
8
|
-
|
9
|
-
|
9
|
+
|
10
|
+
settings_method("#{flag}?", flag, &default)
|
11
|
+
end
|
12
|
+
private_class_method :settings_flag
|
13
|
+
|
14
|
+
def self.settings_option(key, &default)
|
15
|
+
settings_method(key, key, &default)
|
16
|
+
end
|
17
|
+
private_class_method :settings_option
|
18
|
+
|
19
|
+
def self.settings_method(name, key, &default)
|
20
|
+
define_method(name) do
|
21
|
+
value = Bundler.settings[key]
|
10
22
|
value = instance_eval(&default) if value.nil? && !default.nil?
|
11
23
|
value
|
12
24
|
end
|
13
25
|
end
|
26
|
+
private_class_method :settings_method
|
14
27
|
|
15
28
|
(1..10).each {|v| define_method("bundler_#{v}_mode?") { major_version >= v } }
|
16
29
|
|
30
|
+
settings_flag(:allow_bundler_dependency_conflicts) { bundler_2_mode? }
|
17
31
|
settings_flag(:allow_offline_install) { bundler_2_mode? }
|
32
|
+
settings_flag(:auto_clean_without_path) { bundler_2_mode? }
|
33
|
+
settings_flag(:cache_all) { bundler_2_mode? }
|
34
|
+
settings_flag(:cache_command_is_package) { bundler_2_mode? }
|
35
|
+
settings_flag(:console_command) { !bundler_2_mode? }
|
36
|
+
settings_flag(:default_install_uses_path) { bundler_2_mode? }
|
37
|
+
settings_flag(:deployment_means_frozen) { bundler_2_mode? }
|
38
|
+
settings_flag(:disable_multisource) { bundler_2_mode? }
|
39
|
+
settings_flag(:error_on_stderr) { bundler_2_mode? }
|
40
|
+
settings_flag(:forget_cli_options) { bundler_2_mode? }
|
41
|
+
settings_flag(:global_gem_cache) { bundler_2_mode? }
|
42
|
+
settings_flag(:init_gems_rb) { bundler_2_mode? }
|
43
|
+
settings_flag(:list_command) { bundler_2_mode? }
|
44
|
+
settings_flag(:lockfile_uses_separate_rubygems_sources) { bundler_2_mode? }
|
18
45
|
settings_flag(:only_update_to_newer_versions) { bundler_2_mode? }
|
19
46
|
settings_flag(:plugins) { @bundler_version >= Gem::Version.new("1.14") }
|
47
|
+
settings_flag(:prefer_gems_rb) { bundler_2_mode? }
|
48
|
+
settings_flag(:print_only_version_number) { bundler_2_mode? }
|
49
|
+
settings_flag(:setup_makes_kernel_gem_public) { !bundler_2_mode? }
|
50
|
+
settings_flag(:skip_default_git_sources) { bundler_2_mode? }
|
51
|
+
settings_flag(:specific_platform) { bundler_2_mode? }
|
52
|
+
settings_flag(:suppress_install_using_messages) { bundler_2_mode? }
|
53
|
+
settings_flag(:unlock_source_unlocks_spec) { !bundler_2_mode? }
|
54
|
+
settings_flag(:update_requires_all_flag) { bundler_2_mode? }
|
55
|
+
|
56
|
+
settings_option(:default_cli_command) { bundler_2_mode? ? :cli_help : :install }
|
20
57
|
|
21
58
|
def initialize(bundler_version)
|
22
59
|
@bundler_version = Gem::Version.create(bundler_version)
|
@@ -26,7 +63,5 @@ module Bundler
|
|
26
63
|
@bundler_version.segments.first
|
27
64
|
end
|
28
65
|
private :major_version
|
29
|
-
|
30
|
-
class << self; private :settings_flag; end
|
31
66
|
end
|
32
67
|
end
|
data/lib/bundler/fetcher.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
require "bundler/vendored_persistent"
|
3
4
|
require "cgi"
|
4
5
|
require "securerandom"
|
@@ -237,7 +238,7 @@ module Bundler
|
|
237
238
|
Bundler.settings[:ssl_client_cert]
|
238
239
|
raise SSLError if needs_ssl && !defined?(OpenSSL::SSL)
|
239
240
|
|
240
|
-
con =
|
241
|
+
con = PersistentHTTP.new "bundler", :ENV
|
241
242
|
if gem_proxy = Bundler.rubygems.configuration[:http_proxy]
|
242
243
|
con.proxy = URI.parse(gem_proxy) if gem_proxy != :no_proxy
|
243
244
|
end
|
@@ -248,8 +249,11 @@ module Bundler
|
|
248
249
|
con.cert_store = bundler_cert_store
|
249
250
|
end
|
250
251
|
|
251
|
-
|
252
|
-
|
252
|
+
ssl_client_cert = Bundler.settings[:ssl_client_cert] ||
|
253
|
+
(Bundler.rubygems.configuration.ssl_client_cert if
|
254
|
+
Bundler.rubygems.configuration.respond_to?(:ssl_client_cert))
|
255
|
+
if ssl_client_cert
|
256
|
+
pem = File.read(ssl_client_cert)
|
253
257
|
con.cert = OpenSSL::X509::Certificate.new(pem)
|
254
258
|
con.key = OpenSSL::PKey::RSA.new(pem)
|
255
259
|
end
|
@@ -273,16 +277,19 @@ module Bundler
|
|
273
277
|
Timeout::Error, EOFError, SocketError, Errno::ENETDOWN, Errno::ENETUNREACH,
|
274
278
|
Errno::EINVAL, Errno::ECONNRESET, Errno::ETIMEDOUT, Errno::EAGAIN,
|
275
279
|
Net::HTTPBadResponse, Net::HTTPHeaderSyntaxError, Net::ProtocolError,
|
276
|
-
|
280
|
+
PersistentHTTP::Error, Zlib::BufError, Errno::EHOSTUNREACH
|
277
281
|
].freeze
|
278
282
|
|
279
283
|
def bundler_cert_store
|
280
284
|
store = OpenSSL::X509::Store.new
|
281
|
-
|
282
|
-
|
283
|
-
|
285
|
+
ssl_ca_cert = Bundler.settings[:ssl_ca_cert] ||
|
286
|
+
(Bundler.rubygems.configuration.ssl_ca_cert if
|
287
|
+
Bundler.rubygems.configuration.respond_to?(:ssl_ca_cert))
|
288
|
+
if ssl_ca_cert
|
289
|
+
if File.directory? ssl_ca_cert
|
290
|
+
store.add_path ssl_ca_cert
|
284
291
|
else
|
285
|
-
store.add_file
|
292
|
+
store.add_file ssl_ca_cert
|
286
293
|
end
|
287
294
|
else
|
288
295
|
store.set_default_paths
|
data/lib/bundler/fetcher/base.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
require "bundler/fetcher/base"
|
3
4
|
require "bundler/worker"
|
4
5
|
|
@@ -61,7 +62,7 @@ module Bundler
|
|
61
62
|
compact_index_request :fetch_spec
|
62
63
|
|
63
64
|
def available?
|
64
|
-
return nil unless md5_available?
|
65
|
+
return nil unless SharedHelpers.md5_available?
|
65
66
|
user_home = Bundler.user_home
|
66
67
|
return nil unless user_home.directory? && user_home.writable?
|
67
68
|
# Read info file checksums out of /versions, so we can know if gems are up to date
|
@@ -120,16 +121,6 @@ module Bundler
|
|
120
121
|
Net::HTTPNotModified.new(nil, nil, nil)
|
121
122
|
end
|
122
123
|
end
|
123
|
-
|
124
|
-
def md5_available?
|
125
|
-
require "openssl"
|
126
|
-
OpenSSL::Digest::MD5.digest("")
|
127
|
-
true
|
128
|
-
rescue LoadError
|
129
|
-
true
|
130
|
-
rescue OpenSSL::Digest::DigestError
|
131
|
-
false
|
132
|
-
end
|
133
124
|
end
|
134
125
|
end
|
135
126
|
end
|
@@ -1,5 +1,6 @@
|
|
1
1
|
# encoding: utf-8
|
2
2
|
# frozen_string_literal: true
|
3
|
+
|
3
4
|
require "cgi"
|
4
5
|
require "bundler/vendored_thor"
|
5
6
|
|
@@ -92,7 +93,7 @@ module Bundler
|
|
92
93
|
#{e.backtrace && e.backtrace.join("\n ").chomp}
|
93
94
|
```
|
94
95
|
|
95
|
-
#{Bundler::Env.
|
96
|
+
#{Bundler::Env.report}
|
96
97
|
--- TEMPLATE END ----------------------------------------------------------------
|
97
98
|
|
98
99
|
EOS
|
data/lib/bundler/gem_helper.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
require "bundler/vendored_thor" unless defined?(Thor)
|
3
4
|
require "bundler"
|
4
5
|
|
@@ -50,8 +51,8 @@ module Bundler
|
|
50
51
|
install_gem(built_gem_path, :local)
|
51
52
|
end
|
52
53
|
|
53
|
-
desc "Create tag #{version_tag} and build and push #{name}-#{version}.gem to
|
54
|
-
"To prevent publishing in
|
54
|
+
desc "Create tag #{version_tag} and build and push #{name}-#{version}.gem to #{gem_push_host}\n" \
|
55
|
+
"To prevent publishing in RubyGems use `gem_push=no rake release`"
|
55
56
|
task "release", [:remote] => ["build", "release:guard_clean",
|
56
57
|
"release:source_control_push", "release:rubygem_push"] do
|
57
58
|
end
|
@@ -92,18 +93,14 @@ module Bundler
|
|
92
93
|
protected
|
93
94
|
|
94
95
|
def rubygem_push(path)
|
95
|
-
allowed_push_host = nil
|
96
96
|
gem_command = "gem push '#{path}'"
|
97
97
|
gem_command += " --key #{gem_key}" if gem_key
|
98
|
-
if
|
99
|
-
allowed_push_host = @gemspec.metadata["allowed_push_host"]
|
100
|
-
gem_command += " --host #{allowed_push_host}" if allowed_push_host
|
101
|
-
end
|
98
|
+
gem_command += " --host #{allowed_push_host}" if allowed_push_host
|
102
99
|
unless allowed_push_host || Bundler.user_home.join(".gem/credentials").file?
|
103
100
|
raise "Your rubygems.org credentials aren't set. Run `gem push` to set them."
|
104
101
|
end
|
105
102
|
sh(gem_command)
|
106
|
-
Bundler.ui.confirm "Pushed #{name} #{version} to #{
|
103
|
+
Bundler.ui.confirm "Pushed #{name} #{version} to #{gem_push_host}"
|
107
104
|
end
|
108
105
|
|
109
106
|
def built_gem_path
|
@@ -116,6 +113,14 @@ module Bundler
|
|
116
113
|
Bundler.ui.confirm "Pushed git commits and tags."
|
117
114
|
end
|
118
115
|
|
116
|
+
def allowed_push_host
|
117
|
+
@gemspec.metadata["allowed_push_host"] if @gemspec.respond_to?(:metadata)
|
118
|
+
end
|
119
|
+
|
120
|
+
def gem_push_host
|
121
|
+
allowed_push_host || "rubygems.org"
|
122
|
+
end
|
123
|
+
|
119
124
|
def perform_git_push(options = "")
|
120
125
|
cmd = "git push #{options}"
|
121
126
|
out, code = sh_with_code(cmd)
|
@@ -187,7 +192,7 @@ module Bundler
|
|
187
192
|
end
|
188
193
|
|
189
194
|
def gem_push?
|
190
|
-
!%w
|
195
|
+
!%w[n no nil false off 0].include?(ENV["gem_push"].to_s.downcase)
|
191
196
|
end
|
192
197
|
end
|
193
198
|
end
|
data/lib/bundler/gem_helpers.rb
CHANGED
data/lib/bundler/gem_tasks.rb
CHANGED
data/lib/bundler/gemdeps.rb
CHANGED
data/lib/bundler/graph.rb
CHANGED
data/lib/bundler/index.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
require "set"
|
3
4
|
|
4
5
|
module Bundler
|
@@ -111,6 +112,7 @@ module Bundler
|
|
111
112
|
spec_sets.values.each(&blk)
|
112
113
|
end
|
113
114
|
sources.each {|s| s.each(&blk) }
|
115
|
+
self
|
114
116
|
end
|
115
117
|
|
116
118
|
# returns a list of the dependencies
|
@@ -131,6 +133,19 @@ module Bundler
|
|
131
133
|
names.uniq
|
132
134
|
end
|
133
135
|
|
136
|
+
def dependency_names_if_available
|
137
|
+
reduce([]) do |names, spec|
|
138
|
+
case spec
|
139
|
+
when EndpointSpecification, Gem::Specification, LazySpecification, StubSpecification
|
140
|
+
names.concat(spec.dependencies)
|
141
|
+
when RemoteSpecification # from the full index
|
142
|
+
return nil
|
143
|
+
else
|
144
|
+
raise "unhandled spec type in #dependency_names_if_available (#{spec.inspect})"
|
145
|
+
end
|
146
|
+
end.tap {|n| n && n.map!(&:name) }
|
147
|
+
end
|
148
|
+
|
134
149
|
def use(other, override_dupes = false)
|
135
150
|
return unless other
|
136
151
|
other.each do |s|
|
@@ -191,14 +206,6 @@ module Bundler
|
|
191
206
|
end
|
192
207
|
end
|
193
208
|
|
194
|
-
wants_prerelease = dependency.requirement.prerelease?
|
195
|
-
wants_prerelease ||= base && base.any? {|base_spec| base_spec.version.prerelease? }
|
196
|
-
only_prerelease = specs.all? {|spec| spec.version.prerelease? }
|
197
|
-
|
198
|
-
unless wants_prerelease || only_prerelease
|
199
|
-
found.reject! {|spec| spec.version.prerelease? }
|
200
|
-
end
|
201
|
-
|
202
209
|
found
|
203
210
|
end
|
204
211
|
end
|
data/lib/bundler/injector.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
module Bundler
|
3
4
|
class Injector
|
4
5
|
def self.inject(new_deps, options = {})
|
@@ -12,38 +13,40 @@ module Bundler
|
|
12
13
|
end
|
13
14
|
|
14
15
|
def inject(gemfile_path, lockfile_path)
|
15
|
-
if Bundler.
|
16
|
+
if Bundler.frozen?
|
16
17
|
# ensure the lock and Gemfile are synced
|
17
18
|
Bundler.definition.ensure_equivalent_gemfile_and_lockfile(true)
|
18
|
-
# temporarily remove frozen while we inject
|
19
|
-
frozen = Bundler.settings.delete(:frozen)
|
20
19
|
end
|
21
20
|
|
22
|
-
#
|
23
|
-
|
24
|
-
|
21
|
+
# temporarily unfreeze
|
22
|
+
Bundler.settings.temporary(:deployment => false, :frozen => false) do
|
23
|
+
# evaluate the Gemfile we have now
|
24
|
+
builder = Dsl.new
|
25
|
+
builder.eval_gemfile(gemfile_path)
|
26
|
+
|
27
|
+
# don't inject any gems that are already in the Gemfile
|
28
|
+
@new_deps -= builder.dependencies
|
25
29
|
|
26
|
-
|
27
|
-
|
30
|
+
# add new deps to the end of the in-memory Gemfile
|
31
|
+
# Set conservative versioning to false because we want to let the resolver resolve the version first
|
32
|
+
builder.eval_gemfile("injected gems", build_gem_lines(false)) if @new_deps.any?
|
28
33
|
|
29
|
-
|
30
|
-
|
31
|
-
|
34
|
+
# resolve to see if the new deps broke anything
|
35
|
+
@definition = builder.to_definition(lockfile_path, {})
|
36
|
+
@definition.resolve_remotely!
|
32
37
|
|
33
|
-
|
34
|
-
|
35
|
-
@definition.resolve_remotely!
|
38
|
+
# since nothing broke, we can add those gems to the gemfile
|
39
|
+
append_to(gemfile_path, build_gem_lines(@options[:conservative_versioning])) if @new_deps.any?
|
36
40
|
|
37
|
-
|
38
|
-
|
41
|
+
# since we resolved successfully, write out the lockfile
|
42
|
+
@definition.lock(Bundler.default_lockfile)
|
39
43
|
|
40
|
-
|
41
|
-
|
44
|
+
# invalidate the cached Bundler.definition
|
45
|
+
Bundler.reset_paths!
|
42
46
|
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
Bundler.settings[:frozen] = "1" if frozen
|
47
|
+
# return an array of the deps that we added
|
48
|
+
@new_deps
|
49
|
+
end
|
47
50
|
end
|
48
51
|
|
49
52
|
private
|