summaryrefslogtreecommitdiff
path: root/python/skytools/config.py
diff options
context:
space:
mode:
authorMarko Kreen2011-01-17 14:47:56 +0000
committerMarko Kreen2011-01-17 14:47:56 +0000
commit3d58c48b9a5ea293e6d96986e070ff795bb0f0e3 (patch)
treea7eb33d6eee1bdeed31d617d0f3c55f72fc330a9 /python/skytools/config.py
parenta9f89fb3611480f17cefaf312899280dc57a7a8d (diff)
DBScript: allow override config parameters from command line (--set).
Diffstat (limited to 'python/skytools/config.py')
-rw-r--r--python/skytools/config.py10
1 files changed, 9 insertions, 1 deletions
diff --git a/python/skytools/config.py b/python/skytools/config.py
index 5f926758..8336c456 100644
--- a/python/skytools/config.py
+++ b/python/skytools/config.py
@@ -13,7 +13,7 @@ class Config(object):
- Acceps defaults in get() functions.
- List value support.
"""
- def __init__(self, main_section, filename, sane_config = 1, user_defs = {}):
+ def __init__(self, main_section, filename, sane_config = 1, user_defs = {}, override = {}):
"""Initialize Config and read from file.
@param sane_config: chooses between ConfigParser/SafeConfigParser.
@@ -35,6 +35,7 @@ class Config(object):
self.main_section = main_section
self.filename = filename
self.sane_config = sane_config
+ self.override = override
if sane_config:
self.cf = ConfigParser.SafeConfigParser()
else:
@@ -53,10 +54,17 @@ class Config(object):
self.cf.read(self.filename)
if not self.cf.has_section(self.main_section):
raise Exception("Wrong config file, no section '%s'" % self.main_section)
+
+ # apply default if key not set
for k, v in self.defs.items():
if not self.cf.has_option(self.main_section, k):
self.cf.set(self.main_section, k, v)
+ # apply overrides
+ if self.override:
+ for k, v in self.override.items():
+ self.cf.set(self.main_section, k, v)
+
def get(self, key, default=None):
"""Reads string value, if not set then default."""
try: