Sha256: c1795c0f5e606c7335f9cd028a8d32013705d595339d3423918e71dbfea43a22

Contents?: true

Size: 1.77 KB

Versions: 2

Compression:

Stored size: 1.77 KB

Contents

module Autoproj
    # A set of packages that can be referred to by name
    class Metapackage
        # The metapackage name
        attr_reader :name
        # The packages listed in this metapackage
        attr_reader :packages
        # 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.
        attr_writer :weak_dependencies

        # @return [Boolean] whether the dependencies from this metapackage are
        #   weak or not
        # @see #weak_dependencies
        def weak_dependencies?
            !!@weak_dependencies
        end

        def initialize(name)
            @name = name
            @packages = []
            @weak_dependencies = false
        end

        # Adds a package to this metapackage
        #
        # @param [Autobuild::Package] pkg
        def add(pkg)
            @packages << pkg
        end

        # Lists the packages contained in this metapackage
        #
        # @yieldparam [Autobuild::Package] pkg
        def each_package(&block)
            @packages.each(&block)
        end

        # Filter this metapackage by removing some packages
        def remove(pkg)
            if !pkg.respond_to?(:to_str)
                pkg = pkg.name
            end
            @packages.delete_if { |p| p.name == pkg }
        end

        # Tests if the given package is included in this metapackage
        #
        # @param [String,#name] pkg the package or package name
        def include?(pkg)
            if !pkg.respond_to?(:to_str)
                pkg = pkg.name
            end
            @packages.any? { |p| p.name == pkg }
        end
    end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
autoproj-1.13.7 lib/autoproj/metapackage.rb
autoproj-1.13.6 lib/autoproj/metapackage.rb