]> git.phdru.name Git - m_librarian.git/blob - m_librarian/config.py
Fix new flake8 E402: module level import not at top of file
[m_librarian.git] / m_librarian / config.py
1 #! /usr/bin/env python
2
3 import os
4 from ConfigParser import SafeConfigParser
5
6 __all__ = ['get_config']
7
8
9 def _find_config_dirs_posix():
10     config_dirs = []
11     if 'XDG_CONFIG_HOME' in os.environ:
12         config_dirs.append(os.environ['XDG_CONFIG_HOME'])
13     if 'XDG_CONFIG_DIRS' in os.environ:
14         config_dirs.extend(os.environ['XDG_CONFIG_DIRS'].split(':'))
15     home_config = os.path.expanduser('~/.config')
16     if home_config not in config_dirs:
17         config_dirs.append(home_config)
18     return config_dirs
19
20
21 def find_config_dirs():
22     if os.name == 'posix':
23         return _find_config_dirs_posix()
24     raise OSError("Unknow OS")
25
26
27 def find_config_file(config_dirs=None):
28     if config_dirs is None:
29         config_dirs = find_config_dirs()
30     for d in config_dirs:
31         ml_conf_file = os.path.join(d, 'm_librarian.conf')
32         if os.path.exists(ml_conf_file):
33             return ml_conf_file
34     else:
35         raise IOError("Cannot find m_librarian.conf in %s" % config_dirs)
36
37
38 def get_config(config_filename=None):
39     if config_filename is None:
40         config_filename = find_config_file()
41     ml_conf = SafeConfigParser()
42     ml_conf.read(config_filename)
43     return ml_conf
44
45
46 def test():
47     config_dirs = find_config_dirs()
48     print "Config dirs:", config_dirs
49     print "Config file:", find_config_file(config_dirs)
50
51 if __name__ == '__main__':
52     test()