From 5eebc989d23e669518528453c61f4007f72fda9d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fatih=20A=C5=9F=C4=B1c=C4=B1?= Date: Mon, 8 Mar 2010 12:42:13 +0000 Subject: [PATCH] repodb: Reduce the number of calls to piksemel.parse --- pisi/db/repodb.py | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/pisi/db/repodb.py b/pisi/db/repodb.py index 1cb28df7..a79843e2 100644 --- a/pisi/db/repodb.py +++ b/pisi/db/repodb.py @@ -33,6 +33,7 @@ medias = (cd, usb, remote, local) = range(4) class RepoOrder: def __init__(self): + self._doc = None self.repos = self._get_repos() def add(self, repo_name, repo_url, repo_type="remote"): @@ -106,13 +107,18 @@ class RepoOrder: def _update(self, doc): repos_file = os.path.join(ctx.config.info_dir(), ctx.const.repos) open(repos_file, "w").write("%s\n" % doc.toPrettyString()) + self._doc = None self.repos = self._get_repos() def _get_doc(self): - repos_file = os.path.join(ctx.config.info_dir(), ctx.const.repos) - if not os.path.exists(repos_file): - return piksemel.newDocument("REPOS") - return piksemel.parse(repos_file) + if self._doc is None: + repos_file = os.path.join(ctx.config.info_dir(), ctx.const.repos) + if os.path.exists(repos_file): + self._doc = piksemel.parse(repos_file) + else: + self._doc = piksemel.newDocument("REPOS") + + return self._doc def _get_repos(self): repo_doc = self._get_doc() @@ -161,13 +167,13 @@ class RepoDB(lazydb.LazyDB): def get_repo_url(self, repo): urifile_path = pisi.util.join_path(ctx.config.index_dir(), repo, "uri") uri = open(urifile_path, "r").read() - return uri + return uri.rstrip() def add_repo(self, name, repo_info, at = None): repo_path = pisi.util.join_path(ctx.config.index_dir(), name) os.makedirs(repo_path) urifile_path = pisi.util.join_path(ctx.config.index_dir(), name, "uri") - uri = open(urifile_path, "w").write(repo_info.indexuri.get_uri()) + open(urifile_path, "w").write(repo_info.indexuri.get_uri()) self.repoorder.add(name, repo_info.indexuri.get_uri()) def remove_repo(self, name):