OptionsParser & Logger is importable from dbuscron
[dbuscron] / dbuscron.py
1 #!/usr/bin/python
2 #
3 # bus type sender interface path member destination args command
4 #
5 # Examples for N900:
6 #
7 # Headphones unplugged:
8 # S signal * org.freedesktop.Hal.Manager /org/freedesktop/Hal/Manager DeviceRemoved * * echo Headphones unplugged;
9 #
10 # Call recieved:
11 # S signal * com.nokia.csd.Call /com/nokia/csd/call Coming * * echo $DBUS_ARG1 is calling
12 #
13
14 import sys
15
16 if __name__ == '__main__':
17
18     daemon = (len(sys.argv) < 2) or (sys.argv[1] != '-f')
19     if daemon:
20         from dbuscron.daemonize import daemonize
21         daemonize(
22             pidfile='/var/run/dbuscron.pid',
23             logfile='/var/log/dbuscron.log'
24             )
25
26     from dbuscron import DbusBus, DbusRule, Command, Commands, CrontabParser
27
28     bus = DbusBus()
29     commands = Commands()
30     crontab = CrontabParser('/etc/dbuscrontab')
31
32     for rule, cmd in crontab:
33         matcher = DbusRule(**rule)
34         command = Command(cmd)
35         matcher.register()
36         commands.add(matcher, command)
37
38     commands.environ = crontab.environ
39     bus.attach_handler(commands.handler)
40
41     try:
42         bus.listen()
43     except KeyboardInterrupt:
44         sys.exit(2)
45
46 # vim: ts=8 sts=4 sw=4 et
47