config.py (1647B)
1 # standard imports 2 import os 3 import configparser 4 import hashlib 5 import logging 6 7 # third party imports 8 from xdg import BaseDirectory 9 10 logg = logging.getLogger() 11 12 13 class config: 14 15 def __init__(self, filename=None): 16 self.data_dir = BaseDirectory.save_data_path('feedwarrior') 17 self.task_dir = os.path.join(os.environ.get('HOME'), '.task') 18 cp = configparser.ConfigParser() 19 20 config_paths = [filename] 21 config_loaded = False 22 23 # TODO: this make no sense 24 # if filename == None: 25 config_paths += BaseDirectory.load_config_paths('feedwarrior') 26 27 if filename != None: 28 for p in config_paths: 29 config_path = os.path.join(p, filename) 30 r = cp.read(config_path) 31 if len(r) == 0: 32 logg.warning("config file in path {} not found".format(config_path)) 33 continue 34 35 logg.info('successfully read config {}'.format(p)) 36 config_loaded = True 37 38 if cp.has_option('FEEDWARRIOR', 'datadir'): 39 self.data_dir = cp['FEEDWARRIOR']['datadir'] 40 41 if cp.has_option('FEEDWARRIOR', 'taskdir'): 42 self.task_dir = cp['FEEDWARRIOR']['taskdir'] 43 44 logg.info('using data dir {}'.format(self.data_dir)) 45 logg.info('using task dir {}'.format(self.task_dir)) 46 47 self.feeds_dir = os.path.join(self.data_dir, 'feeds') 48 self.alias_dir = os.path.join(self.feeds_dir, 'names') 49 self.entries_dir = os.path.join(self.data_dir, 'entries') 50 self.hasher = hashlib.sha256 51 52 53 def load_config(filename): 54 return config(filename)