X-Git-Url: https://vcs.maemo.org/git/?a=blobdiff_plain;f=dbuscron.py;h=a5391e8336a6a8762e32bf0891fcf6febd708c76;hb=HEAD;hp=89d313087d26c82bf6cb13cd863575902b9f2712;hpb=591adc2d3d91a5be30db79d9133e9ecc0edfafa3;p=dbuscron diff --git a/dbuscron.py b/dbuscron.py index 89d3130..a5391e8 100755 --- a/dbuscron.py +++ b/dbuscron.py @@ -5,72 +5,14 @@ # Examples for N900: # # Headphones unplugged: -# S signal * org.freedesktop.Hal.Manager /org/freedesktop/Hal/Manager DeviceRemoved * * echo Headphones unplugged; +# S signal * org.freedesktop.Hal.Device /org/freedesktop/Hal/devices/platform_headphone Condition * ButtonPressed;connection echo Headphones state changed: $(cat /sys/devices/platform/gpio-switch/headphone/state) # # Call recieved: # S signal * com.nokia.csd.Call /com/nokia/csd/call Coming * * echo $DBUS_ARG1 is calling # -import sys - -if __name__ == '__main__': - - from dbuscron import Logger, OptionsParser - - 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.logfile: - logout = open(options.logfile, 'wb') - - log = Logger(__name__, out=logout) - log.level = options.verbose - options.quiet + Logger.WARNING - - if options.daemon: - from dbuscron.daemonize import daemonize - daemonize( - pidfile='/var/run/dbuscron.pid', - logfile='/var/log/dbuscron.log' - ) - - from dbuscron import DbusBus, DbusRule, Command, Commands, CrontabParser - - bus = DbusBus() - commands = Commands() - - crontab = CrontabParser(options.config) - - def load_config(parser): - for rule, cmd in parser: - matcher = DbusRule(**rule) - command = Command(cmd) - matcher.register() - log.info('%s %s' % (matcher, command)) - commands.add(matcher, command) - - load_config(crontab) - - def reload_config_on_signal(sig_no, stack): - log.info('Signal #%d received: reloading config...' % (sig_no)) - commands.clear() - load_config(crontab) - log.info('Done config reloading.') - - import signal - signal.signal(signal.SIGHUP, reload_config_on_signal) - - commands.environ = crontab.environ - bus.attach_handler(commands.handler) - - try: - bus.listen() - except KeyboardInterrupt: - sys.exit(2) +from dbuscron.shell import main +main.run() # vim: ts=8 sts=4 sw=4 et