feedwarrior

Slim, portable tooling for creating and distributing decentralized append logs
git clone git://git.defalsify.org/logwarrior.git
Log | Files | Refs | README | LICENSE

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)