From 1cf98a9f520ba3e4b8de7b86a86b34b9548bb61d Mon Sep 17 00:00:00 2001 From: Konstantin Stepanov Date: Tue, 21 Dec 2010 21:02:57 +0200 Subject: [PATCH] handle /etc/dbuscrontab.d as well as /etc/dbuscrontab --- dbuscron/parser.py | 22 ++++++++++++++-------- dbuscron/shell/main.py | 6 +++++- 2 files changed, 19 insertions(+), 9 deletions(-) diff --git a/dbuscron/parser.py b/dbuscron/parser.py index 92b2708..59f2f4d 100644 --- a/dbuscron/parser.py +++ b/dbuscron/parser.py @@ -44,17 +44,23 @@ class CrontabParserError(SyntaxError): SyntaxError.__init__(self, msg) -def CrontabParser(filename): - if os.path.isfile(filename): - parser_class = FileParser +def CrontabParser(*filenames): + for filename in filenames: + if not os.path.exists(filename): + continue - elif os.path.isdir(filename): - parser_class = DirectoryParser + if os.path.isfile(filename): + parser_class = FileParser - else: - raise SystemError("I can parse only directories or simple files.") + elif os.path.isdir(filename): + parser_class = DirectoryParser + + else: + raise SystemError("I can parse only directories or simple files.") + + return parser_class(filename) - return parser_class(filename) + raise SystemError("Can't find any config file or directory.") class FileParser(object): __fields_sep = re.compile(r'\s+') diff --git a/dbuscron/shell/main.py b/dbuscron/shell/main.py index a27f7f0..4291e60 100644 --- a/dbuscron/shell/main.py +++ b/dbuscron/shell/main.py @@ -46,7 +46,11 @@ def run(): bus = DbusBus(options.sessionaddr) commands = Commands() - crontab = CrontabParser(options.config) + + config_files = [ options.config ] + if not options.config.endswith('.d'): + config_files.insert(0, options.config+'.d') + crontab = CrontabParser(*config_files) # 5. load config file def load_config(parser): -- 1.7.9.5