X-Git-Url: https://git.phdru.name/?a=blobdiff_plain;f=m_librarian%2Fconfig.py;h=04e64e0c9f99e8aa949e1500eb69d1e15b28bdae;hb=6dd5fc32d2fec60a1579cae61fd6b0cb2ff72033;hp=f1dfdb7c6866112b4f9a76e986c9874679e87dea;hpb=071f22093f133ede991d6125905e07a25f4c7ec6;p=m_librarian.git diff --git a/m_librarian/config.py b/m_librarian/config.py index f1dfdb7..04e64e0 100755 --- a/m_librarian/config.py +++ b/m_librarian/config.py @@ -1,28 +1,52 @@ #! /usr/bin/env python -__all__ = ['ml_conf'] - import os from ConfigParser import SafeConfigParser -config_dirs = [] -if 'XDG_CONFIG_HOME' in os.environ: - config_dirs.append(os.environ['XDG_CONFIG_HOME']) -if 'XDG_CONFIG_DIRS' in os.environ: - config_dirs.extend(os.environ['XDG_CONFIG_DIRS'].split(':')) -home_config = os.path.expanduser('~/.config') -if home_config not in config_dirs: - config_dirs.append(home_config) - -for d in config_dirs: - ml_conf_file = os.path.join(d, 'm_librarian.conf') - if os.path.exists(ml_conf_file): - ml_conf = SafeConfigParser() - ml_conf.read(ml_conf_file) - break -else: - ml_conf = ml_conf_file = None +__all__ = ['get_config'] -if __name__ == '__main__': + +def _find_config_dirs_posix(): + config_dirs = [] + if 'XDG_CONFIG_HOME' in os.environ: + config_dirs.append(os.environ['XDG_CONFIG_HOME']) + if 'XDG_CONFIG_DIRS' in os.environ: + config_dirs.extend(os.environ['XDG_CONFIG_DIRS'].split(':')) + home_config = os.path.expanduser('~/.config') + if home_config not in config_dirs: + config_dirs.append(home_config) + return config_dirs + + +def find_config_dirs(): + if os.name == 'posix': + return _find_config_dirs_posix() + raise OSError("Unknow OS") + + +def find_config_file(config_dirs=None): + if config_dirs is None: + config_dirs = find_config_dirs() + for d in config_dirs: + ml_conf_file = os.path.join(d, 'm_librarian.conf') + if os.path.exists(ml_conf_file): + return ml_conf_file + else: + raise IOError("Cannot find m_librarian.conf in %s" % config_dirs) + + +def get_config(config_filename=None): + if config_filename is None: + config_filename = find_config_file() + ml_conf = SafeConfigParser() + ml_conf.read(config_filename) + return ml_conf + + +def test(): + config_dirs = find_config_dirs() print "Config dirs:", config_dirs - print "Config file:", ml_conf_file + print "Config file:", find_config_file(config_dirs) + +if __name__ == '__main__': + test()