pub_grub 0.4.1 → 0.4.2
Sign up to get free protection for your applications and to get access to all the features.
- 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
|