bundler 2.6.3 → 2.6.9
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 +119 -6
- data/README.md +1 -1
- data/lib/bundler/build_metadata.rb +2 -2
- data/lib/bundler/checksum.rb +22 -12
- data/lib/bundler/cli/console.rb +8 -6
- data/lib/bundler/cli/doctor/diagnose.rb +167 -0
- data/lib/bundler/cli/doctor/ssl.rb +249 -0
- data/lib/bundler/cli/doctor.rb +27 -151
- data/lib/bundler/cli/info.rb +4 -4
- data/lib/bundler/cli/inject.rb +2 -2
- data/lib/bundler/cli/issue.rb +3 -3
- data/lib/bundler/cli/lock.rb +2 -1
- data/lib/bundler/cli/show.rb +1 -1
- data/lib/bundler/cli.rb +2 -11
- data/lib/bundler/compact_index_client/cache.rb +1 -1
- data/lib/bundler/compact_index_client/parser.rb +1 -1
- data/lib/bundler/compact_index_client/updater.rb +2 -1
- data/lib/bundler/current_ruby.rb +23 -33
- data/lib/bundler/definition.rb +220 -184
- data/lib/bundler/dependency.rb +92 -47
- data/lib/bundler/dsl.rb +84 -80
- data/lib/bundler/endpoint_specification.rb +10 -3
- data/lib/bundler/errors.rb +22 -0
- data/lib/bundler/friendly_errors.rb +1 -1
- data/lib/bundler/gem_helpers.rb +4 -10
- data/lib/bundler/gem_version_promoter.rb +0 -2
- data/lib/bundler/injector.rb +9 -9
- data/lib/bundler/installer.rb +2 -2
- data/lib/bundler/lazy_specification.rb +67 -45
- data/lib/bundler/lockfile_parser.rb +8 -5
- data/lib/bundler/man/bundle-add.1 +1 -1
- data/lib/bundler/man/bundle-binstubs.1 +1 -1
- data/lib/bundler/man/bundle-cache.1 +1 -1
- data/lib/bundler/man/bundle-check.1 +1 -1
- data/lib/bundler/man/bundle-clean.1 +1 -1
- data/lib/bundler/man/bundle-config.1 +6 -6
- data/lib/bundler/man/bundle-config.1.ronn +9 -4
- data/lib/bundler/man/bundle-console.1 +1 -1
- data/lib/bundler/man/bundle-doctor.1 +1 -1
- data/lib/bundler/man/bundle-env.1 +1 -1
- data/lib/bundler/man/bundle-exec.1 +3 -3
- data/lib/bundler/man/bundle-exec.1.ronn +2 -2
- data/lib/bundler/man/bundle-fund.1 +1 -1
- data/lib/bundler/man/bundle-gem.1 +1 -1
- data/lib/bundler/man/bundle-help.1 +1 -1
- data/lib/bundler/man/bundle-info.1 +1 -1
- data/lib/bundler/man/bundle-init.1 +1 -1
- data/lib/bundler/man/bundle-inject.1 +1 -1
- data/lib/bundler/man/bundle-install.1 +1 -1
- data/lib/bundler/man/bundle-issue.1 +1 -1
- data/lib/bundler/man/bundle-licenses.1 +1 -1
- data/lib/bundler/man/bundle-list.1 +1 -1
- data/lib/bundler/man/bundle-lock.1 +1 -1
- data/lib/bundler/man/bundle-open.1 +1 -1
- data/lib/bundler/man/bundle-outdated.1 +1 -1
- data/lib/bundler/man/bundle-platform.1 +1 -1
- data/lib/bundler/man/bundle-plugin.1 +1 -1
- data/lib/bundler/man/bundle-pristine.1 +1 -1
- data/lib/bundler/man/bundle-remove.1 +1 -1
- data/lib/bundler/man/bundle-show.1 +1 -1
- data/lib/bundler/man/bundle-update.1 +1 -1
- data/lib/bundler/man/bundle-version.1 +1 -1
- data/lib/bundler/man/bundle-viz.1 +1 -1
- data/lib/bundler/man/bundle.1 +1 -1
- data/lib/bundler/man/gemfile.5 +1 -1
- data/lib/bundler/match_metadata.rb +13 -0
- data/lib/bundler/plugin/api/source.rb +1 -1
- data/lib/bundler/plugin/index.rb +1 -1
- data/lib/bundler/plugin/installer/path.rb +8 -0
- data/lib/bundler/plugin.rb +1 -1
- data/lib/bundler/resolver/candidate.rb +12 -9
- data/lib/bundler/resolver/package.rb +7 -3
- data/lib/bundler/resolver/spec_group.rb +1 -25
- data/lib/bundler/resolver/strategy.rb +40 -0
- data/lib/bundler/resolver.rb +29 -27
- data/lib/bundler/rubygems_ext.rb +97 -81
- data/lib/bundler/rubygems_integration.rb +2 -3
- data/lib/bundler/runtime.rb +27 -29
- data/lib/bundler/shared_helpers.rb +4 -0
- data/lib/bundler/source/gemspec.rb +1 -4
- data/lib/bundler/source/git/git_proxy.rb +14 -3
- data/lib/bundler/source/git.rb +5 -1
- data/lib/bundler/source/path.rb +2 -2
- data/lib/bundler/source/rubygems/remote.rb +11 -3
- data/lib/bundler/source/rubygems.rb +19 -4
- data/lib/bundler/source.rb +2 -0
- data/lib/bundler/source_list.rb +33 -11
- data/lib/bundler/spec_set.rb +98 -40
- data/lib/bundler/templates/newgem/Gemfile.tt +1 -0
- data/lib/bundler/vendor/connection_pool/lib/connection_pool/timed_stack.rb +53 -3
- data/lib/bundler/vendor/connection_pool/lib/connection_pool/version.rb +1 -1
- data/lib/bundler/vendor/connection_pool/lib/connection_pool.rb +11 -0
- data/lib/bundler/vendor/pub_grub/lib/pub_grub/basic_package_source.rb +4 -24
- data/lib/bundler/vendor/pub_grub/lib/pub_grub/strategy.rb +42 -0
- data/lib/bundler/vendor/pub_grub/lib/pub_grub/version_range.rb +20 -8
- data/lib/bundler/vendor/pub_grub/lib/pub_grub/version_solver.rb +17 -29
- data/lib/bundler/vendor/uri/lib/uri/common.rb +7 -3
- data/lib/bundler/vendor/uri/lib/uri/generic.rb +12 -11
- data/lib/bundler/vendor/uri/lib/uri/rfc2396_parser.rb +6 -6
- data/lib/bundler/vendor/uri/lib/uri/version.rb +1 -1
- data/lib/bundler/version.rb +1 -1
- metadata +7 -4
- data/lib/bundler/compact_index_client/gem_parser.rb +0 -32
@@ -79,29 +79,17 @@ module Bundler::PubGrub
|
|
79
79
|
dependencies_for(@root_package, @root_version)
|
80
80
|
end
|
81
81
|
|
82
|
-
# Override me (maybe)
|
83
|
-
#
|
84
|
-
# If not overridden, the order returned by all_versions_for will be used
|
85
|
-
#
|
86
|
-
# Returns: Array of versions in preferred order
|
87
|
-
def sort_versions_by_preferred(package, sorted_versions)
|
88
|
-
indexes = @version_indexes[package]
|
89
|
-
sorted_versions.sort_by { |version| indexes[version] }
|
90
|
-
end
|
91
|
-
|
92
82
|
def initialize
|
93
83
|
@root_package = Package.root
|
94
84
|
@root_version = Package.root_version
|
95
85
|
|
96
|
-
@
|
86
|
+
@sorted_versions = Hash.new do |h,k|
|
97
87
|
if k == @root_package
|
98
88
|
h[k] = [@root_version]
|
99
89
|
else
|
100
|
-
h[k] = all_versions_for(k)
|
90
|
+
h[k] = all_versions_for(k).sort
|
101
91
|
end
|
102
92
|
end
|
103
|
-
@sorted_versions = Hash.new { |h,k| h[k] = @cached_versions[k].sort }
|
104
|
-
@version_indexes = Hash.new { |h,k| h[k] = @cached_versions[k].each.with_index.to_h }
|
105
93
|
|
106
94
|
@cached_dependencies = Hash.new do |packages, package|
|
107
95
|
if package == @root_package
|
@@ -117,15 +105,7 @@ module Bundler::PubGrub
|
|
117
105
|
end
|
118
106
|
|
119
107
|
def versions_for(package, range=VersionRange.any)
|
120
|
-
|
121
|
-
|
122
|
-
# Conditional avoids (among other things) calling
|
123
|
-
# sort_versions_by_preferred with the root package
|
124
|
-
if versions.size > 1
|
125
|
-
sort_versions_by_preferred(package, versions)
|
126
|
-
else
|
127
|
-
versions
|
128
|
-
end
|
108
|
+
range.select_versions(@sorted_versions[package])
|
129
109
|
end
|
130
110
|
|
131
111
|
def no_versions_incompatibility_for(_package, unsatisfied_term)
|
@@ -164,7 +144,7 @@ module Bundler::PubGrub
|
|
164
144
|
sorted_versions[high]
|
165
145
|
end
|
166
146
|
|
167
|
-
range = VersionRange.new(min: low, max: high, include_min:
|
147
|
+
range = VersionRange.new(min: low, max: high, include_min: !low.nil?)
|
168
148
|
|
169
149
|
self_constraint = VersionConstraint.new(package, range: range)
|
170
150
|
|
@@ -0,0 +1,42 @@
|
|
1
|
+
module Bundler::PubGrub
|
2
|
+
class Strategy
|
3
|
+
def initialize(source)
|
4
|
+
@source = source
|
5
|
+
|
6
|
+
@root_package = Package.root
|
7
|
+
@root_version = Package.root_version
|
8
|
+
|
9
|
+
@version_indexes = Hash.new do |h,k|
|
10
|
+
if k == @root_package
|
11
|
+
h[k] = { @root_version => 0 }
|
12
|
+
else
|
13
|
+
h[k] = @source.all_versions_for(k).each.with_index.to_h
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
def next_package_and_version(unsatisfied)
|
19
|
+
package, range = next_term_to_try_from(unsatisfied)
|
20
|
+
|
21
|
+
[package, most_preferred_version_of(package, range)]
|
22
|
+
end
|
23
|
+
|
24
|
+
private
|
25
|
+
|
26
|
+
def most_preferred_version_of(package, range)
|
27
|
+
versions = @source.versions_for(package, range)
|
28
|
+
|
29
|
+
indexes = @version_indexes[package]
|
30
|
+
versions.min_by { |version| indexes[version] }
|
31
|
+
end
|
32
|
+
|
33
|
+
def next_term_to_try_from(unsatisfied)
|
34
|
+
unsatisfied.min_by do |package, range|
|
35
|
+
matching_versions = @source.versions_for(package, range)
|
36
|
+
higher_versions = @source.versions_for(package, range.upper_invert)
|
37
|
+
|
38
|
+
[matching_versions.count <= 1 ? 0 : 1, higher_versions.count]
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
@@ -76,6 +76,9 @@ module Bundler::PubGrub
|
|
76
76
|
end
|
77
77
|
|
78
78
|
def initialize(min: nil, max: nil, include_min: false, include_max: false, name: nil)
|
79
|
+
raise ArgumentError, "Ranges without a lower bound cannot have include_min == true" if !min && include_min == true
|
80
|
+
raise ArgumentError, "Ranges without an upper bound cannot have include_max == true" if !max && include_max == true
|
81
|
+
|
79
82
|
@min = min
|
80
83
|
@max = max
|
81
84
|
@include_min = include_min
|
@@ -311,10 +314,19 @@ module Bundler::PubGrub
|
|
311
314
|
|
312
315
|
def contiguous_to?(other)
|
313
316
|
return false if other.empty?
|
317
|
+
return true if any?
|
318
|
+
|
319
|
+
intersects?(other) || contiguous_below?(other) || contiguous_above?(other)
|
320
|
+
end
|
321
|
+
|
322
|
+
def contiguous_below?(other)
|
323
|
+
return false if !max || !other.min
|
324
|
+
|
325
|
+
max == other.min && (include_max || other.include_min)
|
326
|
+
end
|
314
327
|
|
315
|
-
|
316
|
-
|
317
|
-
(max == other.min && (include_max || other.include_min))
|
328
|
+
def contiguous_above?(other)
|
329
|
+
other.contiguous_below?(self)
|
318
330
|
end
|
319
331
|
|
320
332
|
def allows_all?(other)
|
@@ -375,15 +387,15 @@ module Bundler::PubGrub
|
|
375
387
|
def invert
|
376
388
|
return self.class.empty if any?
|
377
389
|
|
378
|
-
low = VersionRange.new(max: min, include_max: !include_min)
|
379
|
-
high = VersionRange.new(min: max, include_min: !include_max)
|
390
|
+
low = -> { VersionRange.new(max: min, include_max: !include_min) }
|
391
|
+
high = -> { VersionRange.new(min: max, include_min: !include_max) }
|
380
392
|
|
381
393
|
if !min
|
382
|
-
high
|
394
|
+
high.call
|
383
395
|
elsif !max
|
384
|
-
low
|
396
|
+
low.call
|
385
397
|
else
|
386
|
-
low.union(high)
|
398
|
+
low.call.union(high.call)
|
387
399
|
end
|
388
400
|
end
|
389
401
|
|
@@ -2,17 +2,20 @@ require_relative 'partial_solution'
|
|
2
2
|
require_relative 'term'
|
3
3
|
require_relative 'incompatibility'
|
4
4
|
require_relative 'solve_failure'
|
5
|
+
require_relative 'strategy'
|
5
6
|
|
6
7
|
module Bundler::PubGrub
|
7
8
|
class VersionSolver
|
8
9
|
attr_reader :logger
|
9
10
|
attr_reader :source
|
10
11
|
attr_reader :solution
|
12
|
+
attr_reader :strategy
|
11
13
|
|
12
|
-
def initialize(source:, root: Package.root, logger: Bundler::PubGrub.logger)
|
14
|
+
def initialize(source:, root: Package.root, strategy: Strategy.new(source), logger: Bundler::PubGrub.logger)
|
13
15
|
@logger = logger
|
14
16
|
|
15
17
|
@source = source
|
18
|
+
@strategy = strategy
|
16
19
|
|
17
20
|
# { package => [incompatibility, ...]}
|
18
21
|
@incompatibilities = Hash.new do |h, k|
|
@@ -36,26 +39,25 @@ module Bundler::PubGrub
|
|
36
39
|
|
37
40
|
# Returns true if there is more work to be done, false otherwise
|
38
41
|
def work
|
39
|
-
|
40
|
-
|
41
|
-
next_package = choose_package_version
|
42
|
-
propagate(next_package)
|
43
|
-
|
44
|
-
if solved?
|
42
|
+
unsatisfied_terms = solution.unsatisfied
|
43
|
+
if unsatisfied_terms.empty?
|
45
44
|
logger.info { "Solution found after #{solution.attempted_solutions} attempts:" }
|
46
45
|
solution.decisions.each do |package, version|
|
47
46
|
next if Package.root?(package)
|
48
47
|
logger.info { "* #{package} #{version}" }
|
49
48
|
end
|
50
49
|
|
51
|
-
false
|
52
|
-
else
|
53
|
-
true
|
50
|
+
return false
|
54
51
|
end
|
52
|
+
|
53
|
+
next_package = choose_package_version_from(unsatisfied_terms)
|
54
|
+
propagate(next_package)
|
55
|
+
|
56
|
+
true
|
55
57
|
end
|
56
58
|
|
57
59
|
def solve
|
58
|
-
work
|
60
|
+
while work; end
|
59
61
|
|
60
62
|
solution.decisions
|
61
63
|
end
|
@@ -105,29 +107,15 @@ module Bundler::PubGrub
|
|
105
107
|
unsatisfied.package
|
106
108
|
end
|
107
109
|
|
108
|
-
def
|
109
|
-
|
110
|
-
package = term.package
|
111
|
-
range = term.constraint.range
|
112
|
-
matching_versions = source.versions_for(package, range)
|
113
|
-
higher_versions = source.versions_for(package, range.upper_invert)
|
110
|
+
def choose_package_version_from(unsatisfied_terms)
|
111
|
+
remaining = unsatisfied_terms.map { |t| [t.package, t.constraint.range] }.to_h
|
114
112
|
|
115
|
-
|
116
|
-
end.package
|
117
|
-
end
|
118
|
-
|
119
|
-
def choose_package_version
|
120
|
-
if solution.unsatisfied.empty?
|
121
|
-
logger.info "No packages unsatisfied. Solving complete!"
|
122
|
-
return nil
|
123
|
-
end
|
113
|
+
package, version = strategy.next_package_and_version(remaining)
|
124
114
|
|
125
|
-
package = next_package_to_try
|
126
|
-
unsatisfied_term = solution.unsatisfied.find { |t| t.package == package }
|
127
|
-
version = source.versions_for(package, unsatisfied_term.constraint.range).first
|
128
115
|
logger.debug { "attempting #{package} #{version}" }
|
129
116
|
|
130
117
|
if version.nil?
|
118
|
+
unsatisfied_term = unsatisfied_terms.find { |t| t.package == package }
|
131
119
|
add_incompatibility source.no_versions_incompatibility_for(package, unsatisfied_term)
|
132
120
|
return package
|
133
121
|
end
|
@@ -13,15 +13,19 @@ require_relative "rfc2396_parser"
|
|
13
13
|
require_relative "rfc3986_parser"
|
14
14
|
|
15
15
|
module Bundler::URI
|
16
|
+
# The default parser instance for RFC 2396.
|
16
17
|
RFC2396_PARSER = RFC2396_Parser.new
|
17
18
|
Ractor.make_shareable(RFC2396_PARSER) if defined?(Ractor)
|
18
19
|
|
20
|
+
# The default parser instance for RFC 3986.
|
19
21
|
RFC3986_PARSER = RFC3986_Parser.new
|
20
22
|
Ractor.make_shareable(RFC3986_PARSER) if defined?(Ractor)
|
21
23
|
|
24
|
+
# The default parser instance.
|
22
25
|
DEFAULT_PARSER = RFC3986_PARSER
|
23
26
|
Ractor.make_shareable(DEFAULT_PARSER) if defined?(Ractor)
|
24
27
|
|
28
|
+
# Set the default parser instance.
|
25
29
|
def self.parser=(parser = RFC3986_PARSER)
|
26
30
|
remove_const(:Parser) if defined?(::Bundler::URI::Parser)
|
27
31
|
const_set("Parser", parser.class)
|
@@ -40,7 +44,7 @@ module Bundler::URI
|
|
40
44
|
end
|
41
45
|
self.parser = RFC3986_PARSER
|
42
46
|
|
43
|
-
def self.const_missing(const)
|
47
|
+
def self.const_missing(const) # :nodoc:
|
44
48
|
if const == :REGEXP
|
45
49
|
warn "Bundler::URI::REGEXP is obsolete. Use Bundler::URI::RFC2396_REGEXP explicitly.", uplevel: 1 if $VERBOSE
|
46
50
|
Bundler::URI::RFC2396_REGEXP
|
@@ -87,7 +91,7 @@ module Bundler::URI
|
|
87
91
|
module_function :make_components_hash
|
88
92
|
end
|
89
93
|
|
90
|
-
module Schemes
|
94
|
+
module Schemes # :nodoc:
|
91
95
|
end
|
92
96
|
private_constant :Schemes
|
93
97
|
|
@@ -305,7 +309,7 @@ module Bundler::URI
|
|
305
309
|
256.times do |i|
|
306
310
|
TBLENCWWWCOMP_[-i.chr] = -('%%%02X' % i)
|
307
311
|
end
|
308
|
-
TBLENCURICOMP_ = TBLENCWWWCOMP_.dup.freeze
|
312
|
+
TBLENCURICOMP_ = TBLENCWWWCOMP_.dup.freeze # :nodoc:
|
309
313
|
TBLENCWWWCOMP_[' '] = '+'
|
310
314
|
TBLENCWWWCOMP_.freeze
|
311
315
|
TBLDECWWWCOMP_ = {} # :nodoc:
|
@@ -737,12 +737,12 @@ module Bundler::URI
|
|
737
737
|
end
|
738
738
|
private :check_registry
|
739
739
|
|
740
|
-
def set_registry(v)
|
740
|
+
def set_registry(v) # :nodoc:
|
741
741
|
raise InvalidURIError, "cannot set registry"
|
742
742
|
end
|
743
743
|
protected :set_registry
|
744
744
|
|
745
|
-
def registry=(v)
|
745
|
+
def registry=(v) # :nodoc:
|
746
746
|
raise InvalidURIError, "cannot set registry"
|
747
747
|
end
|
748
748
|
|
@@ -1133,17 +1133,16 @@ module Bundler::URI
|
|
1133
1133
|
base.fragment=(nil)
|
1134
1134
|
|
1135
1135
|
# RFC2396, Section 5.2, 4)
|
1136
|
-
if
|
1137
|
-
base.
|
1138
|
-
|
1139
|
-
|
1140
|
-
base.set_path(rel.path)
|
1136
|
+
if authority
|
1137
|
+
base.set_userinfo(rel.userinfo)
|
1138
|
+
base.set_host(rel.host)
|
1139
|
+
base.set_port(rel.port || base.default_port)
|
1140
|
+
base.set_path(rel.path)
|
1141
|
+
elsif base.path && rel.path
|
1142
|
+
base.set_path(merge_path(base.path, rel.path))
|
1141
1143
|
end
|
1142
1144
|
|
1143
1145
|
# RFC2396, Section 5.2, 7)
|
1144
|
-
base.set_userinfo(rel.userinfo) if rel.userinfo
|
1145
|
-
base.set_host(rel.host) if rel.host
|
1146
|
-
base.set_port(rel.port) if rel.port
|
1147
1146
|
base.query = rel.query if rel.query
|
1148
1147
|
base.fragment=(rel.fragment) if rel.fragment
|
1149
1148
|
|
@@ -1392,10 +1391,12 @@ module Bundler::URI
|
|
1392
1391
|
end
|
1393
1392
|
end
|
1394
1393
|
|
1394
|
+
# Returns the hash value.
|
1395
1395
|
def hash
|
1396
1396
|
self.component_ary.hash
|
1397
1397
|
end
|
1398
1398
|
|
1399
|
+
# Compares with _oth_ for Hash.
|
1399
1400
|
def eql?(oth)
|
1400
1401
|
self.class == oth.class &&
|
1401
1402
|
parser == oth.parser &&
|
@@ -1438,7 +1439,7 @@ module Bundler::URI
|
|
1438
1439
|
end
|
1439
1440
|
end
|
1440
1441
|
|
1441
|
-
def inspect
|
1442
|
+
def inspect # :nodoc:
|
1442
1443
|
"#<#{self.class} #{self}>"
|
1443
1444
|
end
|
1444
1445
|
|
@@ -321,14 +321,14 @@ module Bundler::URI
|
|
321
321
|
str.gsub(escaped) { [$&[1, 2]].pack('H2').force_encoding(enc) }
|
322
322
|
end
|
323
323
|
|
324
|
-
|
325
|
-
if
|
326
|
-
def inspect
|
327
|
-
|
324
|
+
TO_S = Kernel.instance_method(:to_s) # :nodoc:
|
325
|
+
if TO_S.respond_to?(:bind_call)
|
326
|
+
def inspect # :nodoc:
|
327
|
+
TO_S.bind_call(self)
|
328
328
|
end
|
329
329
|
else
|
330
|
-
def inspect
|
331
|
-
|
330
|
+
def inspect # :nodoc:
|
331
|
+
TO_S.bind(self).call
|
332
332
|
end
|
333
333
|
end
|
334
334
|
|
data/lib/bundler/version.rb
CHANGED
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.6.
|
4
|
+
version: 2.6.9
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- André Arko
|
@@ -21,7 +21,7 @@ authors:
|
|
21
21
|
- Yehuda Katz
|
22
22
|
bindir: exe
|
23
23
|
cert_chain: []
|
24
|
-
date:
|
24
|
+
date: 1980-01-02 00:00:00.000000000 Z
|
25
25
|
dependencies: []
|
26
26
|
description: Bundler manages an application's dependencies through its entire life,
|
27
27
|
across many machines, systematically and repeatably
|
@@ -55,6 +55,8 @@ files:
|
|
55
55
|
- lib/bundler/cli/config.rb
|
56
56
|
- lib/bundler/cli/console.rb
|
57
57
|
- lib/bundler/cli/doctor.rb
|
58
|
+
- lib/bundler/cli/doctor/diagnose.rb
|
59
|
+
- lib/bundler/cli/doctor/ssl.rb
|
58
60
|
- lib/bundler/cli/exec.rb
|
59
61
|
- lib/bundler/cli/fund.rb
|
60
62
|
- lib/bundler/cli/gem.rb
|
@@ -77,7 +79,6 @@ files:
|
|
77
79
|
- lib/bundler/compact_index_client.rb
|
78
80
|
- lib/bundler/compact_index_client/cache.rb
|
79
81
|
- lib/bundler/compact_index_client/cache_file.rb
|
80
|
-
- lib/bundler/compact_index_client/gem_parser.rb
|
81
82
|
- lib/bundler/compact_index_client/parser.rb
|
82
83
|
- lib/bundler/compact_index_client/updater.rb
|
83
84
|
- lib/bundler/constants.rb
|
@@ -210,6 +211,7 @@ files:
|
|
210
211
|
- lib/bundler/resolver/package.rb
|
211
212
|
- lib/bundler/resolver/root.rb
|
212
213
|
- lib/bundler/resolver/spec_group.rb
|
214
|
+
- lib/bundler/resolver/strategy.rb
|
213
215
|
- lib/bundler/retry.rb
|
214
216
|
- lib/bundler/ruby_dsl.rb
|
215
217
|
- lib/bundler/ruby_version.rb
|
@@ -310,6 +312,7 @@ files:
|
|
310
312
|
- lib/bundler/vendor/pub_grub/lib/pub_grub/rubygems.rb
|
311
313
|
- lib/bundler/vendor/pub_grub/lib/pub_grub/solve_failure.rb
|
312
314
|
- lib/bundler/vendor/pub_grub/lib/pub_grub/static_package_source.rb
|
315
|
+
- lib/bundler/vendor/pub_grub/lib/pub_grub/strategy.rb
|
313
316
|
- lib/bundler/vendor/pub_grub/lib/pub_grub/term.rb
|
314
317
|
- lib/bundler/vendor/pub_grub/lib/pub_grub/version.rb
|
315
318
|
- lib/bundler/vendor/pub_grub/lib/pub_grub/version_constraint.rb
|
@@ -411,7 +414,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
411
414
|
- !ruby/object:Gem::Version
|
412
415
|
version: 3.3.3
|
413
416
|
requirements: []
|
414
|
-
rubygems_version: 3.6.
|
417
|
+
rubygems_version: 3.6.9
|
415
418
|
specification_version: 4
|
416
419
|
summary: The best way to manage your application's dependencies
|
417
420
|
test_files: []
|
@@ -1,32 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Bundler
|
4
|
-
class CompactIndexClient
|
5
|
-
if defined?(Gem::Resolver::APISet::GemParser)
|
6
|
-
GemParser = Gem::Resolver::APISet::GemParser
|
7
|
-
else
|
8
|
-
class GemParser
|
9
|
-
EMPTY_ARRAY = [].freeze
|
10
|
-
private_constant :EMPTY_ARRAY
|
11
|
-
|
12
|
-
def parse(line)
|
13
|
-
version_and_platform, rest = line.split(" ", 2)
|
14
|
-
version, platform = version_and_platform.split("-", 2)
|
15
|
-
dependencies, requirements = rest.split("|", 2).map! {|s| s.split(",") } if rest
|
16
|
-
dependencies = dependencies ? dependencies.map! {|d| parse_dependency(d) } : EMPTY_ARRAY
|
17
|
-
requirements = requirements ? requirements.map! {|d| parse_dependency(d) } : EMPTY_ARRAY
|
18
|
-
[version, platform, dependencies, requirements]
|
19
|
-
end
|
20
|
-
|
21
|
-
private
|
22
|
-
|
23
|
-
def parse_dependency(string)
|
24
|
-
dependency = string.split(":")
|
25
|
-
dependency[-1] = dependency[-1].split("&") if dependency.size > 1
|
26
|
-
dependency[0] = -dependency[0]
|
27
|
-
dependency
|
28
|
-
end
|
29
|
-
end
|
30
|
-
end
|
31
|
-
end
|
32
|
-
end
|