diff options
author | Marko Kreen | 2011-01-17 14:47:56 +0000 |
---|---|---|
committer | Marko Kreen | 2011-01-17 14:47:56 +0000 |
commit | 3d58c48b9a5ea293e6d96986e070ff795bb0f0e3 (patch) | |
tree | a7eb33d6eee1bdeed31d617d0f3c55f72fc330a9 | |
parent | a9f89fb3611480f17cefaf312899280dc57a7a8d (diff) |
DBScript: allow override config parameters from command line (--set).
-rw-r--r-- | python/skytools/config.py | 10 | ||||
-rw-r--r-- | python/skytools/scripting.py | 10 |
2 files changed, 18 insertions, 2 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: diff --git a/python/skytools/scripting.py b/python/skytools/scripting.py index e6d7abfa..14f4d694 100644 --- a/python/skytools/scripting.py +++ b/python/skytools/scripting.py @@ -380,6 +380,12 @@ class DBScript(object): self.print_ini() sys.exit(0) + self.cf_operride = {} + if self.options.set: + for a in self.options.set: + k, v = a.split('=', 1) + self.cf_operride[k.strip()] = v.strip() + # read config file self.reload() @@ -452,7 +458,7 @@ class DBScript(object): print("need config file, use --help for help.") sys.exit(1) conf_file = self.args[0] - return Config(self.service_name, conf_file) + return Config(self.service_name, conf_file, override = self.cf_operride) def init_optparse(self, parser = None): """Initialize a OptionParser() instance that will be used to @@ -482,6 +488,8 @@ class DBScript(object): help = "print version info and exit") p.add_option("", "--ini", action="store_true", help = "display sample ini file") + p.add_option("", "--set", action="append", + help = "override config setting (--set 'PARAM=VAL')") # control options g = optparse.OptionGroup(p, 'control running process') |