3 from __future__ import print_function
6 from ..config import RawConfigParser, ConfigWrapper, find_config_file
9 __all__ = ['get_session_config']
12 def _find_config_dirs_posix():
14 if 'XDG_CACHE_HOME' in os.environ:
15 config_dirs.append(os.environ['XDG_CACHE_HOME'])
16 home_cache = os.path.expanduser('~/.cache')
17 if home_cache not in config_dirs:
18 config_dirs.append(home_cache)
22 def _find_config_dirs():
23 if os.name == 'posix':
24 return _find_config_dirs_posix()
28 _ml_session_config = None
31 class SessionConfigWrapper(ConfigWrapper):
32 def __init__(self, config, config_path):
33 ConfigWrapper.__init__(self, config)
34 self.config_path = config_path
36 def set(self, section, option, value):
37 if not self.config.has_section(section):
38 self.config.add_section(section)
39 super(SessionConfigWrapper, self).set(section, option, value)
42 if self.config_path is None:
43 config_dirs = _find_config_dirs()
45 os.path.join(config_dirs[0], 'm_librarian_session.conf')
46 with open(self.config_path, 'wt') as fp:
50 def get_session_config(config_path=None):
51 global _ml_session_config
52 if _ml_session_config is None:
53 _ml_session_config = RawConfigParser()
54 if config_path is None:
55 config_dirs = _find_config_dirs()
57 find_config_file(config_dirs, 'm_librarian_session.conf')
58 if config_path is not None:
59 _ml_session_config.read(config_path)
60 _ml_session_config = \
61 SessionConfigWrapper(_ml_session_config, config_path)
62 return _ml_session_config
66 config_dirs = _find_config_dirs()
67 print("Config dirs:", config_dirs)
69 find_config_file(config_dirs, 'm_librarian_session.conf'))
72 if __name__ == '__main__':