From 0f84268ebfc33d2ab1def3b34ac30342dbb2c63f Mon Sep 17 00:00:00 2001 From: "Fabien C. Y. Benureau" Date: Mon, 6 Jun 2016 00:25:27 +0200 Subject: [PATCH] Honor custom pubsdoc in config --- pubs/commands/init_cmd.py | 1 + pubs/config/__init__.py | 2 +- pubs/config/conf.py | 8 ++++++++ pubs/databroker.py | 8 ++++---- pubs/datacache.py | 11 +++++++---- pubs/filebroker.py | 2 +- pubs/repo.py | 3 ++- tests/.gitignore | 1 + tests/test_databroker.py | 4 ++-- 9 files changed, 27 insertions(+), 13 deletions(-) diff --git a/pubs/commands/init_cmd.py b/pubs/commands/init_cmd.py index df3de8c..f4f2a4c 100644 --- a/pubs/commands/init_cmd.py +++ b/pubs/commands/init_cmd.py @@ -42,6 +42,7 @@ def command(conf, args): conf['main']['pubsdir'] = pubsdir conf['main']['docsdir'] = docsdir conf['main']['open_cmd'] = config.default_open_cmd() + conf = config.post_process_conf(conf) config.save_conf(conf) Repository(conf, create=True) diff --git a/pubs/config/__init__.py b/pubs/config/__init__.py index ba7eaf2..0f5a133 100644 --- a/pubs/config/__init__.py +++ b/pubs/config/__init__.py @@ -1,2 +1,2 @@ from .conf import get_confpath, load_default_conf, load_conf, save_conf, check_conf -from .conf import default_open_cmd +from .conf import default_open_cmd, post_process_conf diff --git a/pubs/config/conf.py b/pubs/config/conf.py index a512a90..af2f3ce 100644 --- a/pubs/config/conf.py +++ b/pubs/config/conf.py @@ -11,12 +11,19 @@ from .spec import configspec DFT_CONFIG_PATH = os.path.expanduser('~/.pubsrc') +def post_process_conf(conf): + """Do some post processing on the configuration""" + if conf['main']['docsdir'] == 'docsdir://': + conf['main']['docsdir'] = os.path.join(conf['main']['pubsdir'], 'doc') + return conf + def load_default_conf(): """Load the default configuration""" default_conf = configobj.ConfigObj(configspec=configspec) validator = validate.Validator() default_conf.validate(validator, copy=True) + default_conf = post_process_conf(default_conf) return default_conf @@ -52,6 +59,7 @@ def load_conf(check=True, path=None): if check: check_conf(conf) conf.filename = path + conf = post_process_conf(conf) return conf diff --git a/pubs/databroker.py b/pubs/databroker.py index 12c6eda..4e5c0be 100644 --- a/pubs/databroker.py +++ b/pubs/databroker.py @@ -9,11 +9,11 @@ class DataBroker(object): Requests are optimistically made, and exceptions are raised if something goes wrong. """ - def __init__(self, directory, create=False): - self.filebroker = filebroker.FileBroker(directory, create=create) + def __init__(self, pubsdir, docsdir, create=False): + self.filebroker = filebroker.FileBroker(pubsdir, create=create) self.endecoder = endecoder.EnDecoder() - self.docbroker = filebroker.DocBroker(directory, scheme='docsdir', subdir='doc') - self.notebroker = filebroker.DocBroker(directory, scheme='notesdir', subdir='notes') + self.docbroker = filebroker.DocBroker(docsdir, scheme='docsdir', subdir='') + self.notebroker = filebroker.DocBroker(pubsdir, scheme='notesdir', subdir='notes') # cache diff --git a/pubs/datacache.py b/pubs/datacache.py index 3787dda..69f32ad 100644 --- a/pubs/datacache.py +++ b/pubs/datacache.py @@ -94,8 +94,9 @@ class DataCache(object): For the moment, only (1) is implemented. """ - def __init__(self, directory, create=False): - self.directory = directory + def __init__(self, pubsdir, docsdir, create=False): + self.pubsdir = pubsdir + self.docsdir = docsdir self._databroker = None self._metacache = None self._bibcache = None @@ -108,7 +109,8 @@ class DataCache(object): @property def databroker(self): if self._databroker is None: - self._databroker = databroker.DataBroker(self.directory, create=False) + self._databroker = databroker.DataBroker(self.pubsdir, self.docsdir, + create=False) return self._databroker @property @@ -124,7 +126,8 @@ class DataCache(object): return self._bibcache def _create(self): - self._databroker = databroker.DataBroker(self.directory, create=True) + self._databroker = databroker.DataBroker(self.pubsdir, self.docsdir, + create=True) def flush_cache(self, force=False): """Write cache to disk""" diff --git a/pubs/filebroker.py b/pubs/filebroker.py index 934aaad..47a8bd8 100644 --- a/pubs/filebroker.py +++ b/pubs/filebroker.py @@ -150,7 +150,7 @@ class DocBroker(object): def __init__(self, directory, scheme='docsdir', subdir='doc'): self.scheme = scheme self.docdir = os.path.join(directory, subdir) - if not check_directory(self.docdir, fail = False): + if not check_directory(self.docdir, fail=False): os.mkdir(system_path(self.docdir)) def in_docsdir(self, docpath): diff --git a/pubs/repo.py b/pubs/repo.py index ceec061..6953317 100644 --- a/pubs/repo.py +++ b/pubs/repo.py @@ -39,7 +39,8 @@ class Repository(object): def __init__(self, conf, create=False): self.conf = conf self._citekeys = None - self.databroker = DataCache(self.conf['main']['pubsdir'], create=create) + self.databroker = DataCache(self.conf['main']['pubsdir'], + self.conf['main']['docsdir'], create=create) def close(self): self.databroker.close() diff --git a/tests/.gitignore b/tests/.gitignore index 751553b..4a0a40c 100644 --- a/tests/.gitignore +++ b/tests/.gitignore @@ -1 +1,2 @@ *.bak +src/ diff --git a/tests/test_databroker.py b/tests/test_databroker.py index cfd25c6..7cb54d3 100644 --- a/tests/test_databroker.py +++ b/tests/test_databroker.py @@ -23,7 +23,7 @@ class TestDataBroker(fake_env.TestFakeFs): for db_class in [databroker.DataBroker, datacache.DataCache]: self.reset_fs() - db = db_class('tmp', create=True) + db = db_class('tmp', 'tmp/doc', create=True) db.push_metadata('citekey1', page99_metadata) self.assertFalse(db.exists('citekey1', meta_check=True)) @@ -50,7 +50,7 @@ class TestDataBroker(fake_env.TestFakeFs): fake_env.copy_dir(self.fs, os.path.join(os.path.dirname(__file__), 'testrepo'), 'repo') - db = db_class('repo', create=False) + db = db_class('repo', 'repo/doc', create=False) self.assertEqual(db.pull_bibentry('Page99'), page99_bibentry)