1import configparser
2import glob
3import os
4import sys
5
6from bugz.log import log_error
7
8
9def load_config(UserConfig=None):
10    parser = configparser.ConfigParser(default_section='default')
11    DefaultConfigs = sorted(glob.glob(sys.prefix + '/share/pybugz.d/*.conf'))
12    SystemConfigs = sorted(glob.glob(sys.prefix + '/etc/pybugz.d/*.conf'))
13    if UserConfig is not None:
14        UserConfig = os.path.expanduser(UserConfig)
15    else:
16        UserConfig = os.path.expanduser('~/.bugzrc')
17
18    try:
19        parser.read(DefaultConfigs + SystemConfigs + [UserConfig])
20
21    except configparser.DuplicateOptionError as error:
22        log_error(error)
23        sys.exit(1)
24    except configparser.DuplicateSectionError as error:
25        log_error(error)
26        sys.exit(1)
27    except configparser.MissingSectionHeaderError as error:
28        log_error(error)
29        sys.exit(1)
30    except configparser.ParsingError as error:
31        log_error(error)
32        sys.exit(1)
33
34    return parser
35
36
37def get_config_option(get, section, option):
38    try:
39        value = get(section, option)
40
41    except configparser.InterpolationSyntaxError as error:
42        log_error('Syntax Error in configuration file: {0}'.format(error))
43        sys.exit(1)
44
45    except ValueError as error:
46        log_error('{0} is not in the right format: {1}'.format(option,
47                  str(error)))
48        sys.exit(1)
49
50    if value == '':
51        log_error('{0} is not set'.format(option))
52        sys.exit(1)
53
54    return value
55