From 591adc2d3d91a5be30db79d9133e9ecc0edfafa3 Mon Sep 17 00:00:00 2001 From: Konstantin Stepanov Date: Tue, 14 Dec 2010 01:19:19 +0200 Subject: [PATCH] dbuscron uses optparse instead of getopt --- dbuscron.py | 18 +++++++++++------- dbuscron/parser.py | 42 +++++++++--------------------------------- 2 files changed, 20 insertions(+), 40 deletions(-) diff --git a/dbuscron.py b/dbuscron.py index a2a17b3..89d3130 100755 --- a/dbuscron.py +++ b/dbuscron.py @@ -17,17 +17,21 @@ if __name__ == '__main__': 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', @@ -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: diff --git a/dbuscron/parser.py b/dbuscron/parser.py index a6f1c1d..46f3f94 100644 --- a/dbuscron/parser.py +++ b/dbuscron/parser.py @@ -1,3 +1,4 @@ +# encoding: utf-8 from __future__ import with_statement import re from dbuscron.bus import DbusBus @@ -111,39 +112,14 @@ class CrontabParser(object): 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] -- 1.7.9.5