Add support for multiple local manifests
Add support for multiple local manifests stored in the local_manifests
folder under the .repo home directory.
Local manifests will be processed in addition to local_manifest.xml.
Change-Id: Ia0569cea7e9ae0fe3208a8ffef5d9679e14db03b
diff --git a/manifest_xml.py b/manifest_xml.py
index bf981f0..4e47679 100644
--- a/manifest_xml.py
+++ b/manifest_xml.py
@@ -27,6 +27,7 @@
MANIFEST_FILE_NAME = 'manifest.xml'
LOCAL_MANIFEST_NAME = 'local_manifest.xml'
+LOCAL_MANIFESTS_DIR_NAME = 'local_manifests'
urlparse.uses_relative.extend(['ssh', 'git'])
urlparse.uses_netloc.extend(['ssh', 'git'])
@@ -301,6 +302,17 @@
if os.path.exists(local):
nodes.append(self._ParseManifestXml(local, self.repodir))
+ local_dir = os.path.abspath(os.path.join(self.repodir, LOCAL_MANIFESTS_DIR_NAME))
+ try:
+ for local_file in os.listdir(local_dir):
+ if local_file.endswith('.xml'):
+ try:
+ nodes.append(self._ParseManifestXml(local_file, self.repodir))
+ except ManifestParseError as e:
+ print >>sys.stderr, '%s' % str(e)
+ except OSError:
+ pass
+
self._ParseManifest(nodes)
if self.IsMirror:
@@ -312,7 +324,7 @@
def _ParseManifestXml(self, path, include_root):
try:
root = xml.dom.minidom.parse(path)
- except (OSError, xml.parsers.expat.ExpatError), e:
+ except (OSError, xml.parsers.expat.ExpatError) as e:
raise ManifestParseError("error parsing manifest %s: %s" % (path, e))
if not root or not root.childNodes: