bundler 2.3.3 → 2.3.7
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +50 -0
- data/lib/bundler/build_metadata.rb +2 -2
- data/lib/bundler/cli/config.rb +10 -1
- data/lib/bundler/cli/doctor.rb +9 -1
- data/lib/bundler/cli/gem.rb +11 -1
- data/lib/bundler/cli/info.rb +10 -1
- data/lib/bundler/cli/install.rb +6 -25
- data/lib/bundler/cli/platform.rb +1 -1
- data/lib/bundler/cli/update.rb +6 -2
- data/lib/bundler/cli.rb +3 -10
- data/lib/bundler/compact_index_client/cache.rb +0 -9
- data/lib/bundler/compact_index_client.rb +0 -6
- data/lib/bundler/definition.rb +2 -9
- data/lib/bundler/endpoint_specification.rb +21 -3
- data/lib/bundler/env.rb +1 -1
- data/lib/bundler/fetcher/compact_index.rb +0 -10
- data/lib/bundler/fetcher/index.rb +0 -26
- data/lib/bundler/fetcher.rb +9 -14
- data/lib/bundler/gem_helper.rb +2 -2
- data/lib/bundler/lazy_specification.rb +2 -2
- data/lib/bundler/lockfile_generator.rb +1 -1
- data/lib/bundler/remote_specification.rb +7 -0
- data/lib/bundler/resolver/spec_group.rb +1 -1
- data/lib/bundler/resolver.rb +7 -12
- data/lib/bundler/ruby_version.rb +1 -1
- data/lib/bundler/rubygems_ext.rb +13 -10
- data/lib/bundler/rubygems_integration.rb +2 -14
- data/lib/bundler/self_manager.rb +106 -14
- data/lib/bundler/settings.rb +1 -1
- data/lib/bundler/templates/newgem/newgem.gemspec.tt +1 -1
- data/lib/bundler/templates/newgem/standard.yml.tt +1 -0
- data/lib/bundler/templates/newgem/test/minitest/test_newgem.rb.tt +1 -1
- data/lib/bundler/vendor/thor/lib/thor/actions/inject_into_file.rb +1 -4
- data/lib/bundler/vendor/thor/lib/thor/version.rb +1 -1
- data/lib/bundler/version.rb +1 -1
- data/lib/bundler.rb +1 -1
- metadata +3 -4
- data/lib/bundler/psyched_yaml.rb +0 -10
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: afa073e2d0f107d4d7c2c6906c399d5a04973d85c45416643a40ae23cf2acfe7
|
4
|
+
data.tar.gz: 7173281106d774a25a867f141a752e7b9617a36811375276d592f208e1dd7646
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6c97e621ce961b554ce5a20ee0e78d4ada40fdf169994e9a67dd45bd1df4a29fe936dc79bfb3b4d01a3eb1bf91ae6d33b5028f291ba59cefaf506dccb9e4d53c
|
7
|
+
data.tar.gz: 6d58dbb998751182e6b9fb3f1b6cd41626202dfb92c76a7744346068b0e854d6813e8b62cf5288170f04f3744cc5ea5cb55fcf6da80b17c37ad7db3f15d0098a
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,53 @@
|
|
1
|
+
# 2.3.7 (February 9, 2022)
|
2
|
+
|
3
|
+
## Enhancements:
|
4
|
+
|
5
|
+
- Don't activate `yaml` gem from Bundler [#5277](https://github.com/rubygems/rubygems/pull/5277)
|
6
|
+
- Add Reverse Dependencies section to info command [#3966](https://github.com/rubygems/rubygems/pull/3966)
|
7
|
+
|
8
|
+
## Bug fixes:
|
9
|
+
|
10
|
+
- Don't silently persist `BUNDLE_WITH` and `BUNDLE_WITHOUT` envs locally [#5335](https://github.com/rubygems/rubygems/pull/5335)
|
11
|
+
- Fix `bundle config` inside an application saving configuration globally [#4152](https://github.com/rubygems/rubygems/pull/4152)
|
12
|
+
|
13
|
+
# 2.3.6 (January 26, 2022)
|
14
|
+
|
15
|
+
## Enhancements:
|
16
|
+
|
17
|
+
- Use `Gem::Platform.local` instead of `RUBY_PLATFORM` when displaying local platform [#5306](https://github.com/rubygems/rubygems/pull/5306)
|
18
|
+
- Lock standard.yml to the required ruby version [#5284](https://github.com/rubygems/rubygems/pull/5284)
|
19
|
+
- Use `Fiddle` in `bundle doctor` to check for dynamic library presence [#5173](https://github.com/rubygems/rubygems/pull/5173)
|
20
|
+
|
21
|
+
## Bug fixes:
|
22
|
+
|
23
|
+
- Fix edge case where gems were incorrectly removed from the lockfile [#5302](https://github.com/rubygems/rubygems/pull/5302)
|
24
|
+
- Fix `force_ruby_platform` ignored when lockfile includes current specific platform [#5304](https://github.com/rubygems/rubygems/pull/5304)
|
25
|
+
- Create minitest file to underscored path in "bundle gem" command with dashed gem name [#5273](https://github.com/rubygems/rubygems/pull/5273)
|
26
|
+
- Fix regression with old marshaled specs having null `required_rubygems_version` [#5291](https://github.com/rubygems/rubygems/pull/5291)
|
27
|
+
|
28
|
+
# 2.3.5 (January 12, 2022)
|
29
|
+
|
30
|
+
## Enhancements:
|
31
|
+
|
32
|
+
- Make `bundle update --bundler` actually lock to the latest bundler version (even if not yet installed) [#5182](https://github.com/rubygems/rubygems/pull/5182)
|
33
|
+
- Use thor-1.2.1 [#5260](https://github.com/rubygems/rubygems/pull/5260)
|
34
|
+
- Exclude bin directory for newgem template [#5259](https://github.com/rubygems/rubygems/pull/5259)
|
35
|
+
|
36
|
+
## Bug fixes:
|
37
|
+
|
38
|
+
- Fix metadata requirements being bypassed when custom gem servers are used [#5256](https://github.com/rubygems/rubygems/pull/5256)
|
39
|
+
- Fix `rake build:checksum` writing checksum of package path, not package contents [#5250](https://github.com/rubygems/rubygems/pull/5250)
|
40
|
+
|
41
|
+
# 2.3.4 (December 29, 2021)
|
42
|
+
|
43
|
+
## Enhancements:
|
44
|
+
|
45
|
+
- Improve error message when `BUNDLED WITH` version does not exist [#5205](https://github.com/rubygems/rubygems/pull/5205)
|
46
|
+
|
47
|
+
## Bug fixes:
|
48
|
+
|
49
|
+
- Fix `bundle update --bundler` no longer updating lockfile [#5224](https://github.com/rubygems/rubygems/pull/5224)
|
50
|
+
|
1
51
|
# 2.3.3 (December 24, 2021)
|
2
52
|
|
3
53
|
## Bug fixes:
|
@@ -4,8 +4,8 @@ module Bundler
|
|
4
4
|
# Represents metadata from when the Bundler gem was built.
|
5
5
|
module BuildMetadata
|
6
6
|
# begin ivars
|
7
|
-
@built_at = "
|
8
|
-
@git_commit_sha = "
|
7
|
+
@built_at = "2022-02-09".freeze
|
8
|
+
@git_commit_sha = "bafe43c593".freeze
|
9
9
|
@release = true
|
10
10
|
# end ivars
|
11
11
|
|
data/lib/bundler/cli/config.rb
CHANGED
@@ -180,7 +180,7 @@ module Bundler
|
|
180
180
|
scopes = %w[global local].select {|s| options[s] }
|
181
181
|
case scopes.size
|
182
182
|
when 0
|
183
|
-
@scope = "global"
|
183
|
+
@scope = inside_app? ? "local" : "global"
|
184
184
|
@explicit_scope = false
|
185
185
|
when 1
|
186
186
|
@scope = scopes.first
|
@@ -189,6 +189,15 @@ module Bundler
|
|
189
189
|
"The options #{scopes.join " and "} were specified. Please only use one of the switches at a time."
|
190
190
|
end
|
191
191
|
end
|
192
|
+
|
193
|
+
private
|
194
|
+
|
195
|
+
def inside_app?
|
196
|
+
Bundler.root
|
197
|
+
true
|
198
|
+
rescue GemfileNotFound
|
199
|
+
false
|
200
|
+
end
|
192
201
|
end
|
193
202
|
end
|
194
203
|
end
|
data/lib/bundler/cli/doctor.rb
CHANGED
@@ -2,6 +2,7 @@
|
|
2
2
|
|
3
3
|
require "rbconfig"
|
4
4
|
require "shellwords"
|
5
|
+
require "fiddle"
|
5
6
|
|
6
7
|
module Bundler
|
7
8
|
class CLI::Doctor
|
@@ -71,7 +72,14 @@ module Bundler
|
|
71
72
|
|
72
73
|
definition.specs.each do |spec|
|
73
74
|
bundles_for_gem(spec).each do |bundle|
|
74
|
-
bad_paths = dylibs(bundle).select
|
75
|
+
bad_paths = dylibs(bundle).select do |f|
|
76
|
+
begin
|
77
|
+
Fiddle.dlopen(f)
|
78
|
+
false
|
79
|
+
rescue Fiddle::DLError
|
80
|
+
true
|
81
|
+
end
|
82
|
+
end
|
75
83
|
if bad_paths.any?
|
76
84
|
broken_links[spec] ||= []
|
77
85
|
broken_links[spec].concat(bad_paths)
|
data/lib/bundler/cli/gem.rb
CHANGED
@@ -38,6 +38,7 @@ module Bundler
|
|
38
38
|
namespaced_path = name.tr("-", "/")
|
39
39
|
constant_name = name.gsub(/-[_-]*(?![_-]|$)/) { "::" }.gsub(/([_-]+|(::)|^)(.|$)/) { $2.to_s + $3.upcase }
|
40
40
|
constant_array = constant_name.split("::")
|
41
|
+
minitest_constant_name = constant_array.clone.tap {|a| a[-1] = "Test#{a[-1]}" }.join("::") # Foo::Bar => Foo::TestBar
|
41
42
|
|
42
43
|
use_git = Bundler.git_present? && options[:git]
|
43
44
|
|
@@ -69,6 +70,7 @@ module Bundler
|
|
69
70
|
:git => use_git,
|
70
71
|
:github_username => github_username.empty? ? "[USERNAME]" : github_username,
|
71
72
|
:required_ruby_version => required_ruby_version,
|
73
|
+
:minitest_constant_name => minitest_constant_name,
|
72
74
|
}
|
73
75
|
ensure_safe_gem_name(name, constant_array)
|
74
76
|
|
@@ -104,9 +106,17 @@ module Bundler
|
|
104
106
|
)
|
105
107
|
config[:test_task] = :spec
|
106
108
|
when "minitest"
|
109
|
+
# Generate path for minitest target file (FileList["test/**/test_*.rb"])
|
110
|
+
# foo => test/test_foo.rb
|
111
|
+
# foo-bar => test/foo/test_bar.rb
|
112
|
+
# foo_bar => test/test_foo_bar.rb
|
113
|
+
paths = namespaced_path.rpartition("/")
|
114
|
+
paths[2] = "test_#{paths[2]}"
|
115
|
+
minitest_namespaced_path = paths.join("")
|
116
|
+
|
107
117
|
templates.merge!(
|
108
118
|
"test/minitest/test_helper.rb.tt" => "test/test_helper.rb",
|
109
|
-
"test/minitest/test_newgem.rb.tt" => "test
|
119
|
+
"test/minitest/test_newgem.rb.tt" => "test/#{minitest_namespaced_path}.rb"
|
110
120
|
)
|
111
121
|
config[:test_task] = :test
|
112
122
|
when "test-unit"
|
data/lib/bundler/cli/info.rb
CHANGED
@@ -73,7 +73,8 @@ module Bundler
|
|
73
73
|
gem_info << "\tBug Tracker: #{metadata["bug_tracker_uri"]}\n" if metadata.key?("bug_tracker_uri")
|
74
74
|
gem_info << "\tMailing List: #{metadata["mailing_list_uri"]}\n" if metadata.key?("mailing_list_uri")
|
75
75
|
gem_info << "\tPath: #{spec.full_gem_path}\n"
|
76
|
-
gem_info << "\tDefault Gem: yes" if spec.respond_to?(:default_gem?) && spec.default_gem?
|
76
|
+
gem_info << "\tDefault Gem: yes\n" if spec.respond_to?(:default_gem?) && spec.default_gem?
|
77
|
+
gem_info << "\tReverse Dependencies: \n\t\t#{gem_dependencies.join("\n\t\t")}" if gem_dependencies.any?
|
77
78
|
|
78
79
|
if name != "bundler" && spec.deleted_gem?
|
79
80
|
return Bundler.ui.warn "The gem #{name} has been deleted. Gemspec information is still available though:\n#{gem_info}"
|
@@ -81,5 +82,13 @@ module Bundler
|
|
81
82
|
|
82
83
|
Bundler.ui.info gem_info
|
83
84
|
end
|
85
|
+
|
86
|
+
def gem_dependencies
|
87
|
+
@gem_dependencies ||= Bundler.definition.specs.map do |spec|
|
88
|
+
dependency = spec.dependencies.find {|dep| dep.name == gem_name }
|
89
|
+
next unless dependency
|
90
|
+
"#{spec.name} (#{spec.version}) depends on #{gem_name} (#{dependency.requirements_list.join(", ")})"
|
91
|
+
end.compact.sort
|
92
|
+
end
|
84
93
|
end
|
85
94
|
end
|
data/lib/bundler/cli/install.rb
CHANGED
@@ -135,32 +135,13 @@ module Bundler
|
|
135
135
|
end
|
136
136
|
|
137
137
|
def normalize_groups
|
138
|
-
options[:with] &&= options[:with].join(":").tr(" ", ":").split(":")
|
139
|
-
options[:without] &&= options[:without].join(":").tr(" ", ":").split(":")
|
140
|
-
|
141
138
|
check_for_group_conflicts_in_cli_options
|
142
139
|
|
143
|
-
|
144
|
-
Bundler.settings.set_command_option :without, nil
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
with -= options[:without] if options[:without]
|
149
|
-
|
150
|
-
without = options.fetch(:without, [])
|
151
|
-
without |= Bundler.settings[:without].map(&:to_s)
|
152
|
-
without -= options[:with] if options[:with]
|
153
|
-
|
154
|
-
options[:with] = with
|
155
|
-
options[:without] = without
|
156
|
-
|
157
|
-
unless Bundler.settings[:without] == options[:without] && Bundler.settings[:with] == options[:with]
|
158
|
-
# need to nil them out first to get around validation for backwards compatibility
|
159
|
-
Bundler.settings.set_command_option :without, nil
|
160
|
-
Bundler.settings.set_command_option :with, nil
|
161
|
-
Bundler.settings.set_command_option :without, options[:without] - options[:with]
|
162
|
-
Bundler.settings.set_command_option :with, options[:with]
|
163
|
-
end
|
140
|
+
# need to nil them out first to get around validation for backwards compatibility
|
141
|
+
Bundler.settings.set_command_option :without, nil
|
142
|
+
Bundler.settings.set_command_option :with, nil
|
143
|
+
Bundler.settings.set_command_option :without, options[:without]
|
144
|
+
Bundler.settings.set_command_option :with, options[:with]
|
164
145
|
end
|
165
146
|
|
166
147
|
def normalize_settings
|
@@ -184,7 +165,7 @@ module Bundler
|
|
184
165
|
|
185
166
|
Bundler.settings.set_command_option_if_given :clean, options["clean"]
|
186
167
|
|
187
|
-
normalize_groups
|
168
|
+
normalize_groups if options[:without] || options[:with]
|
188
169
|
|
189
170
|
options[:force] = options[:redownload]
|
190
171
|
end
|
data/lib/bundler/cli/platform.rb
CHANGED
@@ -23,7 +23,7 @@ module Bundler
|
|
23
23
|
output << "No ruby version specified"
|
24
24
|
end
|
25
25
|
else
|
26
|
-
output << "Your platform is: #{
|
26
|
+
output << "Your platform is: #{Gem::Platform.local}"
|
27
27
|
output << "Your app has gems that work on these platforms:\n#{platforms.join("\n")}"
|
28
28
|
|
29
29
|
if ruby_version
|
data/lib/bundler/cli/update.rb
CHANGED
@@ -11,12 +11,16 @@ module Bundler
|
|
11
11
|
def run
|
12
12
|
Bundler.ui.level = "warn" if options[:quiet]
|
13
13
|
|
14
|
+
update_bundler = options[:bundler]
|
15
|
+
|
16
|
+
Bundler.self_manager.update_bundler_and_restart_with_it_if_needed(update_bundler) if update_bundler
|
17
|
+
|
14
18
|
Plugin.gemfile_install(Bundler.default_gemfile) if Bundler.feature_flag.plugins?
|
15
19
|
|
16
20
|
sources = Array(options[:source])
|
17
21
|
groups = Array(options[:group]).map(&:to_sym)
|
18
22
|
|
19
|
-
full_update = gems.empty? && sources.empty? && groups.empty? && !options[:ruby] && !
|
23
|
+
full_update = gems.empty? && sources.empty? && groups.empty? && !options[:ruby] && !update_bundler
|
20
24
|
|
21
25
|
if full_update && !options[:all]
|
22
26
|
if Bundler.feature_flag.update_requires_all_flag?
|
@@ -49,7 +53,7 @@ module Bundler
|
|
49
53
|
|
50
54
|
Bundler.definition(:gems => gems, :sources => sources, :ruby => options[:ruby],
|
51
55
|
:conservative => conservative,
|
52
|
-
:bundler =>
|
56
|
+
:bundler => update_bundler)
|
53
57
|
end
|
54
58
|
|
55
59
|
Bundler::CLI::Common.configure_gem_version_promoter(Bundler.definition, options)
|
data/lib/bundler/cli.rb
CHANGED
@@ -809,17 +809,10 @@ module Bundler
|
|
809
809
|
|
810
810
|
current = Gem::Version.new(VERSION)
|
811
811
|
return if current >= latest
|
812
|
-
latest_installed = Bundler.rubygems.find_name("bundler").map(&:version).max
|
813
812
|
|
814
|
-
|
815
|
-
|
816
|
-
|
817
|
-
suggestion = "#{installation}\n#{suggestion}" if latest_installed < latest
|
818
|
-
else
|
819
|
-
suggestion = installation
|
820
|
-
end
|
821
|
-
|
822
|
-
Bundler.ui.warn "The latest bundler is #{latest}, but you are currently running #{current}.\n#{suggestion}"
|
813
|
+
Bundler.ui.warn \
|
814
|
+
"The latest bundler is #{latest}, but you are currently running #{current}.\n" \
|
815
|
+
"To update to the most recent version, run `bundle update --bundler`"
|
823
816
|
rescue RuntimeError
|
824
817
|
nil
|
825
818
|
end
|
@@ -76,15 +76,6 @@ module Bundler
|
|
76
76
|
end
|
77
77
|
end
|
78
78
|
|
79
|
-
def specific_dependency(name, version, platform)
|
80
|
-
pattern = [version, platform].compact.join("-")
|
81
|
-
return nil if pattern.empty?
|
82
|
-
|
83
|
-
gem_lines = info_path(name).read
|
84
|
-
gem_line = gem_lines[/^#{Regexp.escape(pattern)}\b.*/, 0]
|
85
|
-
gem_line ? parse_gem(gem_line) : nil
|
86
|
-
end
|
87
|
-
|
88
79
|
private
|
89
80
|
|
90
81
|
def lines(path)
|
@@ -73,12 +73,6 @@ module Bundler
|
|
73
73
|
end.flatten(1)
|
74
74
|
end
|
75
75
|
|
76
|
-
def spec(name, version, platform = nil)
|
77
|
-
Bundler::CompactIndexClient.debug { "spec(name = #{name}, version = #{version}, platform = #{platform})" }
|
78
|
-
update_info(name)
|
79
|
-
@cache.specific_dependency(name, version, platform)
|
80
|
-
end
|
81
|
-
|
82
76
|
def update_and_parse_checksums!
|
83
77
|
Bundler::CompactIndexClient.debug { "update_and_parse_checksums!" }
|
84
78
|
return @info_checksums_by_name if @parsed_checksums
|
data/lib/bundler/definition.rb
CHANGED
@@ -265,7 +265,7 @@ module Bundler
|
|
265
265
|
else
|
266
266
|
# Run a resolve against the locally available gems
|
267
267
|
Bundler.ui.debug("Found changes from the lockfile, re-resolving dependencies because #{change_reason}")
|
268
|
-
expanded_dependencies = expand_dependencies(dependencies + metadata_dependencies,
|
268
|
+
expanded_dependencies = expand_dependencies(dependencies + metadata_dependencies, true)
|
269
269
|
Resolver.resolve(expanded_dependencies, source_requirements, last_resolve, gem_version_promoter, additional_base_requirements_for_resolve, platforms)
|
270
270
|
end
|
271
271
|
end
|
@@ -309,14 +309,6 @@ module Bundler
|
|
309
309
|
end
|
310
310
|
end
|
311
311
|
|
312
|
-
def locked_bundler_version
|
313
|
-
if @locked_bundler_version && @locked_bundler_version < Gem::Version.new(Bundler::VERSION)
|
314
|
-
new_version = Bundler::VERSION
|
315
|
-
end
|
316
|
-
|
317
|
-
new_version || @locked_bundler_version || Bundler::VERSION
|
318
|
-
end
|
319
|
-
|
320
312
|
def locked_ruby_version
|
321
313
|
return unless ruby_version
|
322
314
|
if @unlock[:ruby] || !@locked_ruby_version
|
@@ -503,6 +495,7 @@ module Bundler
|
|
503
495
|
|
504
496
|
def current_ruby_platform_locked?
|
505
497
|
return false unless generic_local_platform == Gem::Platform::RUBY
|
498
|
+
return false if Bundler.settings[:force_ruby_platform] && !@platforms.include?(Gem::Platform::RUBY)
|
506
499
|
|
507
500
|
current_platform_locked?
|
508
501
|
end
|
@@ -5,14 +5,15 @@ module Bundler
|
|
5
5
|
class EndpointSpecification < Gem::Specification
|
6
6
|
include MatchPlatform
|
7
7
|
|
8
|
-
attr_reader :name, :version, :platform, :
|
8
|
+
attr_reader :name, :version, :platform, :checksum
|
9
9
|
attr_accessor :source, :remote, :dependencies
|
10
10
|
|
11
|
-
def initialize(name, version, platform, dependencies, metadata = nil)
|
11
|
+
def initialize(name, version, platform, spec_fetcher, dependencies, metadata = nil)
|
12
12
|
super()
|
13
13
|
@name = name
|
14
14
|
@version = Gem::Version.create version
|
15
15
|
@platform = platform
|
16
|
+
@spec_fetcher = spec_fetcher
|
16
17
|
@dependencies = dependencies.map {|dep, reqs| build_dependency(dep, reqs) }
|
17
18
|
|
18
19
|
@loaded_from = nil
|
@@ -21,6 +22,14 @@ module Bundler
|
|
21
22
|
parse_metadata(metadata)
|
22
23
|
end
|
23
24
|
|
25
|
+
def required_ruby_version
|
26
|
+
@required_ruby_version ||= _remote_specification.required_ruby_version
|
27
|
+
end
|
28
|
+
|
29
|
+
def required_rubygems_version
|
30
|
+
@required_rubygems_version ||= _remote_specification.required_rubygems_version
|
31
|
+
end
|
32
|
+
|
24
33
|
def fetch_platform
|
25
34
|
@platform
|
26
35
|
end
|
@@ -105,12 +114,21 @@ module Bundler
|
|
105
114
|
|
106
115
|
private
|
107
116
|
|
117
|
+
def _remote_specification
|
118
|
+
@_remote_specification ||= @spec_fetcher.fetch_spec([@name, @version, @platform])
|
119
|
+
end
|
120
|
+
|
108
121
|
def local_specification_path
|
109
122
|
"#{base_dir}/specifications/#{full_name}.gemspec"
|
110
123
|
end
|
111
124
|
|
112
125
|
def parse_metadata(data)
|
113
|
-
|
126
|
+
unless data
|
127
|
+
@required_ruby_version = nil
|
128
|
+
@required_rubygems_version = nil
|
129
|
+
return
|
130
|
+
end
|
131
|
+
|
114
132
|
data.each do |k, v|
|
115
133
|
next unless v
|
116
134
|
case k.to_s
|
data/lib/bundler/env.rb
CHANGED
@@ -71,7 +71,7 @@ module Bundler
|
|
71
71
|
def self.ruby_version
|
72
72
|
str = String.new(RUBY_VERSION)
|
73
73
|
str << "p#{RUBY_PATCHLEVEL}" if defined? RUBY_PATCHLEVEL
|
74
|
-
str << " (#{RUBY_RELEASE_DATE} revision #{RUBY_REVISION}) [#{
|
74
|
+
str << " (#{RUBY_RELEASE_DATE} revision #{RUBY_REVISION}) [#{Gem::Platform.local}]"
|
75
75
|
end
|
76
76
|
|
77
77
|
def self.git_version
|
@@ -57,16 +57,6 @@ module Bundler
|
|
57
57
|
gem_info
|
58
58
|
end
|
59
59
|
|
60
|
-
def fetch_spec(spec)
|
61
|
-
spec -= [nil, "ruby", ""]
|
62
|
-
contents = compact_index_client.spec(*spec)
|
63
|
-
return nil if contents.nil?
|
64
|
-
contents.unshift(spec.first)
|
65
|
-
contents[3].map! {|d| Gem::Dependency.new(*d) }
|
66
|
-
EndpointSpecification.new(*contents)
|
67
|
-
end
|
68
|
-
compact_index_request :fetch_spec
|
69
|
-
|
70
60
|
def available?
|
71
61
|
unless SharedHelpers.md5_available?
|
72
62
|
Bundler.ui.debug("FIPS mode is enabled, bundler can't use the CompactIndex API")
|
@@ -21,32 +21,6 @@ module Bundler
|
|
21
21
|
raise HTTPError, "Could not fetch specs from #{display_uri} due to underlying error <#{e.message}>"
|
22
22
|
end
|
23
23
|
end
|
24
|
-
|
25
|
-
def fetch_spec(spec)
|
26
|
-
spec -= [nil, "ruby", ""]
|
27
|
-
spec_file_name = "#{spec.join "-"}.gemspec"
|
28
|
-
|
29
|
-
uri = Bundler::URI.parse("#{remote_uri}#{Gem::MARSHAL_SPEC_DIR}#{spec_file_name}.rz")
|
30
|
-
if uri.scheme == "file"
|
31
|
-
path = Bundler.rubygems.correct_for_windows_path(uri.path)
|
32
|
-
Bundler.load_marshal Bundler.rubygems.inflate(Gem.read_binary(path))
|
33
|
-
elsif cached_spec_path = gemspec_cached_path(spec_file_name)
|
34
|
-
Bundler.load_gemspec(cached_spec_path)
|
35
|
-
else
|
36
|
-
Bundler.load_marshal Bundler.rubygems.inflate(downloader.fetch(uri).body)
|
37
|
-
end
|
38
|
-
rescue MarshalError
|
39
|
-
raise HTTPError, "Gemspec #{spec} contained invalid data.\n" \
|
40
|
-
"Your network or your gem server is probably having issues right now."
|
41
|
-
end
|
42
|
-
|
43
|
-
private
|
44
|
-
|
45
|
-
# cached gem specification path, if one exists
|
46
|
-
def gemspec_cached_path(spec_file_name)
|
47
|
-
paths = Bundler.rubygems.spec_cache_dirs.map {|dir| File.join(dir, spec_file_name) }
|
48
|
-
paths.find {|path| File.file? path }
|
49
|
-
end
|
50
24
|
end
|
51
25
|
end
|
52
26
|
end
|
data/lib/bundler/fetcher.rb
CHANGED
@@ -129,17 +129,15 @@ module Bundler
|
|
129
129
|
specs = fetchers.last.specs(gem_names)
|
130
130
|
else
|
131
131
|
specs = []
|
132
|
-
fetchers
|
133
|
-
|
134
|
-
break unless f.api_fetcher? && !gem_names || !specs = f.specs(gem_names)
|
135
|
-
fetchers.delete(f)
|
132
|
+
@fetchers = fetchers.drop_while do |f|
|
133
|
+
!f.available? || (f.api_fetcher? && !gem_names) || !specs = f.specs(gem_names)
|
136
134
|
end
|
137
135
|
@use_api = false if fetchers.none?(&:api_fetcher?)
|
138
136
|
end
|
139
137
|
|
140
138
|
specs.each do |name, version, platform, dependencies, metadata|
|
141
139
|
spec = if dependencies
|
142
|
-
EndpointSpecification.new(name, version, platform, dependencies, metadata)
|
140
|
+
EndpointSpecification.new(name, version, platform, self, dependencies, metadata)
|
143
141
|
else
|
144
142
|
RemoteSpecification.new(name, version, platform, self)
|
145
143
|
end
|
@@ -242,7 +240,7 @@ module Bundler
|
|
242
240
|
raise SSLError if needs_ssl && !defined?(OpenSSL::SSL)
|
243
241
|
|
244
242
|
con = PersistentHTTP.new :name => "bundler", :proxy => :ENV
|
245
|
-
if gem_proxy =
|
243
|
+
if gem_proxy = Gem.configuration[:http_proxy]
|
246
244
|
con.proxy = Bundler::URI.parse(gem_proxy) if gem_proxy != :no_proxy
|
247
245
|
end
|
248
246
|
|
@@ -253,8 +251,8 @@ module Bundler
|
|
253
251
|
end
|
254
252
|
|
255
253
|
ssl_client_cert = Bundler.settings[:ssl_client_cert] ||
|
256
|
-
(
|
257
|
-
|
254
|
+
(Gem.configuration.ssl_client_cert if
|
255
|
+
Gem.configuration.respond_to?(:ssl_client_cert))
|
258
256
|
if ssl_client_cert
|
259
257
|
pem = File.read(ssl_client_cert)
|
260
258
|
con.cert = OpenSSL::X509::Certificate.new(pem)
|
@@ -272,8 +270,7 @@ module Bundler
|
|
272
270
|
# cached gem specification path, if one exists
|
273
271
|
def gemspec_cached_path(spec_file_name)
|
274
272
|
paths = Bundler.rubygems.spec_cache_dirs.map {|dir| File.join(dir, spec_file_name) }
|
275
|
-
paths
|
276
|
-
paths.first
|
273
|
+
paths.find {|path| File.file? path }
|
277
274
|
end
|
278
275
|
|
279
276
|
HTTP_ERRORS = [
|
@@ -286,8 +283,8 @@ module Bundler
|
|
286
283
|
def bundler_cert_store
|
287
284
|
store = OpenSSL::X509::Store.new
|
288
285
|
ssl_ca_cert = Bundler.settings[:ssl_ca_cert] ||
|
289
|
-
(
|
290
|
-
|
286
|
+
(Gem.configuration.ssl_ca_cert if
|
287
|
+
Gem.configuration.respond_to?(:ssl_ca_cert))
|
291
288
|
if ssl_ca_cert
|
292
289
|
if File.directory? ssl_ca_cert
|
293
290
|
store.add_path ssl_ca_cert
|
@@ -301,8 +298,6 @@ module Bundler
|
|
301
298
|
store
|
302
299
|
end
|
303
300
|
|
304
|
-
private
|
305
|
-
|
306
301
|
def remote_uri
|
307
302
|
@remote.uri
|
308
303
|
end
|
data/lib/bundler/gem_helper.rb
CHANGED
@@ -107,9 +107,9 @@ module Bundler
|
|
107
107
|
SharedHelpers.filesystem_access(File.join(base, "checksums")) {|p| FileUtils.mkdir_p(p) }
|
108
108
|
file_name = "#{File.basename(built_gem_path)}.sha512"
|
109
109
|
require "digest/sha2"
|
110
|
-
checksum = ::Digest::SHA512.
|
110
|
+
checksum = ::Digest::SHA512.file(built_gem_path).hexdigest
|
111
111
|
target = File.join(base, "checksums", file_name)
|
112
|
-
File.write(target, checksum)
|
112
|
+
File.write(target, checksum + "\n")
|
113
113
|
Bundler.ui.confirm "#{name} #{version} checksum written to checksums/#{file_name}."
|
114
114
|
end
|
115
115
|
|
@@ -90,11 +90,11 @@ module Bundler
|
|
90
90
|
MatchPlatform.platforms_match?(spec.platform, platform_object)
|
91
91
|
end
|
92
92
|
installable_candidates = same_platform_candidates.select do |spec|
|
93
|
-
|
93
|
+
spec.is_a?(StubSpecification) ||
|
94
94
|
(spec.required_ruby_version.satisfied_by?(Gem.ruby_version) &&
|
95
95
|
spec.required_rubygems_version.satisfied_by?(Gem.rubygems_version))
|
96
96
|
end
|
97
|
-
search = installable_candidates.last
|
97
|
+
search = installable_candidates.last
|
98
98
|
search.dependencies = dependencies if search && (search.is_a?(RemoteSpecification) || search.is_a?(EndpointSpecification))
|
99
99
|
search
|
100
100
|
end
|
@@ -27,6 +27,13 @@ module Bundler
|
|
27
27
|
@platform = _remote_specification.platform
|
28
28
|
end
|
29
29
|
|
30
|
+
# A fallback is included because the original version of the specification
|
31
|
+
# API didn't include that field, so some marshalled specs in the index have it
|
32
|
+
# set to +nil+.
|
33
|
+
def required_rubygems_version
|
34
|
+
@required_rubygems_version ||= _remote_specification.required_rubygems_version || Gem::Requirement.default
|
35
|
+
end
|
36
|
+
|
30
37
|
def full_name
|
31
38
|
if platform == Gem::Platform::RUBY || platform.nil?
|
32
39
|
"#{@name}-#{@version}"
|
@@ -95,7 +95,7 @@ module Bundler
|
|
95
95
|
|
96
96
|
def metadata_dependencies(platform)
|
97
97
|
spec = @specs[platform].first
|
98
|
-
return []
|
98
|
+
return [] if spec.is_a?(LazySpecification)
|
99
99
|
dependencies = []
|
100
100
|
if !spec.required_ruby_version.nil? && !spec.required_ruby_version.none?
|
101
101
|
dependencies << DepProxy.get_proxy(Gem::Dependency.new("Ruby\0", spec.required_ruby_version), platform)
|
data/lib/bundler/resolver.rb
CHANGED
@@ -249,10 +249,11 @@ module Bundler
|
|
249
249
|
end
|
250
250
|
|
251
251
|
def verify_gemfile_dependencies_are_found!(requirements)
|
252
|
-
requirements.
|
252
|
+
requirements.map! do |requirement|
|
253
253
|
name = requirement.name
|
254
|
-
next if name == "bundler"
|
255
|
-
next unless search_for(requirement).empty?
|
254
|
+
next requirement if name == "bundler"
|
255
|
+
next requirement unless search_for(requirement).empty?
|
256
|
+
next unless requirement.current_platform?
|
256
257
|
|
257
258
|
if (base = @base[name]) && !base.empty?
|
258
259
|
version = base.first.version
|
@@ -266,7 +267,7 @@ module Bundler
|
|
266
267
|
message = gem_not_found_message(name, requirement, source_for(name))
|
267
268
|
end
|
268
269
|
raise GemNotFound, message
|
269
|
-
end
|
270
|
+
end.compact!
|
270
271
|
end
|
271
272
|
|
272
273
|
def gem_not_found_message(name, requirement, source, extra_message = "")
|
@@ -358,24 +359,18 @@ module Bundler
|
|
358
359
|
o << "\n"
|
359
360
|
o << %(Running `bundle update` will rebuild your snapshot from scratch, using only\n)
|
360
361
|
o << %(the gems in your Gemfile, which may resolve the conflict.\n)
|
361
|
-
elsif !conflict.existing
|
362
|
+
elsif !conflict.existing && !name.end_with?("\0")
|
362
363
|
o << "\n"
|
363
364
|
|
364
365
|
relevant_source = conflict.requirement.source || source_for(name)
|
365
366
|
|
366
|
-
metadata_requirement = name.end_with?("\0")
|
367
|
-
|
368
367
|
extra_message = if conflict.requirement_trees.first.size > 1
|
369
368
|
", which is required by gem '#{SharedHelpers.pretty_dependency(conflict.requirement_trees.first[-2])}',"
|
370
369
|
else
|
371
370
|
""
|
372
371
|
end
|
373
372
|
|
374
|
-
|
375
|
-
o << "#{SharedHelpers.pretty_dependency(conflict.requirement)}#{extra_message} is not available in #{relevant_source}"
|
376
|
-
else
|
377
|
-
o << gem_not_found_message(name, conflict.requirement, relevant_source, extra_message)
|
378
|
-
end
|
373
|
+
o << gem_not_found_message(name, conflict.requirement, relevant_source, extra_message)
|
379
374
|
end
|
380
375
|
end,
|
381
376
|
:version_for_spec => lambda {|spec| spec.version },
|
data/lib/bundler/ruby_version.rb
CHANGED
@@ -103,7 +103,7 @@ module Bundler
|
|
103
103
|
|
104
104
|
def self.system
|
105
105
|
ruby_engine = RUBY_ENGINE.dup
|
106
|
-
ruby_version =
|
106
|
+
ruby_version = RUBY_VERSION.dup
|
107
107
|
ruby_engine_version = RUBY_ENGINE_VERSION.dup
|
108
108
|
patchlevel = RUBY_PATCHLEVEL.to_s
|
109
109
|
|
data/lib/bundler/rubygems_ext.rb
CHANGED
@@ -4,14 +4,12 @@ require "pathname"
|
|
4
4
|
|
5
5
|
require "rubygems/specification"
|
6
6
|
|
7
|
-
# Possible use in Gem::Specification#source below and require
|
8
|
-
# shouldn't be deferred.
|
9
|
-
require "rubygems/source"
|
10
|
-
|
11
7
|
require_relative "match_platform"
|
12
8
|
|
13
9
|
module Gem
|
14
10
|
class Specification
|
11
|
+
include ::Bundler::MatchPlatform
|
12
|
+
|
15
13
|
attr_accessor :remote, :location, :relative_loaded_from
|
16
14
|
|
17
15
|
remove_method :source
|
@@ -81,6 +79,17 @@ module Gem
|
|
81
79
|
gemfile
|
82
80
|
end
|
83
81
|
|
82
|
+
# Backfill missing YAML require when not defined. Fixed since 3.1.0.pre1.
|
83
|
+
module YamlBackfiller
|
84
|
+
def to_yaml(opts = {})
|
85
|
+
Gem.load_yaml unless defined?(::YAML)
|
86
|
+
|
87
|
+
super(opts)
|
88
|
+
end
|
89
|
+
end
|
90
|
+
|
91
|
+
prepend YamlBackfiller
|
92
|
+
|
84
93
|
def nondevelopment_dependencies
|
85
94
|
dependencies - development_dependencies
|
86
95
|
end
|
@@ -228,9 +237,3 @@ module Gem
|
|
228
237
|
end
|
229
238
|
end
|
230
239
|
end
|
231
|
-
|
232
|
-
module Gem
|
233
|
-
class Specification
|
234
|
-
include ::Bundler::MatchPlatform
|
235
|
-
end
|
236
|
-
end
|
@@ -104,18 +104,6 @@ module Bundler
|
|
104
104
|
obj.to_s
|
105
105
|
end
|
106
106
|
|
107
|
-
def configuration
|
108
|
-
require_relative "psyched_yaml"
|
109
|
-
Gem.configuration
|
110
|
-
rescue Gem::SystemExitException, LoadError => e
|
111
|
-
Bundler.ui.error "#{e.class}: #{e.message}"
|
112
|
-
Bundler.ui.trace e
|
113
|
-
raise
|
114
|
-
rescue ::Psych::SyntaxError => e
|
115
|
-
raise YamlSyntaxError.new(e, "Your RubyGems configuration, which is " \
|
116
|
-
"usually located in ~/.gemrc, contains invalid YAML syntax.")
|
117
|
-
end
|
118
|
-
|
119
107
|
def ruby_engine
|
120
108
|
Gem.ruby_engine
|
121
109
|
end
|
@@ -217,7 +205,7 @@ module Bundler
|
|
217
205
|
|
218
206
|
def spec_from_gem(path, policy = nil)
|
219
207
|
require "rubygems/security"
|
220
|
-
|
208
|
+
require "psych"
|
221
209
|
gem_from_path(path, security_policies[policy]).spec
|
222
210
|
rescue Exception, Gem::Exception, Gem::Security::Exception => e # rubocop:disable Lint/RescueException
|
223
211
|
if e.is_a?(Gem::Security::Exception) ||
|
@@ -522,7 +510,7 @@ module Bundler
|
|
522
510
|
|
523
511
|
def gem_remote_fetcher
|
524
512
|
require "rubygems/remote_fetcher"
|
525
|
-
proxy = configuration[:http_proxy]
|
513
|
+
proxy = Gem.configuration[:http_proxy]
|
526
514
|
Gem::RemoteFetcher.new(proxy)
|
527
515
|
end
|
528
516
|
|
data/lib/bundler/self_manager.rb
CHANGED
@@ -9,7 +9,7 @@ module Bundler
|
|
9
9
|
def restart_with_locked_bundler_if_needed
|
10
10
|
return unless needs_switching? && installed?
|
11
11
|
|
12
|
-
|
12
|
+
restart_with(lockfile_version)
|
13
13
|
end
|
14
14
|
|
15
15
|
def install_locked_bundler_and_restart_with_it_if_needed
|
@@ -19,23 +19,48 @@ module Bundler
|
|
19
19
|
"Bundler #{current_version} is running, but your lockfile was generated with #{lockfile_version}. " \
|
20
20
|
"Installing Bundler #{lockfile_version} and restarting using that version."
|
21
21
|
|
22
|
-
|
22
|
+
install_and_restart_with(lockfile_version)
|
23
|
+
end
|
24
|
+
|
25
|
+
def update_bundler_and_restart_with_it_if_needed(target)
|
26
|
+
return unless autoswitching_applies?
|
27
|
+
|
28
|
+
spec = resolve_update_version_from(target)
|
29
|
+
return unless spec
|
30
|
+
|
31
|
+
version = spec.version
|
32
|
+
|
33
|
+
Bundler.ui.info "Updating bundler to #{version}."
|
34
|
+
|
35
|
+
install(spec)
|
36
|
+
|
37
|
+
restart_with(version)
|
23
38
|
end
|
24
39
|
|
25
40
|
private
|
26
41
|
|
27
|
-
def
|
28
|
-
|
42
|
+
def install_and_restart_with(version)
|
43
|
+
requirement = Gem::Requirement.new(version)
|
44
|
+
spec = find_latest_matching_spec(requirement)
|
29
45
|
|
30
|
-
|
46
|
+
if spec.nil?
|
47
|
+
Bundler.ui.warn "Your lockfile is locked to a version of bundler (#{lockfile_version}) that doesn't exist at https://rubygems.org/. Going on using #{current_version}"
|
48
|
+
return
|
49
|
+
end
|
50
|
+
|
51
|
+
install(spec)
|
31
52
|
rescue StandardError => e
|
32
53
|
Bundler.ui.trace e
|
33
54
|
Bundler.ui.warn "There was an error installing the locked bundler version (#{lockfile_version}), rerun with the `--verbose` flag for more details. Going on using bundler #{current_version}."
|
34
55
|
else
|
35
|
-
|
56
|
+
restart_with(version)
|
57
|
+
end
|
58
|
+
|
59
|
+
def install(spec)
|
60
|
+
spec.source.install(spec)
|
36
61
|
end
|
37
62
|
|
38
|
-
def
|
63
|
+
def restart_with(version)
|
39
64
|
configured_gem_home = ENV["GEM_HOME"]
|
40
65
|
configured_gem_path = ENV["GEM_PATH"]
|
41
66
|
|
@@ -44,33 +69,100 @@ module Bundler
|
|
44
69
|
|
45
70
|
Bundler.with_original_env do
|
46
71
|
Kernel.exec(
|
47
|
-
{ "GEM_HOME" => configured_gem_home, "GEM_PATH" => configured_gem_path, "BUNDLER_VERSION" =>
|
72
|
+
{ "GEM_HOME" => configured_gem_home, "GEM_PATH" => configured_gem_path, "BUNDLER_VERSION" => version.to_s },
|
48
73
|
*cmd
|
49
74
|
)
|
50
75
|
end
|
51
76
|
end
|
52
77
|
|
53
78
|
def needs_switching?
|
79
|
+
autoswitching_applies? &&
|
80
|
+
released?(lockfile_version) &&
|
81
|
+
!running?(lockfile_version) &&
|
82
|
+
!updating?
|
83
|
+
end
|
84
|
+
|
85
|
+
def autoswitching_applies?
|
54
86
|
ENV["BUNDLER_VERSION"].nil? &&
|
55
87
|
Bundler.rubygems.supports_bundler_trampolining? &&
|
56
88
|
SharedHelpers.in_bundle? &&
|
57
|
-
lockfile_version
|
58
|
-
|
59
|
-
|
89
|
+
lockfile_version
|
90
|
+
end
|
91
|
+
|
92
|
+
def resolve_update_version_from(target)
|
93
|
+
requirement = Gem::Requirement.new(target)
|
94
|
+
update_candidate = find_latest_matching_spec(requirement)
|
95
|
+
|
96
|
+
if update_candidate.nil?
|
97
|
+
raise InvalidOption, "The `bundle update --bundler` target version (#{target}) does not exist"
|
98
|
+
end
|
99
|
+
|
100
|
+
resolved_version = update_candidate.version
|
101
|
+
needs_update = requirement.specific? ? !running?(resolved_version) : running_older_than?(resolved_version)
|
102
|
+
|
103
|
+
return unless needs_update
|
104
|
+
|
105
|
+
update_candidate
|
106
|
+
end
|
107
|
+
|
108
|
+
def local_specs
|
109
|
+
@local_specs ||= Bundler::Source::Rubygems.new("allow_local" => true).specs.select {|spec| spec.name == "bundler" }
|
110
|
+
end
|
111
|
+
|
112
|
+
def remote_specs
|
113
|
+
@remote_specs ||= begin
|
114
|
+
source = Bundler::Source::Rubygems.new("remotes" => "https://rubygems.org")
|
115
|
+
source.remote!
|
116
|
+
source.add_dependency_names("bundler")
|
117
|
+
source.specs
|
118
|
+
end
|
119
|
+
end
|
120
|
+
|
121
|
+
def find_latest_matching_spec(requirement)
|
122
|
+
local_result = find_latest_matching_spec_from_collection(local_specs, requirement)
|
123
|
+
return local_result if local_result && requirement.specific?
|
124
|
+
|
125
|
+
remote_result = find_latest_matching_spec_from_collection(remote_specs, requirement)
|
126
|
+
return remote_result if local_result.nil?
|
127
|
+
|
128
|
+
[local_result, remote_result].max
|
129
|
+
end
|
130
|
+
|
131
|
+
def find_latest_matching_spec_from_collection(specs, requirement)
|
132
|
+
specs.sort.reverse_each.find {|spec| requirement.satisfied_by?(spec.version) }
|
133
|
+
end
|
134
|
+
|
135
|
+
def running?(version)
|
136
|
+
version == current_version
|
137
|
+
end
|
138
|
+
|
139
|
+
def running_older_than?(version)
|
140
|
+
current_version < version
|
141
|
+
end
|
142
|
+
|
143
|
+
def released?(version)
|
144
|
+
!version.to_s.end_with?(".dev")
|
145
|
+
end
|
146
|
+
|
147
|
+
def updating?
|
148
|
+
"update".start_with?(ARGV.first || " ") && ARGV[1..-1].any? {|a| a.start_with?("--bundler") }
|
60
149
|
end
|
61
150
|
|
62
151
|
def installed?
|
63
152
|
Bundler.configure
|
64
153
|
|
65
|
-
Bundler.rubygems.find_bundler(lockfile_version)
|
154
|
+
Bundler.rubygems.find_bundler(lockfile_version.to_s)
|
66
155
|
end
|
67
156
|
|
68
157
|
def current_version
|
69
|
-
@current_version ||= Bundler::VERSION
|
158
|
+
@current_version ||= Gem::Version.new(Bundler::VERSION)
|
70
159
|
end
|
71
160
|
|
72
161
|
def lockfile_version
|
73
|
-
@lockfile_version
|
162
|
+
return @lockfile_version if defined?(@lockfile_version)
|
163
|
+
|
164
|
+
parsed_version = Bundler::LockfileParser.bundled_with
|
165
|
+
@lockfile_version = parsed_version ? Gem::Version.new(parsed_version) : nil
|
74
166
|
end
|
75
167
|
end
|
76
168
|
end
|
data/lib/bundler/settings.rb
CHANGED
@@ -26,7 +26,7 @@ Gem::Specification.new do |spec|
|
|
26
26
|
# The `git ls-files -z` loads the files in the RubyGem that have been added into git.
|
27
27
|
spec.files = Dir.chdir(File.expand_path(__dir__)) do
|
28
28
|
`git ls-files -z`.split("\x0").reject do |f|
|
29
|
-
(f == __FILE__) || f.match(%r{\A(?:(?:test|spec|features)/|\.(?:git|travis|circleci)|appveyor)})
|
29
|
+
(f == __FILE__) || f.match(%r{\A(?:(?:bin|test|spec|features)/|\.(?:git|travis|circleci)|appveyor)})
|
30
30
|
end
|
31
31
|
end
|
32
32
|
spec.bindir = "exe"
|
@@ -107,10 +107,7 @@ class Bundler::Thor
|
|
107
107
|
#
|
108
108
|
def replace!(regexp, string, force)
|
109
109
|
content = File.read(destination)
|
110
|
-
|
111
|
-
snippet = (behavior == :after ? after : before).to_s
|
112
|
-
|
113
|
-
if force || !snippet.include?(replacement)
|
110
|
+
if force || !content.include?(replacement)
|
114
111
|
success = content.gsub!(regexp, string)
|
115
112
|
|
116
113
|
File.open(destination, "wb") { |file| file.write(content) } unless pretend?
|
data/lib/bundler/version.rb
CHANGED
data/lib/bundler.rb
CHANGED
@@ -654,7 +654,7 @@ EOF
|
|
654
654
|
private
|
655
655
|
|
656
656
|
def eval_yaml_gemspec(path, contents)
|
657
|
-
|
657
|
+
Kernel.require "psych"
|
658
658
|
|
659
659
|
Gem::Specification.from_yaml(contents)
|
660
660
|
rescue ::Psych::SyntaxError, ArgumentError, Gem::EndOfYAMLException, Gem::Exception
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bundler
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.3.
|
4
|
+
version: 2.3.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- André Arko
|
@@ -22,7 +22,7 @@ authors:
|
|
22
22
|
autorequire:
|
23
23
|
bindir: exe
|
24
24
|
cert_chain: []
|
25
|
-
date:
|
25
|
+
date: 2022-02-09 00:00:00.000000000 Z
|
26
26
|
dependencies: []
|
27
27
|
description: Bundler manages an application's dependencies through its entire life,
|
28
28
|
across many machines, systematically and repeatably
|
@@ -178,7 +178,6 @@ files:
|
|
178
178
|
- lib/bundler/plugin/installer/rubygems.rb
|
179
179
|
- lib/bundler/plugin/source_list.rb
|
180
180
|
- lib/bundler/process_lock.rb
|
181
|
-
- lib/bundler/psyched_yaml.rb
|
182
181
|
- lib/bundler/remote_specification.rb
|
183
182
|
- lib/bundler/resolver.rb
|
184
183
|
- lib/bundler/resolver/spec_group.rb
|
@@ -370,7 +369,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
370
369
|
- !ruby/object:Gem::Version
|
371
370
|
version: 2.5.2
|
372
371
|
requirements: []
|
373
|
-
rubygems_version: 3.3.
|
372
|
+
rubygems_version: 3.3.7
|
374
373
|
signing_key:
|
375
374
|
specification_version: 4
|
376
375
|
summary: The best way to manage your application's dependencies
|
data/lib/bundler/psyched_yaml.rb
DELETED