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