class Autoproj::Metapackage

A set of packages that can be referred to by name

Attributes

name[R]

The metapackage name

packages_by_name[R]

The packages listed in this metapackage

weak_dependencies[W]

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

new(name) click to toggle source
# File lib/autoproj/metapackage.rb, line 21
def initialize(name)
    @name = name
    @packages_by_name = Hash.new
    @weak_dependencies = false
end

Public Instance Methods

add(pkg) click to toggle source

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
clear() click to toggle source
# File lib/autoproj/metapackage.rb, line 65
def clear
    packages_by_name.clear
end
delete_if() { |package| ... } click to toggle source
# File lib/autoproj/metapackage.rb, line 69
def delete_if
    packages_by_name.delete_if { |name, package| yield(package) }
end
each_package(&block) click to toggle source

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
include?(pkg) click to toggle source

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
packages() click to toggle source

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(pkg) click to toggle source

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
size() click to toggle source
# File lib/autoproj/metapackage.rb, line 27
def size
    packages_by_name.size
end
weak_dependencies?() click to toggle source

@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