Skylib module containing common functions for working with native.subpackages()

subpackages.all

List all direct subpackages of the current package regardless of directory depth.

The returned list contains all subpackages, but not subpackages of subpackages.

Example: Assuming the following BUILD files exist:

BUILD
foo/BUILD
foo/sub/BUILD
bar/BUILD
baz/deep/dir/BUILD

If the current package is ‘//’ all() will return [‘//foo’, ‘//bar’, ‘//baz/deep/dir’]. //foo/sub is not included because it is a direct subpackage of ‘//foo’ not ‘//’

NOTE: fail()s if native.subpackages() is not supported.

PARAMETERS

NameDescriptionDefault Value
excludesee native.subpackages(exclude)[]
allow_emptysee native.subpackages(allow_empty)False
fully_qualifiedIt true return fully qualified Labels for subpackages, otherwise returns subpackage path relative to current package.True

RETURNS

A mutable sorted list containing all sub-packages of the current Bazel package.

subpackages.exists

Checks to see if relative_path is a direct subpackage of the current package.

Example:

BUILD
foo/BUILD
foo/sub/BUILD

If the current package is ‘//’ (the top-level BUILD file): subpackages.exists(“foo”) == True subpackages.exists(“foo/sub”) == False subpackages.exists(“bar”) == False

NOTE: fail()s if native.subpackages() is not supported in the current Bazel version.

PARAMETERS

NameDescriptionDefault Value
relative_patha path to a subpackage to test, must not be an absolute Label.none

RETURNS

True if ‘relative_path’ is a subpackage of the current package.

subpackages.supported