diff options
Diffstat (limited to 'manifest_xml.py')
-rw-r--r-- | manifest_xml.py | 24 |
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 | ||