Class: Build::Dependency::Chain
- Defined in:
- lib/build/dependency/chain.rb,
lib/build/dependency/partial_chain.rb
Overview
A chain of dependencies that are resolved from a set of providers.
Instance Attribute Summary collapse
- #dependencies ⇒ Object readonly
- #providers ⇒ Object readonly
- #selection ⇒ Object readonly
Attributes inherited from Resolver
#conflicts, #ordered, #provisions, #resolved, #unresolved
Class Method Summary collapse
-
.expand(*args) ⇒ Object
An
UnresolvedDependencyErrorwill be thrown if there are any unresolved dependencies.
Instance Method Summary collapse
-
#freeze ⇒ Object
Freeze the chain and all its dependencies.
-
#initialize(dependencies, providers, selection = []) ⇒ Chain
constructor
Initialize a dependency chain.
-
#partial(provider) ⇒ Object
Create a partial chain for a specific provider.
Constructor Details
#initialize(dependencies, providers, selection = []) ⇒ Chain
Initialize a dependency chain.
31 32 33 34 35 36 37 38 39 |
# File 'lib/build/dependency/chain.rb', line 31 def initialize(dependencies, providers, selection = []) super() @selection = ::Set.new(selection) @dependencies = dependencies.collect{|dependency| Depends[dependency]} @providers = providers end |
Instance Attribute Details
#dependencies ⇒ Object (readonly)
45 46 47 |
# File 'lib/build/dependency/chain.rb', line 45 def dependencies @dependencies end |
#providers ⇒ Object (readonly)
48 49 50 |
# File 'lib/build/dependency/chain.rb', line 48 def providers @providers end |
#selection ⇒ Object (readonly)
42 43 44 |
# File 'lib/build/dependency/chain.rb', line 42 def selection @selection end |
Class Method Details
.expand(*args) ⇒ Object
An UnresolvedDependencyError will be thrown if there are any unresolved dependencies.
15 16 17 18 19 20 21 22 23 24 25 |
# File 'lib/build/dependency/chain.rb', line 15 def self.(*args) chain = self.new(*args) chain.freeze if chain.unresolved.size > 0 raise UnresolvedDependencyError.new(chain) end return chain end |
Instance Method Details
#freeze ⇒ Object
Freeze the chain and all its dependencies.
51 52 53 54 55 56 57 58 59 |
# File 'lib/build/dependency/chain.rb', line 51 def freeze return self if frozen? @selection.freeze @dependencies.freeze @providers.freeze super end |
#partial(provider) ⇒ Object
Create a partial chain for a specific provider.
14 15 16 |
# File 'lib/build/dependency/partial_chain.rb', line 14 def partial(provider) PartialChain.(self, provider.dependencies) end |