提交 62ad6203 编写于 作者: M Mark Hymers

add basic config module

Signed-off-by: NMark Hymers <mhy@debian.org>
上级 6f2f5e7c
#!/usr/bin/env python
# Config access class
# Copyright (C) 2008 Mark Hymers <mhy@debian.org>
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
################################################################################
# <NCommander> mhy, how about "Now with 20% more monty python references"
################################################################################
import apt_pkg
import socket
from Singleton import Singleton
################################################################################
default_config = "/etc/dak/dak.conf"
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
class Config(Singleton):
"""
A Config object is a singleton containing
information about the DAK configuration
"""
def __init__(self, *args, **kwargs):
super(Config, self).__init__(*args, **kwargs)
def _readconf(self):
apt_pkg.init()
self.Cnf = apt_pkg.newConfiguration()
apt_pkg.ReadConfigFileISC(self.Cnf, default_config)
# Check whether our dak.conf was the real one or
# just a pointer to our main one
res = socket.gethostbyaddr(socket.gethostname())
conffile = self.Cnf.get("Config::" + res[0] + "::DakConfig")
if conffile:
apt_pkg.ReadConfigFileISC(self.Cnf, conffile)
# Rebind some functions
# TODO: Clean this up
self.get = self.Cnf.get
self.SubTree = self.Cnf.SubTree
self.ValueList = self.Cnf.ValueList
def _startup(self, *args, **kwargs):
self._readconf()
def __getitem__(self, name):
return self.Cnf[name]
def GetDBConnString(self):
s = "dbname=%s" % self.Cnf["DB::Name"]
if self.Cnf["DB::Host"]:
s += " host=%s" % self.Cnf["DB::Host"]
if self.Cnf["DB::Port"] and self.Cnf["DB::Port"] != "-1":
s += " port=%s" % self.Cnf["DB::Port"]
return s
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册