diff --git a/command.py b/command.py index 5ca43f2..9e970e8 100644 --- a/command.py +++ b/command.py @@ -62,8 +62,10 @@ class Command(object): def manifest(self): return self.GetManifest() - def GetManifest(self, reparse=False): - return manifest_loader.GetManifest(self.repodir, reparse) + def GetManifest(self, reparse=False, type=None): + return manifest_loader.GetManifest(self.repodir, + reparse=reparse, + type=type) def GetProjects(self, args, missing_ok=False): """A list of projects that match the arguments. diff --git a/manifest_loader.py b/manifest_loader.py index 85ad3ea..1ce1c1f 100644 --- a/manifest_loader.py +++ b/manifest_loader.py @@ -15,13 +15,17 @@ from manifest_xml import XmlManifest -def ParseManifest(repodir): +def ParseManifest(repodir, type=None): + if type: + return type(repodir) return XmlManifest(repodir) _manifest = None -def GetManifest(repodir, reparse=False): +def GetManifest(repodir, reparse=False, type=None): global _manifest - if _manifest is None or reparse: - _manifest = ParseManifest(repodir) + if _manifest is None \ + or reparse \ + or (type and _manifest.__class__ != type): + _manifest = ParseManifest(repodir, type=type) return _manifest