summaryrefslogtreecommitdiffstats
path: root/src/lib/Bcfg2/Options.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/Bcfg2/Options.py')
-rw-r--r--src/lib/Bcfg2/Options.py23
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)