pub_grub 0.4.1 → 0.4.2
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/.gitmodules +3 -0
- data/.travis.yml +1 -0
- data/Gemfile.lock +1 -1
- data/bin/console +4 -3
- data/lib/pub_grub/basic_package_source.rb +13 -3
- data/lib/pub_grub/rubygems.rb +3 -9
- data/lib/pub_grub/term.rb +0 -3
- data/lib/pub_grub/version_range.rb +5 -1
- data/lib/pub_grub/version_solver.rb +1 -0
- data/lib/pub_grub/version_union.rb +9 -20
- data/pub_grub.gemspec +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5b0b0a89dd31b84300d59b3a6d5b051136d0658cb7046d49412b6ad4518eeb30
|
4
|
+
data.tar.gz: dabfb9a2e6b1d00657f41933b89b48909ce61683de37ca62601abfdaad0cc89c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 35b94b554e04473d65c9e81d6036b1dd76025901b86b2c06a2551e7b116e94b8da3e8a91dcbb9308f03b645eed32f2dac8d51ab484a6e34e5a360a62e382a459
|
7
|
+
data.tar.gz: 4b38762754fc5226f034d5659ee62ac46ff22107038ac421d2823f3d2a54f146586ee0c6f321c1e3618b07fe3565130827bfc0fd94b355bb537a4108dc23e0c4
|
data/.gitmodules
ADDED
data/.travis.yml
CHANGED
data/Gemfile.lock
CHANGED
data/bin/console
CHANGED
@@ -2,6 +2,7 @@
|
|
2
2
|
|
3
3
|
require "bundler/setup"
|
4
4
|
require "pub_grub"
|
5
|
+
require "pub_grub/rubygems"
|
5
6
|
|
6
7
|
source =
|
7
8
|
PubGrub::StaticPackageSource.new do |s|
|
@@ -11,11 +12,11 @@ source =
|
|
11
12
|
|
12
13
|
s.add "bar", "2.0.0"
|
13
14
|
s.add "bar", "1.0.0"
|
14
|
-
end
|
15
15
|
|
16
|
-
|
17
|
-
|
16
|
+
s.root deps: { "foo" => ">= 0" }
|
17
|
+
end
|
18
18
|
|
19
|
+
root = PubGrub::Package.root
|
19
20
|
solver = PubGrub::VersionSolver.new(source: source)
|
20
21
|
|
21
22
|
require 'irb'
|
@@ -79,6 +79,16 @@ module 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
|
+
|
82
92
|
def initialize
|
83
93
|
@root_package = Package.root
|
84
94
|
@root_version = Package.root_version
|
@@ -91,6 +101,7 @@ module PubGrub
|
|
91
101
|
end
|
92
102
|
end
|
93
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 }
|
94
105
|
|
95
106
|
@cached_dependencies = Hash.new do |packages, package|
|
96
107
|
if package == @root_package
|
@@ -106,9 +117,8 @@ module PubGrub
|
|
106
117
|
end
|
107
118
|
|
108
119
|
def versions_for(package, range=VersionRange.any)
|
109
|
-
@
|
110
|
-
|
111
|
-
end
|
120
|
+
versions = range.select_versions(@sorted_versions[package])
|
121
|
+
sort_versions_by_preferred(package, versions)
|
112
122
|
end
|
113
123
|
|
114
124
|
def incompatibilities_for(package, version)
|
data/lib/pub_grub/rubygems.rb
CHANGED
@@ -1,5 +1,3 @@
|
|
1
|
-
require 'rubygems/requirement'
|
2
|
-
|
3
1
|
module PubGrub
|
4
2
|
module RubyGems
|
5
3
|
extend self
|
@@ -8,16 +6,12 @@ module PubGrub
|
|
8
6
|
ranges = requirement.requirements.map do |(op, ver)|
|
9
7
|
case op
|
10
8
|
when "~>"
|
11
|
-
|
12
|
-
VersionRange.new(min: ver, max:
|
9
|
+
bump = ver.class.new(ver.bump.to_s + ".A")
|
10
|
+
VersionRange.new(min: ver, max: bump, include_min: true)
|
13
11
|
when ">"
|
14
12
|
VersionRange.new(min: ver)
|
15
13
|
when ">="
|
16
|
-
|
17
|
-
VersionRange.any
|
18
|
-
else
|
19
|
-
VersionRange.new(min: ver, include_min: true)
|
20
|
-
end
|
14
|
+
VersionRange.new(min: ver, include_min: true)
|
21
15
|
when "<"
|
22
16
|
VersionRange.new(max: ver)
|
23
17
|
when "<="
|
data/lib/pub_grub/term.rb
CHANGED
@@ -26,9 +26,6 @@ module PubGrub
|
|
26
26
|
def intersect(other)
|
27
27
|
raise ArgumentError, "packages must match" if package != other.package
|
28
28
|
|
29
|
-
return self if relation(other) == :subset
|
30
|
-
return other if other.relation(self) == :subset
|
31
|
-
|
32
29
|
if positive? && other.positive?
|
33
30
|
self.class.new(constraint.intersect(other.constraint), true)
|
34
31
|
elsif negative? && other.negative?
|
@@ -75,6 +75,10 @@ module PubGrub
|
|
75
75
|
end
|
76
76
|
end
|
77
77
|
|
78
|
+
def ranges
|
79
|
+
[self]
|
80
|
+
end
|
81
|
+
|
78
82
|
def include?(version)
|
79
83
|
compare_version(version) == 0
|
80
84
|
end
|
@@ -315,7 +319,7 @@ module PubGrub
|
|
315
319
|
return ["#{min}"] if min == max
|
316
320
|
|
317
321
|
# FIXME: remove this
|
318
|
-
if min && max && include_min && !include_max && min.respond_to?(:bump) && min.bump == max
|
322
|
+
if min && max && include_min && !include_max && min.respond_to?(:bump) && (min.bump.to_s + ".A") == max.to_s
|
319
323
|
return ["~> #{min}"]
|
320
324
|
end
|
321
325
|
|
@@ -6,11 +6,7 @@ module PubGrub
|
|
6
6
|
|
7
7
|
def self.normalize_ranges(ranges)
|
8
8
|
ranges = ranges.flat_map do |range|
|
9
|
-
|
10
|
-
range.ranges
|
11
|
-
else
|
12
|
-
[range]
|
13
|
-
end
|
9
|
+
range.ranges
|
14
10
|
end
|
15
11
|
|
16
12
|
ranges.reject!(&:empty?)
|
@@ -31,8 +27,8 @@ module PubGrub
|
|
31
27
|
ranges
|
32
28
|
end
|
33
29
|
|
34
|
-
def self.union(ranges)
|
35
|
-
ranges = normalize_ranges(ranges)
|
30
|
+
def self.union(ranges, normalize: true)
|
31
|
+
ranges = normalize_ranges(ranges) if normalize
|
36
32
|
|
37
33
|
if ranges.size == 0
|
38
34
|
VersionRange.empty
|
@@ -64,12 +60,7 @@ module PubGrub
|
|
64
60
|
|
65
61
|
def intersects?(other)
|
66
62
|
my_ranges = ranges.dup
|
67
|
-
other_ranges =
|
68
|
-
if other.instance_of?(VersionRange)
|
69
|
-
[other]
|
70
|
-
else
|
71
|
-
other.ranges.dup
|
72
|
-
end
|
63
|
+
other_ranges = other.ranges.dup
|
73
64
|
|
74
65
|
my_range = my_ranges.shift
|
75
66
|
other_range = other_ranges.shift
|
@@ -88,12 +79,7 @@ module PubGrub
|
|
88
79
|
alias_method :allows_any?, :intersects?
|
89
80
|
|
90
81
|
def allows_all?(other)
|
91
|
-
other_ranges =
|
92
|
-
if other.is_a?(VersionUnion)
|
93
|
-
other.ranges
|
94
|
-
else
|
95
|
-
[other]
|
96
|
-
end
|
82
|
+
other_ranges = other.ranges
|
97
83
|
|
98
84
|
other_ranges.all? do |other_range|
|
99
85
|
ranges.any? do |range|
|
@@ -112,7 +98,10 @@ module PubGrub
|
|
112
98
|
|
113
99
|
def intersect(other)
|
114
100
|
new_ranges = ranges.map{ |r| r.intersect(other) }
|
115
|
-
|
101
|
+
new_ranges = new_ranges.flat_map { |r| r.ranges }
|
102
|
+
new_ranges.reject!(&:empty?)
|
103
|
+
|
104
|
+
VersionUnion.union(new_ranges, normalize: false)
|
116
105
|
end
|
117
106
|
|
118
107
|
def invert
|
data/pub_grub.gemspec
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pub_grub
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- John Hawthorn
|
@@ -88,6 +88,7 @@ extensions: []
|
|
88
88
|
extra_rdoc_files: []
|
89
89
|
files:
|
90
90
|
- ".gitignore"
|
91
|
+
- ".gitmodules"
|
91
92
|
- ".travis.yml"
|
92
93
|
- CODE_OF_CONDUCT.md
|
93
94
|
- Gemfile
|
@@ -133,7 +134,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
133
134
|
version: '0'
|
134
135
|
requirements: []
|
135
136
|
rubyforge_project:
|
136
|
-
rubygems_version: 2.7.
|
137
|
+
rubygems_version: 2.7.7
|
137
138
|
signing_key:
|
138
139
|
specification_version: 4
|
139
140
|
summary: A version solver based on dart's PubGrub
|