2 from dbuscron import Logger, OptionsParser
6 options = OptionsParser(
7 daemon=dict(names=('-f', '--nodaemon'), action='store_false', default=True),
8 quiet=dict(names=('--quiet', '-q'), action='count', default=0),
9 verbose=dict(names=('--verbose', '-v'), action='count', default=0),
10 config=dict(names=('--conf', '--config', '-c'), default='/etc/dbuscrontab'),
11 logfile=dict(names=('--log', '--logfile', '-l')))
15 logout = open(options.logfile, 'wb')
17 log = Logger(__name__, out=logout)
18 log.level = options.verbose - options.quiet + Logger.WARNING
21 from dbuscron.daemonize import daemonize
23 pidfile='/var/run/dbuscron.pid',
24 logfile='/var/log/dbuscron.log'
27 from dbuscron import DbusBus, DbusRule, Command, Commands, CrontabParser
32 crontab = CrontabParser(options.config)
34 def load_config(parser):
35 for rule, cmd in parser:
36 matcher = DbusRule(**rule)
37 command = Command(cmd)
39 log('rule parsed', matcher, command)
40 commands.add(matcher, command)
44 def reload_config_on_signal(sig_no, stack):
45 log('Signal #%d received: reloading config...' % (sig_no))
48 log('Done config reloading.')
51 signal.signal(signal.SIGHUP, reload_config_on_signal)
53 commands.environ = crontab.environ
54 bus.attach_handler(commands.handler)
58 except KeyboardInterrupt: