class Autoproj::Metapackage
A set of packages that can be referred to by name
Attributes
The metapackage name
The packages listed in this metapackage
The normal dependency handling behaviour is to generate an error if a metapackage is selected for the build but some of its dependencies cannot be built. This modifies the behaviour to simply ignore the problematic packages.
Public Class Methods
# File lib/autoproj/metapackage.rb, line 21 def initialize(name) @name = name @packages_by_name = Hash.new @weak_dependencies = false end
Public Instance Methods
Adds a package to this metapackage
@param [Autobuild::Package] pkg
# File lib/autoproj/metapackage.rb, line 40 def add(pkg) packages_by_name[pkg.name] = pkg end
# File lib/autoproj/metapackage.rb, line 65 def clear packages_by_name.clear end
# File lib/autoproj/metapackage.rb, line 69 def delete_if packages_by_name.delete_if { |name, package| yield(package) } end
Lists the packages contained in this metapackage
@yieldparam [Autobuild::Package] pkg
# File lib/autoproj/metapackage.rb, line 53 def each_package(&block) packages_by_name.each_value(&block) end
Tests if the given package is included in this metapackage
@param [String,#name] pkg the package or package name
# File lib/autoproj/metapackage.rb, line 60 def include?(pkg) pkg = pkg.name unless pkg.respond_to?(:to_str) packages_by_name.has_key?(pkg) end
Deprecated, use each_package
instead
# File lib/autoproj/metapackage.rb, line 32 def packages Autoproj.warn_deprecated "use #each_package instead" each_package.to_a end
Remove a package from this metapackage
# File lib/autoproj/metapackage.rb, line 45 def remove(pkg) pkg = pkg.name if pkg.respond_to?(:name) packages_by_name.delete(pkg) end
# File lib/autoproj/metapackage.rb, line 27 def size packages_by_name.size end
@return [Boolean] whether the dependencies from this metapackage are
weak or not
@see weak_dependencies
# File lib/autoproj/metapackage.rb, line 17 def weak_dependencies? !!@weak_dependencies end