From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from lists.gentoo.org (pigeon.gentoo.org [208.92.234.80]) by finch.gentoo.org (Postfix) with ESMTP id E51431381F3 for ; Fri, 19 Jul 2013 16:20:18 +0000 (UTC) Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id ABD28E097C; Fri, 19 Jul 2013 16:20:14 +0000 (UTC) Received: from smtp.gentoo.org (smtp.gentoo.org [140.211.166.183]) (using TLSv1 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by pigeon.gentoo.org (Postfix) with ESMTPS id DD3EAE0956 for ; Fri, 19 Jul 2013 16:20:13 +0000 (UTC) Received: from hornbill.gentoo.org (hornbill.gentoo.org [94.100.119.163]) (using TLSv1 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by smtp.gentoo.org (Postfix) with ESMTPS id 5E0D333E917 for ; Fri, 19 Jul 2013 16:20:12 +0000 (UTC) Received: from localhost.localdomain (localhost [127.0.0.1]) by hornbill.gentoo.org (Postfix) with ESMTP id E73A2E4B05 for ; Fri, 19 Jul 2013 16:20:10 +0000 (UTC) From: "Jauhien Piatlicki" To: gentoo-commits@lists.gentoo.org Content-Transfer-Encoding: 8bit Content-type: text/plain; charset=UTF-8 Reply-To: gentoo-dev@lists.gentoo.org, "Jauhien Piatlicki" Message-ID: <1374248265.fde32d9301971a96f876cd7147835e06c56805c3.jauhien@gentoo> Subject: [gentoo-commits] proj/g-sorcery:master commit in: g_sorcery/, gs_ctan/, g_elpa/ X-VCS-Repository: proj/g-sorcery X-VCS-Files: g_elpa/elpa_db.py g_sorcery/backend.py g_sorcery/package_db.py gs_ctan/ctan_db.py X-VCS-Directories: g_sorcery/ gs_ctan/ g_elpa/ X-VCS-Committer: jauhien X-VCS-Committer-Name: Jauhien Piatlicki X-VCS-Revision: fde32d9301971a96f876cd7147835e06c56805c3 X-VCS-Branch: master Date: Fri, 19 Jul 2013 16:20:10 +0000 (UTC) Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-Id: Gentoo Linux mail X-BeenThere: gentoo-commits@lists.gentoo.org X-Archives-Salt: 453f5a8e-124c-4b7e-8c9c-9af67270da40 X-Archives-Hash: ce9e361af08ac1d744e0bbc215ec0f69 commit: fde32d9301971a96f876cd7147835e06c56805c3 Author: Jauhien Piatlicki (jauhien) gmail com> AuthorDate: Fri Jul 19 15:37:45 2013 +0000 Commit: Jauhien Piatlicki gmail com> CommitDate: Fri Jul 19 15:37:45 2013 +0000 URL: http://git.overlays.gentoo.org/gitweb/?p=proj/g-sorcery.git;a=commit;h=fde32d93 g_sorcery/package_db: save config in db --- g_elpa/elpa_db.py | 4 ++-- g_sorcery/backend.py | 28 +++++++++++++--------------- g_sorcery/package_db.py | 34 +++++++++++++++++++++++++--------- gs_ctan/ctan_db.py | 4 ++-- 4 files changed, 42 insertions(+), 28 deletions(-) diff --git a/g_elpa/elpa_db.py b/g_elpa/elpa_db.py index 70378ac..12d56c7 100644 --- a/g_elpa/elpa_db.py +++ b/g_elpa/elpa_db.py @@ -28,8 +28,8 @@ from g_sorcery.fileutils import load_remote_file from g_sorcery.exceptions import SyncError class ElpaDB(PackageDB): - def __init__(self, directory, repo_uri="", db_uri=""): - super(ElpaDB, self).__init__(directory, repo_uri, db_uri) + def __init__(self, directory, config = None): + super(ElpaDB, self).__init__(directory, config) def get_download_uries(self): ac_uri = urljoin(self.repo_uri, 'archive-contents') diff --git a/g_sorcery/backend.py b/g_sorcery/backend.py index 85a6218..08b7956 100644 --- a/g_sorcery/backend.py +++ b/g_sorcery/backend.py @@ -112,6 +112,8 @@ class Backend(object): return -1 url = args.url repository = args.repository + repository_config = {} + if repository: if not "repositories" in config: self.logger.error("repository " + repository + @@ -121,37 +123,33 @@ class Backend(object): if not repository in repositories: self.logger.error("repository " + repository + " not found") return -1 - repository = repositories[repository] + repository_config = repositories[repository] + else: + if url: + repository_config = {"repo_uri" : url, "db_uri" : url} + else: + self.logger.error('no url given\n') + if self.sync_db: - if repository: - if not "db_uri" in repository: - self.logger.error("no db_uri in " + repository + " config") - return -1 - url = repository["db_uri"] - pkg_db = self.package_db_class(db_path, db_uri=url) + pkg_db = self.package_db_class(db_path, repository_config) if not pkg_db.db_uri: self.logger.error('no url given\n') return -1 else: - if repository: - if not "repo_uri" in repository: - self.logger.error("no repo_uri in " + repository + " config") - return -1 - url = repository["repo_uri"] - pkg_db = self.package_db_class(db_path, repo_uri=url) + pkg_db = self.package_db_class(db_path, repository_config) if not pkg_db.repo_uri: self.logger.error('no url given\n') return -1 if self.sync_db: try: - pkg_db.sync(db_uri=url) + pkg_db.sync() except Exception as e: self.logger.error('sync failed: ' + str(e) + '\n') return -1 else: try: - pkg_db.generate(repo_uri=url) + pkg_db.generate() except Exception as e: self.logger.error('sync failed: ' + str(e) + '\n') return -1 diff --git a/g_sorcery/package_db.py b/g_sorcery/package_db.py index bb7824a..2a8ab25 100644 --- a/g_sorcery/package_db.py +++ b/g_sorcery/package_db.py @@ -109,7 +109,7 @@ class PackageDB(object): return (Package(category, name, ver), ebuild_data) - def __init__(self, directory, repo_uri="", db_uri=""): + def __init__(self, directory, config = None): """ Args: directory: database directory. @@ -117,11 +117,28 @@ class PackageDB(object): db_uri: URI for synchronization with remote database. """ self.URI_NAME = 'uri.json' - self.INFO_NAME = 'info.json' + self.CONFIG_NAME = 'config.json' self.CATEGORIES_NAME = 'categories.json' self.PACKAGES_NAME = 'packages.json' self.VERSIONS_NAME = 'versions.json' self.directory = os.path.abspath(directory) + if config: + self.config = config + config_f = FileJSON(self.directory, self.CONFIG_NAME, []) + config_f.write(self.config) + else: + self.config = {} + + if "repo_uri" in self.config: + repo_uri = self.config["repo_uri"] + else: + repo_uri = "" + + if "db_uri" in self.config: + db_uri = self.config["db_uri"] + else: + db_uri = "" + self.reset_uri(repo_uri, db_uri) self.reset_db() @@ -155,7 +172,6 @@ class PackageDB(object): Reset database. """ self.database = {} - self.info = {} self.categories = {} def generate(self, repo_uri=""): @@ -277,7 +293,7 @@ class PackageDB(object): categories = FileJSON(self.directory, self.CATEGORIES_NAME, []) categories = categories.read() manifest = {} - names = [self.INFO_NAME, self.CATEGORIES_NAME, self.URI_NAME] + names = [self.CONFIG_NAME, self.CATEGORIES_NAME, self.URI_NAME] for name in names: manifest[name] = hash_file(os.path.join(self.directory, name), hashlib.md5()) @@ -306,7 +322,7 @@ class PackageDB(object): result = True errors = [] - names = [self.INFO_NAME, self.CATEGORIES_NAME, self.URI_NAME] + names = [self.CONFIG_NAME, self.CATEGORIES_NAME, self.URI_NAME] for name in names: if not name in manifest: raise DBStructureError('Bad manifest: no ' + name + ' entry') @@ -331,9 +347,9 @@ class PackageDB(object): """ Write database. """ - info_f = FileJSON(self.directory, self.INFO_NAME, []) + config_f = FileJSON(self.directory, self.CONFIG_NAME, []) categories_f = FileJSON(self.directory, self.CATEGORIES_NAME, []) - info_f.write(self.info) + config_f.write(self.config) categories_f.write(self.categories) for pkgname, versions in self.database.items(): @@ -393,9 +409,9 @@ class PackageDB(object): sane, errors = self.check_manifest() if not sane: raise IntegrityError('Manifest error: ' + str(errors)) - info_f = FileJSON(self.directory, self.INFO_NAME, []) + config_f = FileJSON(self.directory, self.CONFIG_NAME, []) categories_f = FileJSON(self.directory, self.CATEGORIES_NAME, []) - self.info = info_f.read() + self.config = config_f.read() self.categories = categories_f.read() for category in self.categories: category_path = os.path.join(self.directory, category) diff --git a/gs_ctan/ctan_db.py b/gs_ctan/ctan_db.py index 1623375..e85e257 100644 --- a/gs_ctan/ctan_db.py +++ b/gs_ctan/ctan_db.py @@ -24,8 +24,8 @@ from g_sorcery.package_db import PackageDB from g_sorcery.exceptions import SyncError class CtanDB(PackageDB): - def __init__(self, directory, repo_uri="", db_uri=""): - super(CtanDB, self).__init__(directory, repo_uri, db_uri) + def __init__(self, directory, config = None): + super(CtanDB, self).__init__(directory, config) logger = Logger() gentoo_arch = portage.settings['ARCH']