repodb: Reduce the number of calls to piksemel.parse
This commit is contained in:
+12
-6
@@ -33,6 +33,7 @@ medias = (cd, usb, remote, local) = range(4)
|
|||||||
class RepoOrder:
|
class RepoOrder:
|
||||||
|
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
|
self._doc = None
|
||||||
self.repos = self._get_repos()
|
self.repos = self._get_repos()
|
||||||
|
|
||||||
def add(self, repo_name, repo_url, repo_type="remote"):
|
def add(self, repo_name, repo_url, repo_type="remote"):
|
||||||
@@ -106,13 +107,18 @@ class RepoOrder:
|
|||||||
def _update(self, doc):
|
def _update(self, doc):
|
||||||
repos_file = os.path.join(ctx.config.info_dir(), ctx.const.repos)
|
repos_file = os.path.join(ctx.config.info_dir(), ctx.const.repos)
|
||||||
open(repos_file, "w").write("%s\n" % doc.toPrettyString())
|
open(repos_file, "w").write("%s\n" % doc.toPrettyString())
|
||||||
|
self._doc = None
|
||||||
self.repos = self._get_repos()
|
self.repos = self._get_repos()
|
||||||
|
|
||||||
def _get_doc(self):
|
def _get_doc(self):
|
||||||
repos_file = os.path.join(ctx.config.info_dir(), ctx.const.repos)
|
if self._doc is None:
|
||||||
if not os.path.exists(repos_file):
|
repos_file = os.path.join(ctx.config.info_dir(), ctx.const.repos)
|
||||||
return piksemel.newDocument("REPOS")
|
if os.path.exists(repos_file):
|
||||||
return piksemel.parse(repos_file)
|
self._doc = piksemel.parse(repos_file)
|
||||||
|
else:
|
||||||
|
self._doc = piksemel.newDocument("REPOS")
|
||||||
|
|
||||||
|
return self._doc
|
||||||
|
|
||||||
def _get_repos(self):
|
def _get_repos(self):
|
||||||
repo_doc = self._get_doc()
|
repo_doc = self._get_doc()
|
||||||
@@ -161,13 +167,13 @@ class RepoDB(lazydb.LazyDB):
|
|||||||
def get_repo_url(self, repo):
|
def get_repo_url(self, repo):
|
||||||
urifile_path = pisi.util.join_path(ctx.config.index_dir(), repo, "uri")
|
urifile_path = pisi.util.join_path(ctx.config.index_dir(), repo, "uri")
|
||||||
uri = open(urifile_path, "r").read()
|
uri = open(urifile_path, "r").read()
|
||||||
return uri
|
return uri.rstrip()
|
||||||
|
|
||||||
def add_repo(self, name, repo_info, at = None):
|
def add_repo(self, name, repo_info, at = None):
|
||||||
repo_path = pisi.util.join_path(ctx.config.index_dir(), name)
|
repo_path = pisi.util.join_path(ctx.config.index_dir(), name)
|
||||||
os.makedirs(repo_path)
|
os.makedirs(repo_path)
|
||||||
urifile_path = pisi.util.join_path(ctx.config.index_dir(), name, "uri")
|
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())
|
self.repoorder.add(name, repo_info.indexuri.get_uri())
|
||||||
|
|
||||||
def remove_repo(self, name):
|
def remove_repo(self, name):
|
||||||
|
|||||||
Reference in New Issue
Block a user