build-dependency 1.2.1 → 1.3.0
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 +5 -5
- data/lib/build/dependency/chain.rb +4 -1
- data/lib/build/dependency/provider.rb +12 -0
- data/lib/build/dependency/version.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 65c0e1207b71d3690bd1563328d3769b961893495e22d864a5fe62f556e3d07e
|
4
|
+
data.tar.gz: 313048959a43750d5870f3af1e76b7055f041f7993c5123d17c220df417937b2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2cb579aa45e4e3909ae9fae81672d3840bd19e83edab636a5e82ed321c894c2d15b4e16793ccbc6f8746c7990e6c3b1e2f8c660878e7a63841f38118cbb5c93c
|
7
|
+
data.tar.gz: b5856d282613dc9b3751180f3f2e2f25eda993d61bbfb4a088c4375357f7db2b67392b9e9715349ed28a272b330bb99008f973ed799e65b63cea067d3c1a03ff
|
@@ -88,6 +88,7 @@ module Build
|
|
88
88
|
return viable_providers.select{|provider| @selection.include? provider.name}
|
89
89
|
end
|
90
90
|
|
91
|
+
# Given a dependency with wildcards, figure out all names that might match, and then expand them all individually.
|
91
92
|
def expand_wildcard(dependency, parent)
|
92
93
|
@providers.flat_map do |provider|
|
93
94
|
provider.filter(dependency).flat_map do |name, provision|
|
@@ -96,8 +97,10 @@ module Build
|
|
96
97
|
end
|
97
98
|
end
|
98
99
|
|
99
|
-
# Resolve a dependency into one or more provisions
|
100
|
+
# Resolve a dependency into one or more provisions.
|
100
101
|
def expand_dependency(dependency, parent)
|
102
|
+
# The job of this function is to take a dependency and turn it into 0 or more provisions. The dependency could be a normal fully-qualified name or a wildcard. It's not clear at which point pattern matching should affect dependency resolution, but it seems logical since it depends on the available provisions that it's done here.
|
103
|
+
# Another benefit is that it introduces a fixed point of reference for expanding dependencies. When the resolver invokes this method, it can be assured that it will return the same result.
|
101
104
|
if dependency.wildcard?
|
102
105
|
return expand_wildcard(dependency, parent)
|
103
106
|
end
|
@@ -28,6 +28,10 @@ module Build
|
|
28
28
|
|
29
29
|
# A provision is a thing which satisfies a dependency.
|
30
30
|
Provision = Struct.new(:name, :provider, :value) do
|
31
|
+
def each_dependency(&block)
|
32
|
+
self.provider.dependencies.each(&block)
|
33
|
+
end
|
34
|
+
|
31
35
|
def alias?
|
32
36
|
false
|
33
37
|
end
|
@@ -38,6 +42,14 @@ module Build
|
|
38
42
|
end
|
39
43
|
|
40
44
|
Alias = Struct.new(:name, :provider, :dependencies) do
|
45
|
+
def each_dependency(&block)
|
46
|
+
return to_enum(&block) unless block_given?
|
47
|
+
|
48
|
+
dependencies.each do |name|
|
49
|
+
yield Depends.new(name)
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
41
53
|
def alias?
|
42
54
|
true
|
43
55
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: build-dependency
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Samuel Williams
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2019-02-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: graphviz
|
@@ -118,7 +118,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
118
118
|
version: '0'
|
119
119
|
requirements: []
|
120
120
|
rubyforge_project:
|
121
|
-
rubygems_version: 2.
|
121
|
+
rubygems_version: 2.7.8
|
122
122
|
signing_key:
|
123
123
|
specification_version: 4
|
124
124
|
summary: A set of data structures and algorithms for dependency resolution.
|