summaryrefslogtreecommitdiffstats
path: root/manifest_xml.py
diff options
context:
space:
mode:
Diffstat (limited to 'manifest_xml.py')
-rw-r--r--manifest_xml.py24
1 files changed, 22 insertions, 2 deletions
diff --git a/manifest_xml.py b/manifest_xml.py
index 890c954d..9472a08f 100644
--- a/manifest_xml.py
+++ b/manifest_xml.py
@@ -64,7 +64,9 @@ class _XmlRemote(object):
64 fetch=None, 64 fetch=None,
65 manifestUrl=None, 65 manifestUrl=None,
66 review=None, 66 review=None,
67 revision=None): 67 revision=None,
68 projecthookName=None,
69 projecthookRevision=None):
68 self.name = name 70 self.name = name
69 self.fetchUrl = fetch 71 self.fetchUrl = fetch
70 self.manifestUrl = manifestUrl 72 self.manifestUrl = manifestUrl
@@ -72,6 +74,8 @@ class _XmlRemote(object):
72 self.reviewUrl = review 74 self.reviewUrl = review
73 self.revision = revision 75 self.revision = revision
74 self.resolvedFetchUrl = self._resolveFetchUrl() 76 self.resolvedFetchUrl = self._resolveFetchUrl()
77 self.projecthookName = projecthookName
78 self.projecthookRevision = projecthookRevision
75 79
76 def __eq__(self, other): 80 def __eq__(self, other):
77 return self.__dict__ == other.__dict__ 81 return self.__dict__ == other.__dict__
@@ -167,6 +171,11 @@ class XmlManifest(object):
167 e.setAttribute('review', r.reviewUrl) 171 e.setAttribute('review', r.reviewUrl)
168 if r.revision is not None: 172 if r.revision is not None:
169 e.setAttribute('revision', r.revision) 173 e.setAttribute('revision', r.revision)
174 if r.projecthookName is not None:
175 ph = doc.createElement('projecthook')
176 ph.setAttribute('name', r.projecthookName)
177 ph.setAttribute('revision', r.projecthookRevision)
178 e.appendChild(ph)
170 179
171 def _ParseGroups(self, groups): 180 def _ParseGroups(self, groups):
172 return [x for x in re.split(r'[,\s]+', groups) if x] 181 return [x for x in re.split(r'[,\s]+', groups) if x]
@@ -629,7 +638,13 @@ class XmlManifest(object):
629 if revision == '': 638 if revision == '':
630 revision = None 639 revision = None
631 manifestUrl = self.manifestProject.config.GetString('remote.origin.url') 640 manifestUrl = self.manifestProject.config.GetString('remote.origin.url')
632 return _XmlRemote(name, alias, fetch, manifestUrl, review, revision) 641 projecthookName = None
642 projecthookRevision = None
643 for n in node.childNodes:
644 if n.nodeName == 'projecthook':
645 projecthookName, projecthookRevision = self._ParseProjectHooks(n)
646 break
647 return _XmlRemote(name, alias, fetch, manifestUrl, review, revision, projecthookName, projecthookRevision)
633 648
634 def _ParseDefault(self, node): 649 def _ParseDefault(self, node):
635 """ 650 """
@@ -933,3 +948,8 @@ class XmlManifest(object):
933 diff['added'].append(toProjects[proj]) 948 diff['added'].append(toProjects[proj])
934 949
935 return diff 950 return diff
951
952 def _ParseProjectHooks(self, node):
953 name = self._reqatt(node, 'name')
954 revision = self._reqatt(node, 'revision')
955 return name, revision