X-Git-Url: https://git.decadent.org.uk/gitweb/?a=blobdiff_plain;f=daklib%2Fconfig.py;h=2d0b8e851d7df11db3dd1bba146651b732548b49;hb=b5da3a8242954873807477980107afb3d5d33876;hp=997a597d0e499e593684efa83b137a75db7f1d3a;hpb=603d8ace7d4f942c999c29556bde38ec2516b9a8;p=dak.git diff --git a/daklib/config.py b/daklib/config.py index 997a597d..2d0b8e85 100755 --- a/daklib/config.py +++ b/daklib/config.py @@ -28,36 +28,38 @@ Config access class ################################################################################ +import os import apt_pkg import socket -from singleton import Singleton - ################################################################################ -default_config = "/etc/dak/dak.conf" +default_config = "/etc/dak/dak.conf" #: default dak config, defines host properties -def which_conf_file(Cnf): - res = socket.gethostbyaddr(socket.gethostname()) - if Cnf.get("Config::" + res[0] + "::DakConfig"): - return Cnf["Config::" + res[0] + "::DakConfig"] - else: - return default_config +def which_conf_file(): + return os.getenv("DAK_CONFIG", default_config) -class Config(Singleton): +class Config(object): """ A Config object is a singleton containing information about the DAK configuration """ + + __shared_state = {} + def __init__(self, *args, **kwargs): - super(Config, self).__init__(*args, **kwargs) + self.__dict__ = self.__shared_state + + if not getattr(self, 'initialised', False): + self.initialised = True + self._readconf() def _readconf(self): apt_pkg.init() self.Cnf = apt_pkg.newConfiguration() - apt_pkg.ReadConfigFileISC(self.Cnf, default_config) + apt_pkg.ReadConfigFileISC(self.Cnf, which_conf_file()) # Check whether our dak.conf was the real one or # just a pointer to our main one @@ -71,9 +73,8 @@ class Config(Singleton): self.get = self.Cnf.get self.SubTree = self.Cnf.SubTree self.ValueList = self.Cnf.ValueList - - def _startup(self, *args, **kwargs): - self._readconf() + self.Find = self.Cnf.Find + self.FindB = self.Cnf.FindB def has_key(self, name): return self.Cnf.has_key(name) @@ -81,3 +82,5 @@ class Config(Singleton): def __getitem__(self, name): return self.Cnf[name] + def __setitem__(self, name, value): + self.Cnf[name] = value