bundler 2.3.3 → 2.3.7
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 +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