From 637da1b9e329a9a1f5dd739f7c73b6464df4967f Mon Sep 17 00:00:00 2001 From: Greg Price Date: Wed, 29 Oct 2008 00:44:46 -0400 Subject: [PATCH] use run-parts semantics in conf.d directory svn path=/trunk/packages/invirt-base/; revision=1423 --- debian/changelog | 3 ++- python/invirt/config.py | 21 +++++++++++++++++++-- 2 files changed, 21 insertions(+), 3 deletions(-) diff --git a/debian/changelog b/debian/changelog index e09b46e..9d450dc 100644 --- a/debian/changelog +++ b/debian/changelog @@ -3,8 +3,9 @@ invirt-base (0.0.2) unstable; urgency=low * eliminate choice of source and cache files for invirt.config.load and invirt-getconf, so we can do what follows * look in /etc/invirt/conf.d/ as well as /etc/invirt/master.yaml + * use run-parts semantics in /etc/invirt/conf.d/ - -- Greg Price Tue, 28 Oct 2008 21:16:14 -0400 + -- Greg Price Wed, 29 Oct 2008 00:10:36 -0400 invirt-base (0.0.1) unstable; urgency=low diff --git a/python/invirt/config.py b/python/invirt/config.py index cd0dd06..86d9c8a 100644 --- a/python/invirt/config.py +++ b/python/invirt/config.py @@ -7,6 +7,7 @@ from os import rename from os.path import getmtime from contextlib import closing import yaml +import re try: loader = yaml.CSafeLoader except: loader = yaml.SafeLoader @@ -33,10 +34,26 @@ def augment(d1, d2): d1[k] = d2[k] return d1 +def run_parts_list(dirname): + """Reimplements Debian's run-parts --list. + + One difference from run-parts's behavior: run-parts --list /foo/ + will give output like /foo//bar, because Python code tends to expect this. + + Matches documented behavior of run-parts in debianutils v2.28.2, dated 2007. + """ + # From run-parts(8). + lanana_re = re.compile('^[a-z0-9]+$') + lsb_re = re.compile('^_?([a-z0-9_.]+-)+[a-z0-9]+$') + deb_cron_re = re.compile('^[a-z0-9][a-z0-9-]*$') + for name in os.listdir(dirname): + if lanana_re.match(name) or lsb_re.match(name) or deb_cron_re.match(name): + yield os.path.join(dirname, name) + def list_files(): yield src_path - for name in os.listdir(src_dirpath): - yield os.path.join(src_dirpath, name) + for name in run_parts_list(src_dirpath): + yield name def load_master(): config = dict() -- 1.7.9.5