Module: Build::Dependency::Provider

Defined in:
lib/build/dependency/provider.rb

Instance Method Summary collapse

Instance Method Details

#dependenciesIdentitySet<Dependency>

Returns:



152
153
154
# File 'lib/build/dependency/provider.rb', line 152

def dependencies
	@dependencies ||= Set.new
end

#depends(*names, **options) ⇒ Object

Add one or more dependencies to the provider.

Examples:

A named dependency.

target.depends "Compiler/clang"

A symbolic dependency.

target.depends :compiler

Parameters:

  • names (Array<String>)

    the dependency names to add.



198
199
200
201
202
# File 'lib/build/dependency/provider.rb', line 198

def depends(*names, **options)
	names.each do |name|
		dependencies << Depends.new(name, **options)
	end
end

#depends?(name) ⇒ Boolean

Returns:

  • (Boolean)


204
205
206
# File 'lib/build/dependency/provider.rb', line 204

def depends?(name)
	dependencies.include?(name)
end

#filter(dependency) ⇒ Object



156
157
158
# File 'lib/build/dependency/provider.rb', line 156

def filter(dependency)
	provisions.select{|name, provision| dependency.match?(name)}
end

#freezeObject



127
128
129
130
131
132
133
134
# File 'lib/build/dependency/provider.rb', line 127

def freeze
	return unless frozen?
	
	provisions.freeze
	dependencies.freeze
	
	super
end

#priorityObject

The default priority.



142
143
144
# File 'lib/build/dependency/provider.rb', line 142

def priority
	@priority ||= 0
end

#priority=(value) ⇒ Object

Assign a priority.



137
138
139
# File 'lib/build/dependency/provider.rb', line 137

def priority= value
	@priority = value
end

#provides(*names, **aliases, &block) ⇒ Object

Add one or more provisions to the provider.

Examples:

A named provision.

target.provides "Compiler/clang" do
	cxx "clang"
end

A symbolic provision.

target.provides compiler: "Compiler/clang"

Parameters:

  • names (Array<String>)

    the named provisions to add.

  • aliases (Hash<Symbol, Array>)

    the aliases to add.



182
183
184
185
186
187
188
189
190
# File 'lib/build/dependency/provider.rb', line 182

def provides(*names, **aliases, &block)
	names.each do |name|
		provisions[name] = Provision.new(name, self, block)
	end
	
	aliases.each do |name, dependencies|
		provisions[name] = Alias.new(name, self, Array(dependencies))
	end
end

#provides?(dependency) ⇒ Boolean

Does this unit provide the named thing?

Returns:

  • (Boolean)


161
162
163
# File 'lib/build/dependency/provider.rb', line 161

def provides?(dependency)
	provisions.key?(dependency.name)
end

#provision_for(dependency) ⇒ Object



165
166
167
# File 'lib/build/dependency/provider.rb', line 165

def provision_for(dependency)
	return provisions[dependency.name]
end

#provisionsObject



147
148
149
# File 'lib/build/dependency/provider.rb', line 147

def provisions
	@provisions ||= {}
end

#resolution_for(dependency) ⇒ Object



169
170
171
# File 'lib/build/dependency/provider.rb', line 169

def resolution_for(dependency)
	return Resolution.new(provision_for(dependency), dependency)
end