diff options
Diffstat (limited to 'src/lib/Bcfg2/Options.py')
-rw-r--r-- | src/lib/Bcfg2/Options.py | 23 |
1 files changed, 20 insertions, 3 deletions
diff --git a/src/lib/Bcfg2/Options.py b/src/lib/Bcfg2/Options.py index dfb062341..129a6c31e 100644 --- a/src/lib/Bcfg2/Options.py +++ b/src/lib/Bcfg2/Options.py @@ -1,10 +1,11 @@ """Option parsing library for utilities.""" -import getopt import re import os import sys +import copy import shlex +import getopt import Bcfg2.Client.Tools # Compatibility imports from Bcfg2.Bcfg2Py3k import ConfigParser @@ -149,6 +150,7 @@ class OptionSet(dict): self.hm = self.buildHelpMessage() if 'configfile' in kwargs: self.cfile = kwargs['configfile'] + os.environ['BCFG2_CONFIG_FILE'] = self.cfile else: self.cfile = DEFAULT_CONFIG_LOCATION self.cfp = DefaultConfigParser() @@ -307,6 +309,10 @@ SERVER_MCONNECT = Option('Server Metadata Connector list', cook=list_split, cf=('server', 'connectors'), default=['Probes'], ) SERVER_FILEMONITOR = Option('Server file monitor', cf=('server', 'filemonitor'), default='default', odesc='File monitoring driver') +SERVER_FAM_IGNORE = Option('File globs to ignore', + cf=('server', 'ignore_files'), cook=list_split, + default=['*~', '.#*', '*#', '*.swp', 'SCCS', '.svn', + '4913', '.gitignore']) SERVER_LISTEN_ALL = Option('Listen on all interfaces', cf=('server', 'listen_all'), cmd='--listen-all', @@ -425,10 +431,14 @@ class OptionParser(OptionSet): self.Bootstrap = OptionSet([('configfile', CFILE)], quiet=True) self.Bootstrap.parse(sys.argv[1:], do_getopt=False) OptionSet.__init__(self, args, configfile=self.Bootstrap['configfile']) - self.optinfo = args + self.optinfo = copy.copy(args) def HandleEvent(self, event): - if not self['configfile'].endswith(event.filename): + if 'configfile' not in self or not isinstance(self['configfile'], str): + # we haven't parsed options yet, or CFILE wasn't included + # in the options + return + if event.filename != self['configfile']: print("Got event for unknown file: %s" % event.filename) return if event.code2str() == 'deleted': @@ -447,3 +457,10 @@ class OptionParser(OptionSet): self.do_getopt = do_getopt OptionSet.parse(self, self.argv, do_getopt=self.do_getopt) + def add_option(self, name, opt): + self[name] = opt + self.optinfo[name] = opt + + def update(self, optdict): + dict.update(self, optdict) + self.optinfo.update(optdict) |