more robust loggin of unicode messages
[dbuscron] / dbuscron.py
index b3822e0..89d3130 100755 (executable)
@@ -17,17 +17,21 @@ if __name__ == '__main__':
 
     from dbuscron import Logger, OptionsParser
 
-    options = OptionsParser('fvc:l:')
-    daemon = not options.f
+    options = OptionsParser(
+            daemon=dict(names=('-f', '--nodaemon'), action='store_false', default=True),
+            quiet=dict(names=('--quiet', '-q'), action='count', default=0),
+            verbose=dict(names=('--verbose', '-v'), action='count', default=0),
+            config=dict(names=('--conf', '--config', '-c'), default='/etc/dbuscrontab'),
+            logfile=dict(names=('--log', '--logfile', '-l')))
 
     logout = sys.stderr
-    if options.l:
-        logout = open(options.l, 'wb')
+    if options.logfile:
+        logout = open(options.logfile, 'wb')
 
     log = Logger(__name__, out=logout)
-    log.level = options.v + Logger.ERROR
+    log.level = options.verbose - options.quiet + Logger.WARNING
 
-    if daemon:
+    if options.daemon:
         from dbuscron.daemonize import daemonize
         daemonize(
             pidfile='/var/run/dbuscron.pid',
@@ -39,7 +43,7 @@ if __name__ == '__main__':
     bus = DbusBus()
     commands = Commands()
 
-    crontab = CrontabParser(options.c or '/etc/dbuscrontab')
+    crontab = CrontabParser(options.config)
 
     def load_config(parser):
         for rule, cmd in parser:
@@ -53,8 +57,6 @@ if __name__ == '__main__':
 
     def reload_config_on_signal(sig_no, stack):
         log.info('Signal #%d received: reloading config...' % (sig_no))
-        for matcher, command in commands:
-            matcher.unregister()
         commands.clear()
         load_config(crontab)
         log.info('Done config reloading.')