bundler 2.1.4 → 2.2.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +1624 -1426
- data/README.md +6 -8
- data/bundler.gemspec +4 -4
- data/exe/bundle +3 -0
- data/lib/bundler.rb +32 -8
- data/lib/bundler/build_metadata.rb +3 -11
- data/lib/bundler/cli.rb +55 -21
- data/lib/bundler/cli/add.rb +1 -1
- data/lib/bundler/cli/binstubs.rb +6 -2
- data/lib/bundler/cli/cache.rb +1 -7
- data/lib/bundler/cli/clean.rb +1 -1
- data/lib/bundler/cli/common.rb +14 -0
- data/lib/bundler/cli/console.rb +1 -1
- data/lib/bundler/cli/doctor.rb +1 -1
- data/lib/bundler/cli/exec.rb +4 -4
- data/lib/bundler/cli/fund.rb +36 -0
- data/lib/bundler/cli/gem.rb +86 -11
- data/lib/bundler/cli/info.rb +15 -4
- data/lib/bundler/cli/init.rb +2 -2
- data/lib/bundler/cli/inject.rb +1 -1
- data/lib/bundler/cli/install.rb +13 -11
- data/lib/bundler/cli/issue.rb +2 -2
- data/lib/bundler/cli/list.rb +12 -10
- data/lib/bundler/cli/outdated.rb +87 -66
- data/lib/bundler/cli/plugin.rb +10 -0
- data/lib/bundler/cli/pristine.rb +5 -0
- data/lib/bundler/cli/show.rb +1 -1
- data/lib/bundler/cli/update.rb +3 -1
- data/lib/bundler/compact_index_client.rb +1 -1
- data/lib/bundler/compact_index_client/cache.rb +6 -14
- data/lib/bundler/compact_index_client/gem_parser.rb +28 -0
- data/lib/bundler/compact_index_client/updater.rb +5 -13
- data/lib/bundler/definition.rb +66 -82
- data/lib/bundler/dep_proxy.rb +16 -9
- data/lib/bundler/dependency.rb +3 -10
- data/lib/bundler/dsl.rb +5 -9
- data/lib/bundler/endpoint_specification.rb +1 -1
- data/lib/bundler/env.rb +1 -1
- data/lib/bundler/environment_preserver.rb +26 -2
- data/lib/bundler/errors.rb +1 -0
- data/lib/bundler/feature_flag.rb +0 -3
- data/lib/bundler/fetcher.rb +4 -3
- data/lib/bundler/fetcher/base.rb +1 -1
- data/lib/bundler/fetcher/compact_index.rb +1 -1
- data/lib/bundler/fetcher/downloader.rb +1 -1
- data/lib/bundler/fetcher/index.rb +3 -4
- data/lib/bundler/friendly_errors.rb +22 -13
- data/lib/bundler/gem_helper.rb +32 -17
- data/lib/bundler/gem_helpers.rb +36 -25
- data/lib/bundler/gem_version_promoter.rb +4 -4
- data/lib/bundler/graph.rb +1 -1
- data/lib/bundler/index.rb +6 -2
- data/lib/bundler/injector.rb +22 -4
- data/lib/bundler/inline.rb +1 -1
- data/lib/bundler/installer.rb +35 -32
- data/lib/bundler/installer/gem_installer.rb +3 -3
- data/lib/bundler/installer/parallel_installer.rb +10 -10
- data/lib/bundler/installer/standalone.rb +2 -2
- data/lib/bundler/lazy_specification.rb +35 -11
- data/lib/bundler/lockfile_generator.rb +1 -1
- data/lib/bundler/lockfile_parser.rb +1 -1
- data/lib/bundler/man/.document +1 -0
- data/{man → lib/bundler/man}/bundle-add.1 +1 -1
- data/{man/bundle-add.ronn → lib/bundler/man/bundle-add.1.ronn} +0 -0
- data/{man → lib/bundler/man}/bundle-binstubs.1 +5 -3
- data/{man/bundle-binstubs.ronn → lib/bundler/man/bundle-binstubs.1.ronn} +2 -4
- data/{man → lib/bundler/man}/bundle-cache.1 +1 -1
- data/{man/bundle-cache.ronn → lib/bundler/man/bundle-cache.1.ronn} +0 -0
- data/{man → lib/bundler/man}/bundle-check.1 +1 -1
- data/{man/bundle-check.ronn → lib/bundler/man/bundle-check.1.ronn} +0 -0
- data/{man → lib/bundler/man}/bundle-clean.1 +1 -1
- data/{man/bundle-clean.ronn → lib/bundler/man/bundle-clean.1.ronn} +0 -0
- data/{man → lib/bundler/man}/bundle-config.1 +16 -25
- data/{man/bundle-config.ronn → lib/bundler/man/bundle-config.1.ronn} +19 -30
- data/{man → lib/bundler/man}/bundle-doctor.1 +1 -1
- data/{man/bundle-doctor.ronn → lib/bundler/man/bundle-doctor.1.ronn} +0 -0
- data/{man → lib/bundler/man}/bundle-exec.1 +1 -1
- data/{man/bundle-exec.ronn → lib/bundler/man/bundle-exec.1.ronn} +0 -0
- data/{man → lib/bundler/man}/bundle-gem.1 +25 -3
- data/{man/bundle-gem.ronn → lib/bundler/man/bundle-gem.1.ronn} +30 -7
- data/{man → lib/bundler/man}/bundle-info.1 +1 -1
- data/{man/bundle-info.ronn → lib/bundler/man/bundle-info.1.ronn} +0 -0
- data/{man → lib/bundler/man}/bundle-init.1 +1 -1
- data/{man/bundle-init.ronn → lib/bundler/man/bundle-init.1.ronn} +0 -0
- data/{man → lib/bundler/man}/bundle-inject.1 +1 -1
- data/{man/bundle-inject.ronn → lib/bundler/man/bundle-inject.1.ronn} +0 -0
- data/{man → lib/bundler/man}/bundle-install.1 +30 -3
- data/{man/bundle-install.ronn → lib/bundler/man/bundle-install.1.ronn} +25 -3
- data/{man → lib/bundler/man}/bundle-list.1 +7 -7
- data/{man/bundle-list.ronn → lib/bundler/man/bundle-list.1.ronn} +6 -6
- data/{man → lib/bundler/man}/bundle-lock.1 +1 -1
- data/{man/bundle-lock.ronn → lib/bundler/man/bundle-lock.1.ronn} +0 -0
- data/{man → lib/bundler/man}/bundle-open.1 +1 -1
- data/{man/bundle-open.ronn → lib/bundler/man/bundle-open.1.ronn} +0 -0
- data/{man → lib/bundler/man}/bundle-outdated.1 +1 -1
- data/{man/bundle-outdated.ronn → lib/bundler/man/bundle-outdated.1.ronn} +0 -0
- data/{man → lib/bundler/man}/bundle-platform.1 +1 -1
- data/{man/bundle-platform.ronn → lib/bundler/man/bundle-platform.1.ronn} +0 -0
- data/{man → lib/bundler/man}/bundle-pristine.1 +1 -1
- data/{man/bundle-pristine.ronn → lib/bundler/man/bundle-pristine.1.ronn} +0 -0
- data/{man → lib/bundler/man}/bundle-remove.1 +1 -1
- data/{man/bundle-remove.ronn → lib/bundler/man/bundle-remove.1.ronn} +0 -0
- data/{man → lib/bundler/man}/bundle-show.1 +1 -1
- data/{man/bundle-show.ronn → lib/bundler/man/bundle-show.1.ronn} +0 -0
- data/{man → lib/bundler/man}/bundle-update.1 +1 -1
- data/{man/bundle-update.ronn → lib/bundler/man/bundle-update.1.ronn} +0 -0
- data/{man → lib/bundler/man}/bundle-viz.1 +1 -1
- data/{man/bundle-viz.ronn → lib/bundler/man/bundle-viz.1.ronn} +0 -0
- data/{man → lib/bundler/man}/bundle.1 +1 -1
- data/{man/bundle.ronn → lib/bundler/man/bundle.1.ronn} +0 -0
- data/{man → lib/bundler/man}/gemfile.5 +4 -4
- data/{man → lib/bundler/man}/gemfile.5.ronn +4 -4
- data/{man → lib/bundler/man}/index.txt +0 -0
- data/lib/bundler/mirror.rb +2 -2
- data/lib/bundler/plugin.rb +30 -5
- data/lib/bundler/plugin/api/source.rb +1 -1
- data/lib/bundler/plugin/dsl.rb +1 -1
- data/lib/bundler/plugin/index.rb +10 -1
- data/lib/bundler/plugin/installer.rb +1 -1
- data/lib/bundler/plugin/installer/rubygems.rb +1 -1
- data/lib/bundler/plugin/source_list.rb +1 -1
- data/lib/bundler/psyched_yaml.rb +0 -15
- data/lib/bundler/remote_specification.rb +5 -2
- data/lib/bundler/resolver.rb +43 -19
- data/lib/bundler/resolver/spec_group.rb +39 -24
- data/lib/bundler/retry.rb +1 -1
- data/lib/bundler/ruby_version.rb +1 -1
- data/lib/bundler/rubygems_ext.rb +69 -9
- data/lib/bundler/rubygems_gem_installer.rb +3 -9
- data/lib/bundler/rubygems_integration.rb +25 -60
- data/lib/bundler/runtime.rb +4 -14
- data/lib/bundler/settings.rb +49 -46
- data/lib/bundler/shared_helpers.rb +2 -2
- data/lib/bundler/similarity_detector.rb +1 -1
- data/lib/bundler/source.rb +1 -1
- data/lib/bundler/source/git.rb +23 -21
- data/lib/bundler/source/git/git_proxy.rb +82 -80
- data/lib/bundler/source/path.rb +7 -3
- data/lib/bundler/source/path/installer.rb +10 -10
- data/lib/bundler/source/rubygems.rb +23 -17
- data/lib/bundler/source/rubygems/remote.rb +1 -1
- data/lib/bundler/source_list.rb +2 -2
- data/lib/bundler/spec_set.rb +8 -10
- data/lib/bundler/stub_specification.rb +17 -7
- data/lib/bundler/templates/newgem/CODE_OF_CONDUCT.md.tt +57 -47
- data/lib/bundler/templates/newgem/Gemfile.tt +9 -1
- data/lib/bundler/templates/newgem/README.md.tt +1 -2
- data/lib/bundler/templates/newgem/Rakefile.tt +19 -5
- data/lib/bundler/templates/newgem/bin/console.tt +1 -0
- data/lib/bundler/templates/newgem/circleci/config.yml.tt +13 -0
- data/lib/bundler/templates/newgem/ext/newgem/extconf.rb.tt +2 -0
- data/lib/bundler/templates/newgem/github/workflows/main.yml.tt +18 -0
- data/lib/bundler/templates/newgem/gitlab-ci.yml.tt +9 -0
- data/lib/bundler/templates/newgem/lib/newgem.rb.tt +4 -2
- data/lib/bundler/templates/newgem/lib/newgem/version.rb.tt +2 -0
- data/lib/bundler/templates/newgem/newgem.gemspec.tt +15 -7
- data/lib/bundler/templates/newgem/rubocop.yml.tt +13 -0
- data/lib/bundler/templates/newgem/spec/newgem_spec.rb.tt +2 -0
- data/lib/bundler/templates/newgem/spec/spec_helper.rb.tt +2 -1
- data/lib/bundler/templates/newgem/test/{newgem_test.rb.tt → minitest/newgem_test.rb.tt} +2 -0
- data/lib/bundler/templates/newgem/test/{test_helper.rb.tt → minitest/test_helper.rb.tt} +2 -0
- data/lib/bundler/templates/newgem/test/test-unit/newgem_test.rb.tt +15 -0
- data/lib/bundler/templates/newgem/test/test-unit/test_helper.rb.tt +6 -0
- data/lib/bundler/ui/shell.rb +5 -5
- data/lib/bundler/uri_credentials_filter.rb +3 -1
- data/lib/bundler/vendor/molinillo/lib/molinillo.rb +0 -1
- data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph.rb +34 -1
- data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/tag.rb +2 -2
- data/lib/bundler/vendor/molinillo/lib/molinillo/errors.rb +1 -1
- data/lib/bundler/vendor/molinillo/lib/molinillo/gem_metadata.rb +1 -1
- data/lib/bundler/vendor/molinillo/lib/molinillo/resolution.rb +48 -46
- data/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb +82 -189
- data/lib/bundler/vendor/thor/lib/thor.rb +0 -7
- data/lib/bundler/vendor/thor/lib/thor/actions/create_link.rb +2 -1
- data/lib/bundler/vendor/thor/lib/thor/base.rb +9 -0
- data/lib/bundler/vendor/thor/lib/thor/version.rb +1 -1
- data/lib/bundler/vendor/tmpdir/lib/tmpdir.rb +154 -0
- data/lib/bundler/vendored_persistent.rb +0 -7
- data/lib/bundler/vendored_tmpdir.rb +4 -0
- data/lib/bundler/version.rb +1 -1
- data/lib/bundler/worker.rb +1 -1
- data/lib/bundler/yaml_serializer.rb +1 -1
- metadata +70 -85
- data/lib/bundler/vendor/molinillo/lib/molinillo/compatibility.rb +0 -26
- data/man/bundle-add.1.txt +0 -58
- data/man/bundle-binstubs.1.txt +0 -48
- data/man/bundle-cache.1.txt +0 -78
- data/man/bundle-check.1.txt +0 -33
- data/man/bundle-clean.1.txt +0 -26
- data/man/bundle-config.1.txt +0 -528
- data/man/bundle-doctor.1.txt +0 -44
- data/man/bundle-exec.1.txt +0 -178
- data/man/bundle-gem.1.txt +0 -91
- data/man/bundle-info.1.txt +0 -21
- data/man/bundle-init.1.txt +0 -34
- data/man/bundle-inject.1.txt +0 -32
- data/man/bundle-install.1.txt +0 -401
- data/man/bundle-list.1.txt +0 -43
- data/man/bundle-lock.1.txt +0 -93
- data/man/bundle-open.1.txt +0 -29
- data/man/bundle-outdated.1.txt +0 -131
- data/man/bundle-platform.1.txt +0 -57
- data/man/bundle-pristine.1.txt +0 -44
- data/man/bundle-remove.1.txt +0 -34
- data/man/bundle-show.1.txt +0 -27
- data/man/bundle-update.1.txt +0 -390
- data/man/bundle-viz.1.txt +0 -39
- data/man/bundle.1.txt +0 -116
- data/man/gemfile.5.txt +0 -649
data/lib/bundler/dep_proxy.rb
CHANGED
|
@@ -4,19 +4,18 @@ module Bundler
|
|
|
4
4
|
class DepProxy
|
|
5
5
|
attr_reader :__platform, :dep
|
|
6
6
|
|
|
7
|
+
@proxies = {}
|
|
8
|
+
|
|
9
|
+
def self.get_proxy(dep, platform)
|
|
10
|
+
@proxies[[dep, platform]] ||= new(dep, platform).freeze
|
|
11
|
+
end
|
|
12
|
+
|
|
7
13
|
def initialize(dep, platform)
|
|
8
14
|
@dep = dep
|
|
9
15
|
@__platform = platform
|
|
10
16
|
end
|
|
11
17
|
|
|
12
|
-
|
|
13
|
-
@hash ||= [dep, __platform].hash
|
|
14
|
-
end
|
|
15
|
-
|
|
16
|
-
def ==(other)
|
|
17
|
-
return false if other.class != self.class
|
|
18
|
-
dep == other.dep && __platform == other.__platform
|
|
19
|
-
end
|
|
18
|
+
private_class_method :new
|
|
20
19
|
|
|
21
20
|
alias_method :eql?, :==
|
|
22
21
|
|
|
@@ -39,7 +38,15 @@ module Bundler
|
|
|
39
38
|
s
|
|
40
39
|
end
|
|
41
40
|
|
|
42
|
-
|
|
41
|
+
def dup
|
|
42
|
+
raise NoMethodError.new("DepProxy cannot be duplicated")
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
def clone
|
|
46
|
+
raise NoMethodError.new("DepProxy cannot be cloned")
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
private
|
|
43
50
|
|
|
44
51
|
def method_missing(*args, &blk)
|
|
45
52
|
@dep.send(*args, &blk)
|
data/lib/bundler/dependency.rb
CHANGED
|
@@ -74,15 +74,6 @@ module Bundler
|
|
|
74
74
|
:x64_mingw_26 => Gem::Platform::X64_MINGW,
|
|
75
75
|
}.freeze
|
|
76
76
|
|
|
77
|
-
REVERSE_PLATFORM_MAP = {}.tap do |reverse_platform_map|
|
|
78
|
-
PLATFORM_MAP.each do |key, value|
|
|
79
|
-
reverse_platform_map[value] ||= []
|
|
80
|
-
reverse_platform_map[value] << key
|
|
81
|
-
end
|
|
82
|
-
|
|
83
|
-
reverse_platform_map.each {|_, platforms| platforms.freeze }
|
|
84
|
-
end.freeze
|
|
85
|
-
|
|
86
77
|
def initialize(name, version, options = {}, &blk)
|
|
87
78
|
type = options["type"] || :runtime
|
|
88
79
|
super(name, version, type)
|
|
@@ -105,9 +96,11 @@ module Bundler
|
|
|
105
96
|
def gem_platforms(valid_platforms)
|
|
106
97
|
return valid_platforms if @platforms.empty?
|
|
107
98
|
|
|
99
|
+
valid_generic_platforms = valid_platforms.map {|p| [p, GemHelpers.generic(p)] }.to_h
|
|
108
100
|
@gem_platforms ||= expanded_platforms.compact.uniq
|
|
109
101
|
|
|
110
|
-
|
|
102
|
+
filtered_generic_platforms = valid_generic_platforms.values & @gem_platforms
|
|
103
|
+
valid_generic_platforms.select {|_, v| filtered_generic_platforms.include?(v) }.keys
|
|
111
104
|
end
|
|
112
105
|
|
|
113
106
|
def expanded_platforms
|
data/lib/bundler/dsl.rb
CHANGED
|
@@ -63,7 +63,7 @@ module Bundler
|
|
|
63
63
|
development_group = opts[:development_group] || :development
|
|
64
64
|
expanded_path = gemfile_root.join(path)
|
|
65
65
|
|
|
66
|
-
gemspecs =
|
|
66
|
+
gemspecs = Gem::Util.glob_files_in_dir("{,*}.gemspec", expanded_path).map {|g| Bundler.load_gemspec(g) }.compact
|
|
67
67
|
gemspecs.reject! {|s| s.name != name } if name
|
|
68
68
|
Index.sort_specs(gemspecs)
|
|
69
69
|
specs_by_name_and_version = gemspecs.group_by {|s| [s.name, s.version] }
|
|
@@ -75,8 +75,7 @@ module Bundler
|
|
|
75
75
|
|
|
76
76
|
@gemspecs << spec
|
|
77
77
|
|
|
78
|
-
|
|
79
|
-
gem spec.name, :name => spec.name, :path => path, :glob => glob, :platforms => gem_platforms
|
|
78
|
+
gem spec.name, :name => spec.name, :path => path, :glob => glob
|
|
80
79
|
|
|
81
80
|
group(development_group) do
|
|
82
81
|
spec.development_dependencies.each do |dep|
|
|
@@ -223,7 +222,6 @@ module Bundler
|
|
|
223
222
|
|
|
224
223
|
def github(repo, options = {})
|
|
225
224
|
raise ArgumentError, "GitHub sources require a block" unless block_given?
|
|
226
|
-
raise DeprecatedError, "The #github method has been removed" if Bundler.feature_flag.skip_default_git_sources?
|
|
227
225
|
github_uri = @git_sources["github"].call(repo)
|
|
228
226
|
git_options = normalize_hash(options).merge("uri" => github_uri)
|
|
229
227
|
git_source = @sources.add_git_source(git_options)
|
|
@@ -281,11 +279,9 @@ module Bundler
|
|
|
281
279
|
raise GemfileError, "Undefined local variable or method `#{name}' for Gemfile"
|
|
282
280
|
end
|
|
283
281
|
|
|
284
|
-
|
|
282
|
+
private
|
|
285
283
|
|
|
286
284
|
def add_git_sources
|
|
287
|
-
return if Bundler.feature_flag.skip_default_git_sources?
|
|
288
|
-
|
|
289
285
|
git_source(:github) do |repo_name|
|
|
290
286
|
warn_deprecated_git_source(:github, <<-'RUBY'.strip, 'Change any "reponame" :github sources to "username/reponame".')
|
|
291
287
|
"https://github.com/#{repo_name}.git"
|
|
@@ -461,7 +457,7 @@ repo_name ||= user_name
|
|
|
461
457
|
"Using `source` more than once without a block is a security risk, and " \
|
|
462
458
|
"may result in installing unexpected gems. To resolve this warning, use " \
|
|
463
459
|
"a block to indicate which gems should come from the secondary source. " \
|
|
464
|
-
"To upgrade this warning to an error, run `bundle config set " \
|
|
460
|
+
"To upgrade this warning to an error, run `bundle config set --local " \
|
|
465
461
|
"disable_multisource true`."
|
|
466
462
|
end
|
|
467
463
|
end
|
|
@@ -571,7 +567,7 @@ The :#{name} git source is deprecated, and will be removed in the future.#{addit
|
|
|
571
567
|
end
|
|
572
568
|
end
|
|
573
569
|
|
|
574
|
-
|
|
570
|
+
private
|
|
575
571
|
|
|
576
572
|
def parse_line_number_from_description
|
|
577
573
|
description = self.description
|
data/lib/bundler/env.rb
CHANGED
|
@@ -105,7 +105,7 @@ module Bundler
|
|
|
105
105
|
out << [" User Home", Gem.user_home]
|
|
106
106
|
out << [" User Path", Gem.user_dir]
|
|
107
107
|
out << [" Bin Dir", Gem.bindir]
|
|
108
|
-
if defined?(OpenSSL)
|
|
108
|
+
if defined?(OpenSSL::SSL)
|
|
109
109
|
out << ["OpenSSL"]
|
|
110
110
|
out << [" Compiled", OpenSSL::OPENSSL_VERSION] if defined?(OpenSSL::OPENSSL_VERSION)
|
|
111
111
|
out << [" Loaded", OpenSSL::OPENSSL_LIBRARY_VERSION] if defined?(OpenSSL::OPENSSL_LIBRARY_VERSION)
|
|
@@ -17,14 +17,38 @@ module Bundler
|
|
|
17
17
|
].map(&:freeze).freeze
|
|
18
18
|
BUNDLER_PREFIX = "BUNDLER_ORIG_".freeze
|
|
19
19
|
|
|
20
|
-
|
|
20
|
+
def self.from_env
|
|
21
|
+
new(env_to_hash(ENV), BUNDLER_KEYS)
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def self.env_to_hash(env)
|
|
25
|
+
to_hash = env.to_hash
|
|
26
|
+
return to_hash unless Gem.win_platform?
|
|
27
|
+
|
|
28
|
+
to_hash.each_with_object({}) {|(k,v), a| a[k.upcase] = v }
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
# @param env [Hash]
|
|
21
32
|
# @param keys [Array<String>]
|
|
22
33
|
def initialize(env, keys)
|
|
23
|
-
@original = env
|
|
34
|
+
@original = env
|
|
24
35
|
@keys = keys
|
|
25
36
|
@prefix = BUNDLER_PREFIX
|
|
26
37
|
end
|
|
27
38
|
|
|
39
|
+
# Replaces `ENV` with the bundler environment variables backed up
|
|
40
|
+
def replace_with_backup
|
|
41
|
+
ENV.replace(backup) unless Gem.win_platform?
|
|
42
|
+
|
|
43
|
+
# Fallback logic for Windows below to workaround
|
|
44
|
+
# https://bugs.ruby-lang.org/issues/16798. Can be dropped once all
|
|
45
|
+
# supported rubies include the fix for that.
|
|
46
|
+
|
|
47
|
+
ENV.clear
|
|
48
|
+
|
|
49
|
+
backup.each {|k, v| ENV[k] = v }
|
|
50
|
+
end
|
|
51
|
+
|
|
28
52
|
# @return [Hash]
|
|
29
53
|
def backup
|
|
30
54
|
env = @original.clone
|
data/lib/bundler/errors.rb
CHANGED
|
@@ -56,6 +56,7 @@ module Bundler
|
|
|
56
56
|
class SudoNotPermittedError < BundlerError; status_code(30); end
|
|
57
57
|
class ThreadCreationError < BundlerError; status_code(33); end
|
|
58
58
|
class APIResponseMismatchError < BundlerError; status_code(34); end
|
|
59
|
+
class APIResponseInvalidDependenciesError < BundlerError; status_code(35); end
|
|
59
60
|
class GemfileEvalError < GemfileError; end
|
|
60
61
|
class MarshalError < StandardError; end
|
|
61
62
|
|
data/lib/bundler/feature_flag.rb
CHANGED
|
@@ -30,7 +30,6 @@ module Bundler
|
|
|
30
30
|
settings_flag(:allow_bundler_dependency_conflicts) { bundler_3_mode? }
|
|
31
31
|
settings_flag(:allow_offline_install) { bundler_3_mode? }
|
|
32
32
|
settings_flag(:auto_clean_without_path) { bundler_3_mode? }
|
|
33
|
-
settings_flag(:auto_config_jobs) { bundler_3_mode? }
|
|
34
33
|
settings_flag(:cache_all) { bundler_3_mode? }
|
|
35
34
|
settings_flag(:default_install_uses_path) { bundler_3_mode? }
|
|
36
35
|
settings_flag(:deployment_means_frozen) { bundler_3_mode? }
|
|
@@ -42,8 +41,6 @@ module Bundler
|
|
|
42
41
|
settings_flag(:plugins) { @bundler_version >= Gem::Version.new("1.14") }
|
|
43
42
|
settings_flag(:print_only_version_number) { bundler_3_mode? }
|
|
44
43
|
settings_flag(:setup_makes_kernel_gem_public) { !bundler_3_mode? }
|
|
45
|
-
settings_flag(:skip_default_git_sources) { bundler_3_mode? }
|
|
46
|
-
settings_flag(:specific_platform) { bundler_3_mode? }
|
|
47
44
|
settings_flag(:suppress_install_using_messages) { bundler_3_mode? }
|
|
48
45
|
settings_flag(:unlock_source_unlocks_spec) { !bundler_3_mode? }
|
|
49
46
|
settings_flag(:update_requires_all_flag) { bundler_4_mode? }
|
data/lib/bundler/fetcher.rb
CHANGED
|
@@ -47,7 +47,7 @@ module Bundler
|
|
|
47
47
|
remote_uri = filter_uri(remote_uri)
|
|
48
48
|
super "Authentication is required for #{remote_uri}.\n" \
|
|
49
49
|
"Please supply credentials for this source. You can do this by running:\n" \
|
|
50
|
-
" bundle config set #{remote_uri} username:password"
|
|
50
|
+
" bundle config set --global #{remote_uri} username:password"
|
|
51
51
|
end
|
|
52
52
|
end
|
|
53
53
|
# This error is raised if HTTP authentication is provided, but incorrect.
|
|
@@ -216,7 +216,7 @@ module Bundler
|
|
|
216
216
|
"#<#{self.class}:0x#{object_id} uri=#{uri}>"
|
|
217
217
|
end
|
|
218
218
|
|
|
219
|
-
|
|
219
|
+
private
|
|
220
220
|
|
|
221
221
|
FETCHERS = [CompactIndex, Dependency, Index].freeze
|
|
222
222
|
|
|
@@ -229,6 +229,7 @@ module Bundler
|
|
|
229
229
|
"BUILDBOX" => "buildbox",
|
|
230
230
|
"GO_SERVER_URL" => "go",
|
|
231
231
|
"SNAP_CI" => "snap",
|
|
232
|
+
"GITLAB_CI" => "gitlab",
|
|
232
233
|
"CI_NAME" => ENV["CI_NAME"],
|
|
233
234
|
"CI" => "ci",
|
|
234
235
|
}
|
|
@@ -302,7 +303,7 @@ module Bundler
|
|
|
302
303
|
store
|
|
303
304
|
end
|
|
304
305
|
|
|
305
|
-
|
|
306
|
+
private
|
|
306
307
|
|
|
307
308
|
def remote_uri
|
|
308
309
|
@remote.uri
|
data/lib/bundler/fetcher/base.rb
CHANGED
|
@@ -8,7 +8,7 @@ module Bundler
|
|
|
8
8
|
class Index < Base
|
|
9
9
|
def specs(_gem_names)
|
|
10
10
|
Bundler.rubygems.fetch_all_remote_specs(remote)
|
|
11
|
-
rescue Gem::RemoteFetcher::FetchError
|
|
11
|
+
rescue Gem::RemoteFetcher::FetchError => e
|
|
12
12
|
case e.message
|
|
13
13
|
when /certificate verify failed/
|
|
14
14
|
raise CertificateFailureError.new(display_uri)
|
|
@@ -19,8 +19,7 @@ module Bundler
|
|
|
19
19
|
raise BadAuthenticationError, remote_uri if remote_uri.userinfo
|
|
20
20
|
raise AuthenticationRequiredError, remote_uri
|
|
21
21
|
else
|
|
22
|
-
|
|
23
|
-
raise HTTPError, "Could not fetch specs from #{display_uri}"
|
|
22
|
+
raise HTTPError, "Could not fetch specs from #{display_uri} due to underlying error <#{e.message}>"
|
|
24
23
|
end
|
|
25
24
|
end
|
|
26
25
|
|
|
@@ -42,7 +41,7 @@ module Bundler
|
|
|
42
41
|
"Your network or your gem server is probably having issues right now."
|
|
43
42
|
end
|
|
44
43
|
|
|
45
|
-
|
|
44
|
+
private
|
|
46
45
|
|
|
47
46
|
# cached gem specification path, if one exists
|
|
48
47
|
def gemspec_cached_path(spec_file_name)
|
|
@@ -4,7 +4,19 @@ require_relative "vendored_thor"
|
|
|
4
4
|
|
|
5
5
|
module Bundler
|
|
6
6
|
module FriendlyErrors
|
|
7
|
-
|
|
7
|
+
module_function
|
|
8
|
+
|
|
9
|
+
def enable!
|
|
10
|
+
@disabled = false
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def disabled?
|
|
14
|
+
@disabled
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def disable!
|
|
18
|
+
@disabled = true
|
|
19
|
+
end
|
|
8
20
|
|
|
9
21
|
def log_error(error)
|
|
10
22
|
case error
|
|
@@ -23,13 +35,7 @@ module Bundler
|
|
|
23
35
|
Bundler.ui.error error.message
|
|
24
36
|
when LoadError
|
|
25
37
|
raise error unless error.message =~ /cannot load such file -- openssl|openssl.so|libcrypto.so/
|
|
26
|
-
Bundler.ui.error "\nCould not load OpenSSL."
|
|
27
|
-
Bundler.ui.warn <<-WARN, :wrap => true
|
|
28
|
-
You must recompile Ruby with OpenSSL support or change the sources in your \
|
|
29
|
-
Gemfile from 'https' to 'http'. Instructions for compiling with OpenSSL \
|
|
30
|
-
using RVM are available at https://rvm.io/packages/openssl.
|
|
31
|
-
WARN
|
|
32
|
-
Bundler.ui.trace error
|
|
38
|
+
Bundler.ui.error "\nCould not load OpenSSL. #{error.class}: #{error}\n#{error.backtrace.join("\n ")}"
|
|
33
39
|
when Interrupt
|
|
34
40
|
Bundler.ui.error "\nQuitting..."
|
|
35
41
|
Bundler.ui.trace error
|
|
@@ -57,7 +63,7 @@ module Bundler
|
|
|
57
63
|
end
|
|
58
64
|
|
|
59
65
|
def request_issue_report_for(e)
|
|
60
|
-
Bundler.ui.
|
|
66
|
+
Bundler.ui.error <<-EOS.gsub(/^ {8}/, ""), nil, nil
|
|
61
67
|
--- ERROR REPORT TEMPLATE -------------------------------------------------------
|
|
62
68
|
# Error Report
|
|
63
69
|
|
|
@@ -82,7 +88,7 @@ module Bundler
|
|
|
82
88
|
|
|
83
89
|
I tried...
|
|
84
90
|
|
|
85
|
-
- **Have you read our issues document, https://github.com/
|
|
91
|
+
- **Have you read our issues document, https://github.com/rubygems/rubygems/blob/master/bundler/doc/contributing/ISSUES.md?**
|
|
86
92
|
|
|
87
93
|
...
|
|
88
94
|
|
|
@@ -100,13 +106,13 @@ module Bundler
|
|
|
100
106
|
|
|
101
107
|
Bundler.ui.error "Unfortunately, an unexpected error occurred, and Bundler cannot continue."
|
|
102
108
|
|
|
103
|
-
Bundler.ui.
|
|
109
|
+
Bundler.ui.error <<-EOS.gsub(/^ {8}/, ""), nil, :yellow
|
|
104
110
|
|
|
105
111
|
First, try this link to see if there are any existing issue reports for this error:
|
|
106
112
|
#{issues_url(e)}
|
|
107
113
|
|
|
108
114
|
If there aren't any reports for this error yet, please create copy and paste the report template above into a new issue. Don't forget to anonymize any private data! The new issue form is located at:
|
|
109
|
-
https://github.com/
|
|
115
|
+
https://github.com/rubygems/rubygems/issues/new?labels=Bundler
|
|
110
116
|
EOS
|
|
111
117
|
end
|
|
112
118
|
|
|
@@ -114,16 +120,19 @@ module Bundler
|
|
|
114
120
|
message = exception.message.lines.first.tr(":", " ").chomp
|
|
115
121
|
message = message.split("-").first if exception.is_a?(Errno)
|
|
116
122
|
require "cgi"
|
|
117
|
-
"https://github.com/
|
|
123
|
+
"https://github.com/rubygems/rubygems/search?q=" \
|
|
118
124
|
"#{CGI.escape(message)}&type=Issues"
|
|
119
125
|
end
|
|
120
126
|
end
|
|
121
127
|
|
|
122
128
|
def self.with_friendly_errors
|
|
129
|
+
FriendlyErrors.enable!
|
|
123
130
|
yield
|
|
124
131
|
rescue SignalException
|
|
125
132
|
raise
|
|
126
133
|
rescue Exception => e # rubocop:disable Lint/RescueException
|
|
134
|
+
raise if FriendlyErrors.disabled?
|
|
135
|
+
|
|
127
136
|
FriendlyErrors.log_error(e)
|
|
128
137
|
exit FriendlyErrors.exit_status(e)
|
|
129
138
|
end
|
data/lib/bundler/gem_helper.rb
CHANGED
|
@@ -15,6 +15,10 @@ module Bundler
|
|
|
15
15
|
new(opts[:dir], opts[:name]).install
|
|
16
16
|
end
|
|
17
17
|
|
|
18
|
+
def tag_prefix=(prefix)
|
|
19
|
+
instance.tag_prefix = prefix
|
|
20
|
+
end
|
|
21
|
+
|
|
18
22
|
def gemspec(&block)
|
|
19
23
|
gemspec = instance.gemspec
|
|
20
24
|
block.call(gemspec) if block
|
|
@@ -24,12 +28,15 @@ module Bundler
|
|
|
24
28
|
|
|
25
29
|
attr_reader :spec_path, :base, :gemspec
|
|
26
30
|
|
|
31
|
+
attr_writer :tag_prefix
|
|
32
|
+
|
|
27
33
|
def initialize(base = nil, name = nil)
|
|
28
|
-
@base = (base
|
|
29
|
-
gemspecs = name ? [File.join(base, "#{name}.gemspec")] :
|
|
34
|
+
@base = File.expand_path(base || SharedHelpers.pwd)
|
|
35
|
+
gemspecs = name ? [File.join(@base, "#{name}.gemspec")] : Gem::Util.glob_files_in_dir("{,*}.gemspec", @base)
|
|
30
36
|
raise "Unable to determine name from existing gemspec. Use :name => 'gemname' in #install_tasks to manually set it." unless gemspecs.size == 1
|
|
31
37
|
@spec_path = gemspecs.first
|
|
32
38
|
@gemspec = Bundler.load_gemspec(@spec_path)
|
|
39
|
+
@tag_prefix = ""
|
|
33
40
|
end
|
|
34
41
|
|
|
35
42
|
def install
|
|
@@ -73,7 +80,7 @@ module Bundler
|
|
|
73
80
|
|
|
74
81
|
def build_gem
|
|
75
82
|
file_name = nil
|
|
76
|
-
sh(
|
|
83
|
+
sh([*gem_command, "build", "-V", spec_path]) do
|
|
77
84
|
file_name = File.basename(built_gem_path)
|
|
78
85
|
SharedHelpers.filesystem_access(File.join(base, "pkg")) {|p| FileUtils.mkdir_p(p) }
|
|
79
86
|
FileUtils.mv(built_gem_path, "pkg")
|
|
@@ -84,36 +91,44 @@ module Bundler
|
|
|
84
91
|
|
|
85
92
|
def install_gem(built_gem_path = nil, local = false)
|
|
86
93
|
built_gem_path ||= build_gem
|
|
87
|
-
cmd =
|
|
88
|
-
cmd
|
|
89
|
-
_, status = sh_with_status(cmd
|
|
94
|
+
cmd = [*gem_command, "install", built_gem_path.to_s]
|
|
95
|
+
cmd << "--local" if local
|
|
96
|
+
_, status = sh_with_status(cmd)
|
|
90
97
|
unless status.success?
|
|
91
98
|
raise "Couldn't install gem, run `gem install #{built_gem_path}' for more detailed output"
|
|
92
99
|
end
|
|
93
100
|
Bundler.ui.confirm "#{name} (#{version}) installed."
|
|
94
101
|
end
|
|
95
102
|
|
|
96
|
-
|
|
103
|
+
protected
|
|
97
104
|
|
|
98
105
|
def rubygem_push(path)
|
|
99
|
-
cmd =
|
|
106
|
+
cmd = [*gem_command, "push", path]
|
|
100
107
|
cmd << "--key" << gem_key if gem_key
|
|
101
108
|
cmd << "--host" << allowed_push_host if allowed_push_host
|
|
102
|
-
unless allowed_push_host || Bundler.user_home.join(".gem/credentials").file?
|
|
103
|
-
raise "Your rubygems.org credentials aren't set. Run `gem push` to set them."
|
|
104
|
-
end
|
|
105
109
|
sh_with_input(cmd)
|
|
106
110
|
Bundler.ui.confirm "Pushed #{name} #{version} to #{gem_push_host}"
|
|
107
111
|
end
|
|
108
112
|
|
|
109
113
|
def built_gem_path
|
|
110
|
-
|
|
114
|
+
Gem::Util.glob_files_in_dir("#{name}-*.gem", base).sort_by {|f| File.mtime(f) }.last
|
|
111
115
|
end
|
|
112
116
|
|
|
113
|
-
def git_push(remote =
|
|
117
|
+
def git_push(remote = nil)
|
|
118
|
+
remote ||= default_remote
|
|
114
119
|
perform_git_push remote
|
|
115
|
-
perform_git_push "#{remote}
|
|
116
|
-
Bundler.ui.confirm "Pushed git commits and
|
|
120
|
+
perform_git_push "#{remote} refs/tags/#{version_tag}"
|
|
121
|
+
Bundler.ui.confirm "Pushed git commits and release tag."
|
|
122
|
+
end
|
|
123
|
+
|
|
124
|
+
def default_remote
|
|
125
|
+
# We can replace this with `git branch --show-current` once we drop support for git < 2.22.0
|
|
126
|
+
current_branch = sh(%w[git rev-parse --abbrev-ref HEAD]).gsub(%r{\Aheads/}, "").strip
|
|
127
|
+
|
|
128
|
+
remote_for_branch = sh(%W[git config --get branch.#{current_branch}.remote]).strip
|
|
129
|
+
return "origin" if remote_for_branch.empty?
|
|
130
|
+
|
|
131
|
+
remote_for_branch
|
|
117
132
|
end
|
|
118
133
|
|
|
119
134
|
def allowed_push_host
|
|
@@ -168,7 +183,7 @@ module Bundler
|
|
|
168
183
|
end
|
|
169
184
|
|
|
170
185
|
def version_tag
|
|
171
|
-
"v#{version}"
|
|
186
|
+
"#{@tag_prefix}v#{version}"
|
|
172
187
|
end
|
|
173
188
|
|
|
174
189
|
def name
|
|
@@ -210,7 +225,7 @@ module Bundler
|
|
|
210
225
|
end
|
|
211
226
|
|
|
212
227
|
def gem_command
|
|
213
|
-
ENV["GEM_COMMAND"]
|
|
228
|
+
ENV["GEM_COMMAND"]&.shellsplit || ["gem"]
|
|
214
229
|
end
|
|
215
230
|
end
|
|
216
231
|
end
|