Module: Build::Dependency::Provider

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

Instance Method Summary collapse

Instance Method Details

#dependenciesObject



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

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.



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

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

#depends?(name) ⇒ Boolean

Returns:

  • (Boolean)


188
189
190
# File 'lib/build/dependency/provider.rb', line 188

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

#filter(dependency) ⇒ Object



140
141
142
# File 'lib/build/dependency/provider.rb', line 140

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

#freezeObject



111
112
113
114
115
116
117
118
# File 'lib/build/dependency/provider.rb', line 111

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

#priorityObject

The default priority.



126
127
128
# File 'lib/build/dependency/provider.rb', line 126

def priority
	@priority ||= 0
end

#priority=(value) ⇒ Object

Assign a priority.



121
122
123
# File 'lib/build/dependency/provider.rb', line 121

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.



166
167
168
169
170
171
172
173
174
# File 'lib/build/dependency/provider.rb', line 166

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)


145
146
147
# File 'lib/build/dependency/provider.rb', line 145

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

#provision_for(dependency) ⇒ Object



149
150
151
# File 'lib/build/dependency/provider.rb', line 149

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

#provisionsObject



131
132
133
# File 'lib/build/dependency/provider.rb', line 131

def provisions
	@provisions ||= {}
end

#resolution_for(dependency) ⇒ Object



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

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