X-Git-Url: https://git.phdru.name/?a=blobdiff_plain;ds=sidebyside;f=m_librarian%2Fwx%2Fsession_config.py;fp=m_librarian%2Fwx%2Fsession_config.py;h=93b725cd1a65d336547431b88ada6dd220eddeb1;hb=5f579825e3839c6bb754f6d53590b125c72034c7;hp=0000000000000000000000000000000000000000;hpb=13e26556157955b2a2c33e6524a10116d818b685;p=m_librarian.git diff --git a/m_librarian/wx/session_config.py b/m_librarian/wx/session_config.py new file mode 100755 index 0000000..93b725c --- /dev/null +++ b/m_librarian/wx/session_config.py @@ -0,0 +1,73 @@ +#! /usr/bin/env python + +from __future__ import print_function +import os + +from ..config import RawConfigParser, ConfigWrapper, find_config_file + + +__all__ = ['get_session_config'] + + +def _find_config_dirs_posix(): + config_dirs = [] + if 'XDG_CACHE_HOME' in os.environ: + config_dirs.append(os.environ['XDG_CACHE_HOME']) + home_cache = os.path.expanduser('~/.cache') + if home_cache not in config_dirs: + config_dirs.append(home_cache) + return config_dirs + + +def _find_config_dirs(): + if os.name == 'posix': + return _find_config_dirs_posix() + return None + + +_ml_session_config = None + + +class SessionConfigWrapper(ConfigWrapper): + def __init__(self, config, config_path): + ConfigWrapper.__init__(self, config) + self.config_path = config_path + + def set(self, section, option, value): + if not self.config.has_section(section): + self.config.add_section(section) + super(SessionConfigWrapper, self).set(section, option, value) + + def save(self): + if self.config_path is None: + config_dirs = _find_config_dirs() + self.config_path = \ + os.path.join(config_dirs[0], 'm_librarian_session.conf') + with open(self.config_path, 'wt') as fp: + self.config.write(fp) + + +def get_session_config(config_path=None): + global _ml_session_config + if _ml_session_config is None: + _ml_session_config = RawConfigParser() + if config_path is None: + config_dirs = _find_config_dirs() + config_path = \ + find_config_file(config_dirs, 'm_librarian_session.conf') + if config_path is not None: + _ml_session_config.read(config_path) + _ml_session_config = \ + SessionConfigWrapper(_ml_session_config, config_path) + return _ml_session_config + + +def _test(): + config_dirs = _find_config_dirs() + print("Config dirs:", config_dirs) + print("Config file:", + find_config_file(config_dirs, 'm_librarian_session.conf')) + + +if __name__ == '__main__': + _test()