build-dependency 1.2.1 → 1.3.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: d6f603e98eff139ae1a2c9441230b28d3202441c
4
- data.tar.gz: f86fea3553677fee83f22c35d6629cde9c43c23e
2
+ SHA256:
3
+ metadata.gz: 65c0e1207b71d3690bd1563328d3769b961893495e22d864a5fe62f556e3d07e
4
+ data.tar.gz: 313048959a43750d5870f3af1e76b7055f041f7993c5123d17c220df417937b2
5
5
  SHA512:
6
- metadata.gz: 68c4d6b209f8162094851ffb5f7ee605832ba1549941953357d971274950ae4d76b179a9b3925ced730a0a55307a3648522c9d537813cee946feb2a6832ce62d
7
- data.tar.gz: 1dfb5cbc65105925cf37ee020619db04bed17e9649cc79f66c354cd325efb67227ae891ccdce52f0b6de84c90cd0237f3b538fa9f646867bd636aa44b1af55a5
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
@@ -20,6 +20,6 @@
20
20
 
21
21
  module Build
22
22
  module Dependency
23
- VERSION = "1.2.1"
23
+ VERSION = "1.3.0"
24
24
  end
25
25
  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.2.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: 2017-09-16 00:00:00.000000000 Z
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.6.12
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.