diff options
Diffstat (limited to 'manifest.py')
-rw-r--r-- | manifest.py | 27 |
1 files changed, 20 insertions, 7 deletions
diff --git a/manifest.py b/manifest.py index 65455687..2ac1453a 100644 --- a/manifest.py +++ b/manifest.py | |||
@@ -165,6 +165,16 @@ class Manifest(object): | |||
165 | (project.name, self.manifestFile) | 165 | (project.name, self.manifestFile) |
166 | self._projects[project.name] = project | 166 | self._projects[project.name] = project |
167 | 167 | ||
168 | for node in config.childNodes: | ||
169 | if node.nodeName == 'add-remote': | ||
170 | pn = self._reqatt(node, 'to-project') | ||
171 | project = self._projects.get(pn) | ||
172 | if not project: | ||
173 | raise ManifestParseError, \ | ||
174 | 'project %s not defined in %s' % \ | ||
175 | (pn, self.manifestFile) | ||
176 | self._ParseProjectExtraRemote(project, node) | ||
177 | |||
168 | def _AddMetaProjectMirror(self, m): | 178 | def _AddMetaProjectMirror(self, m): |
169 | name = None | 179 | name = None |
170 | m_url = m.GetRemote(m.remote.name).url | 180 | m_url = m.GetRemote(m.remote.name).url |
@@ -281,18 +291,21 @@ class Manifest(object): | |||
281 | 291 | ||
282 | for n in node.childNodes: | 292 | for n in node.childNodes: |
283 | if n.nodeName == 'remote': | 293 | if n.nodeName == 'remote': |
284 | r = self._ParseRemote(n) | 294 | self._ParseProjectExtraRemote(project, n) |
285 | if project.extraRemotes.get(r.name) \ | ||
286 | or project.remote.name == r.name: | ||
287 | raise ManifestParseError, \ | ||
288 | 'duplicate remote %s in project %s in %s' % \ | ||
289 | (r.name, project.name, self.manifestFile) | ||
290 | project.extraRemotes[r.name] = r | ||
291 | elif n.nodeName == 'copyfile': | 295 | elif n.nodeName == 'copyfile': |
292 | self._ParseCopyFile(project, n) | 296 | self._ParseCopyFile(project, n) |
293 | 297 | ||
294 | return project | 298 | return project |
295 | 299 | ||
300 | def _ParseProjectExtraRemote(self, project, n): | ||
301 | r = self._ParseRemote(n) | ||
302 | if project.extraRemotes.get(r.name) \ | ||
303 | or project.remote.name == r.name: | ||
304 | raise ManifestParseError, \ | ||
305 | 'duplicate remote %s in project %s in %s' % \ | ||
306 | (r.name, project.name, self.manifestFile) | ||
307 | project.extraRemotes[r.name] = r | ||
308 | |||
296 | def _ParseCopyFile(self, project, node): | 309 | def _ParseCopyFile(self, project, node): |
297 | src = self._reqatt(node, 'src') | 310 | src = self._reqatt(node, 'src') |
298 | dest = self._reqatt(node, 'dest') | 311 | dest = self._reqatt(node, 'dest') |