class Select
A selection is a specific view of the data exposed by the context at a specific point in time.
Definitions
def initialize(context, configuration, names = [])
Initialize a new selection.
Signature
-
parameter
contextContext The project context.
-
parameter
configurationConfiguration The configuration.
-
parameter
namesArray The names to select.
Implementation
def initialize(context, configuration, names = [])
@context = context
@configuration = Configuration.new(context, configuration.package, configuration.name, [], **configuration.options)
@targets = {}
@configurations = {}
@projects = {}
@dependencies = []
@selection = Set.new
@resolved = Build::Dependency::Set.new
@unresolved = Build::Dependency::Set.new
load!(configuration, names)
@chain = nil
end
attr :aliases
Alises as defined by Configuration#targets
attr :configurations
All public configurations.
def chain
Get the dependency chain.
Signature
-
returns
Build::Dependency::Chain The dependency chain.
Implementation
def chain
@chain ||= Build::Dependency::Chain.expand(@dependencies, @targets.values, @selection)
end
def direct_targets(ordered)
Extract the targets that directly satisfy the requested dependencies.
Signature
-
parameter
orderedArray The ordered targets.
-
returns
Array The direct targets.
Implementation
def direct_targets(ordered)
@dependencies.collect do |dependency|
ordered.find{|(package, _)| package.provides? dependency}
end.compact
end
def append(definition)
Add a definition to the current context.
Implementation
def append definition
case definition
when Target
AlreadyDefinedError.check(definition, @targets)
@targets[definition.name] = definition
when Configuration
# We define configurations in two cases, if they are public, or if they are part of the root package of this context.
if definition.public? or definition.package == @context.root_package
AlreadyDefinedError.check(definition, @configurations)
@configurations[definition.name] = definition
end
when Project
AlreadyDefinedError.check(definition, @projects)
@projects[definition.name] = definition
end
end