From: "Jauhien Piatlicki" <piatlicki@gmail.com>
To: gentoo-commits@lists.gentoo.org
Subject: [gentoo-commits] proj/g-sorcery:master commit in: g_sorcery/, gs_ctan/, g_elpa/
Date: Fri, 19 Jul 2013 16:20:10 +0000 (UTC) [thread overview]
Message-ID: <1374248265.fde32d9301971a96f876cd7147835e06c56805c3.jauhien@gentoo> (raw)
commit: fde32d9301971a96f876cd7147835e06c56805c3
Author: Jauhien Piatlicki (jauhien) <piatlicki <AT> gmail <DOT> com>
AuthorDate: Fri Jul 19 15:37:45 2013 +0000
Commit: Jauhien Piatlicki <piatlicki <AT> gmail <DOT> 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']
next reply other threads:[~2013-07-19 16:20 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-07-19 16:20 Jauhien Piatlicki [this message]
-- strict thread matches above, loose matches on Subject: below --
2013-07-19 16:20 [gentoo-commits] proj/g-sorcery:master commit in: g_sorcery/, gs_ctan/, g_elpa/ Jauhien Piatlicki
2013-07-17 23:19 Jauhien Piatlicki
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1374248265.fde32d9301971a96f876cd7147835e06c56805c3.jauhien@gentoo \
--to=piatlicki@gmail.com \
--cc=gentoo-commits@lists.gentoo.org \
--cc=gentoo-dev@lists.gentoo.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox