diff --git a/pisi/api.py b/pisi/api.py index f73a25b2..d8b48170 100644 --- a/pisi/api.py +++ b/pisi/api.py @@ -224,11 +224,12 @@ def list_upgradable(): return upgradable -def list_repos(): +def list_repos(onlyActive=True): """ Return a list of the repositories -> list_of_strings + @param onlyActive: return only the active repos list -> list_of_strings """ - return pisi.db.repodb.RepoDB().list_repos() + return pisi.db.repodb.RepoDB().list_repos(onlyActive) def get_install_order(packages): """ diff --git a/pisi/db/repodb.py b/pisi/db/repodb.py index bc0301d9..009ba3a0 100644 --- a/pisi/db/repodb.py +++ b/pisi/db/repodb.py @@ -73,6 +73,17 @@ class RepoOrder: self._update(repo_doc) + def get_status(self, repo_name): + repo_doc = self._get_doc() + for r in repo_doc.tags("Repo"): + if r.getTagData("Name") == repo_name: + status_node = r.getTag("Status") + if status_node: + status = status_node.firstChild().data() + if status in ["active", "deactive"]: + return status + return "deactive" + def remove(self, repo_name): repo_doc = self._get_doc() @@ -111,8 +122,7 @@ class RepoOrder: media = r.getTagData("Media") name = r.getTagData("Name") status = r.getTagData("Status") - if status != "deactive": - order.setdefault(media, []).append(name) + order.setdefault(media, []).append(name) return order @@ -178,8 +188,8 @@ class RepoDB(lazydb.LazyDB): repos.append(r) return repos - def list_repos(self): - return self.repoorder.get_order() + def list_repos(self, onlyActive=True): + return filter(lambda x:True if not onlyActive else self.repo_active(x), self.repoorder.get_order()) def list_repo_urls(self): repos = [] @@ -200,3 +210,6 @@ class RepoDB(lazydb.LazyDB): def deactivate_repo(self, name): self.repoorder.set_status(name, "deactive") + + def repo_active(self, name): + return self.repoorder.get_status(name) == "active"