diff options
author | 2013-06-23 23:40:01 +0200 | |
---|---|---|
committer | 2013-06-23 23:40:01 +0200 | |
commit | b6cf7231ae7425288746e5d28228744288637dbc (patch) | |
tree | 04632584339098808c4acbaa49faf0a740e2ad87 /g_sorcery/backend.py | |
parent | g_sorcery/ebuild: EbuildGeneratorFromFile (diff) | |
download | g-sorcery-b6cf7231ae7425288746e5d28228744288637dbc.tar.gz g-sorcery-b6cf7231ae7425288746e5d28228744288637dbc.tar.bz2 g-sorcery-b6cf7231ae7425288746e5d28228744288637dbc.zip |
g_sorcery/backend
Diffstat (limited to 'g_sorcery/backend.py')
-rw-r--r-- | g_sorcery/backend.py | 58 |
1 files changed, 57 insertions, 1 deletions
diff --git a/g_sorcery/backend.py b/g_sorcery/backend.py index 0fb194d..476a8a4 100644 --- a/g_sorcery/backend.py +++ b/g_sorcery/backend.py @@ -11,6 +11,62 @@ :license: GPL-2, see LICENSE for more details. """ +import glob, os + class Backend: - def __init__(self): + def __init__(self, PackageDB, EbuildGenrator, directory, + repo_uri="", db_uri="", sync_db=True, eclass_dir=""): + self.sync_db = sync_db + self.repo_uri = repo_uri + self.db_uri = db_uri + self.eclass_dir = eclass_dir + + self.directory = directory + self.backend_data_dir = os.path.join(directory, '.backend_data') + os.makedirs(self.backend_data_dir) + self.db = PackageDB(os.path.join(self.backend_data_dir, 'db'), + repo_uri = self.repo_uri, + db_uri = self.db_uri) + + self.repo_uri = self.db.repo_uri + self.db_uri = self.db.db_uri + + self.eg = EbuildGenrator(self.db) + + def sync(self): + if self.sync_db and not self.db_uri: + Exception("No uri for syncing provided.") + if not self.sync_db and not self.repo_uri: + Exception("No repo uri provided.") + if self.sync_db: + self.db.sync() + else: + self.db.generate() + + def list_ebuilds(self): + return self.db.list_all_packages() + + def generate_ebuild(self, package): + return self.eg.generate(package) + + def list_eclasses(self): + result = [] + if self.eclass_dir: + for f_name in glob.iglob(os.path.join(self.eclass_dir, '*.eclass')): + result.append(os.path.basename(f_name)[:-7]) + return result + + def generate_eclass(self, eclass): + if not self.eclass_dir: + Exception('No eclass dir') + f_name = os.path.join(self.eclass_dir, eclass + '.eclass') + if not os.path.isfile(f_name): + Exception('No eclass ' + eclass) + with open(f_name, 'r') as f: + eclass = f.read().split('\n') + if eclass[-1] == '': + eclass = eclass[:-1] + return eclass + + def generate_metadata(self, category, name): pass |