tools/manifestfile.py: Allow include of directory path.

If an include path is a directory, then it implicitly grabs the manifest.py
file inside that directory. This simplifies most manifest.py files.

Signed-off-by: Jim Mussared <jim.mussared@gmail.com>
This commit is contained in:
Jim Mussared 2022-07-15 23:42:51 +10:00
parent 6bd0ec7a70
commit e9a28ce312
1 changed files with 6 additions and 7 deletions

View File

@ -198,13 +198,6 @@ class ManifestFile:
# TODO # TODO
pass pass
def include_maybe(self, manifest_path, **kwargs):
"""
Include the manifest file if it exists. See docs for include().
"""
if os.path.exists(manifest_path):
self.include(manifest_path, **kwargs)
def include(self, manifest_path, **kwargs): def include(self, manifest_path, **kwargs):
""" """
Include another manifest. Include another manifest.
@ -214,6 +207,9 @@ class ManifestFile:
Relative paths are resolved with respect to the current manifest file. Relative paths are resolved with respect to the current manifest file.
If the path is to a directory, then it implicitly includes the
manifest.py file inside that directory.
Optional kwargs can be provided which will be available to the Optional kwargs can be provided which will be available to the
included script via the `options` variable. included script via the `options` variable.
@ -233,6 +229,9 @@ class ManifestFile:
self.include(m) self.include(m)
else: else:
manifest_path = self._resolve_path(manifest_path) manifest_path = self._resolve_path(manifest_path)
# Including a directory grabs the manifest.py inside it.
if os.path.isdir(manifest_path):
manifest_path = os.path.join(manifest_path, "manifest.py")
if manifest_path in self._visited: if manifest_path in self._visited:
return return
self._visited.add(manifest_path) self._visited.add(manifest_path)