#!/usr/bin/env python # encoding: utf-8 # # $Id$ # $URL$ """ cfgfile.py Created by Marcus Stoegbauer on 2013-01-12. Copyright (c) 2013 __MyCompanyName__. All rights reserved. """ import ConfigParser import os import re class Conf(object): confobj = ConfigParser.RawConfigParser() cfgfile = '' debug = None def __init__(self, filename = None): """if filename is set, open config file and initialize the ConfigParser """ self.confobj = ConfigParser.RawConfigParser() if filename: self.setfilename(filename) # if filename # def __init__ def setdebug(self, debug): """docstring for setdebug""" self.debug = debug # def setdebug def setfilename(self, filename): """initialize the ConfigParser """ ret = self.confobj.read(filename) if len(ret) == 0 or ret[0] != filename: raise Exception('Cannot read config file ' + filename) # if cannot read self.cfgfile = filename if self.debug: self.debug.debug("Read config file %s" % filename, 2) self.debug.debug("Replacing environment variables in %s." % filename, 3) # if debug for s in self.confobj.sections(): for (i, val) in self.confobj.items(s): tempre = re.search("\$([A-Z]+)[^A-Z]*", val) if tempre: varname = tempre.group(1) if self.debug: self.debug.debug("Found variable %s in %s." % (varname, i), 3) # if debug if os.environ.has_key(varname): if self.debug: self.debug.debug("%s exists in environment, replacing with %s." % (varname, os.environ[varname]), 3) # if debug self.set(s, i, val.replace("$"+varname, os.environ[varname])) # if has_key # if tempre # for i # for s # def setfilename def get(self, section, option): """returns the value of option in section """ if not self.cfgfile: raise Exception('No config file set') # if not cfgfile return self.confobj.get(section, option) # def get def set(self, section, option, value): """docstring for update""" self.confobj.set(section, option, value) # def set def getitems(self, section): """returns all items in section """ if not self.cfgfile: raise Exception('No config file set') # if not cfgfile return self.confobj.items(section) # def getitems def check(self, section, option): """checks for option in section""" return self.confobj.has_option(section, option) # def check # class Conf