from dbuscron import Logger, OptionsParser
- options = OptionsParser('fqvc: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 - options.q + Logger.WARNING
+ log.level = options.verbose - options.quiet + Logger.WARNING
- if daemon:
+ if options.daemon:
from dbuscron.daemonize import daemonize
daemonize(
pidfile='/var/run/dbuscron.pid',
bus = DbusBus()
commands = Commands()
- crontab = CrontabParser(options.c or '/etc/dbuscrontab')
+ crontab = CrontabParser(options.config)
def load_config(parser):
for rule, cmd in parser:
+# encoding: utf-8
from __future__ import with_statement
import re
from dbuscron.bus import DbusBus
yield ruled, command
-class OptionsParser(dict):
- def __init__(self, opts, args=None):
- super(OptionsParser, self).__init__()
+def OptionsParser(args=None, help=u'', **opts):
- if args is None:
- import sys
- args = sys.argv[1:]
+ from optparse import OptionParser
+ parser = OptionParser(usage=help)
+ for opt, desc in opts.iteritems():
+ names = desc.pop('names')
+ desc['dest'] = opt
+ parser.add_option(*names, **desc)
- from getopt import getopt
- go, _ = getopt(args, opts)
-
- for o, v in go:
- k = o.strip('-')
- withval = k+':' in opts
-
- if self.has_key(k):
- if withval:
- if isinstance(self[k], list):
- self[k].append(v)
- else:
- self[k] = [ self[k], v ]
-
- else:
- self[k] += 1
-
- else:
- self[k] = v if withval else 1
-
- def __getitem__(self, k):
- if not self.has_key(k):
- return False
- return super(OptionsParser, self).__getitem__(k)
-
- def __getattr__(self, k):
- return self[k]
+ return parser.parse_args(args)[0]