From: Greg Price Date: Wed, 29 Oct 2008 04:44:46 +0000 (-0400) Subject: use run-parts semantics in conf.d directory X-Git-Tag: 0.0.2~1 X-Git-Url: http://xvm.mit.edu/gitweb/invirt/packages/invirt-base.git/commitdiff_plain/637da1b9e329a9a1f5dd739f7c73b6464df4967f?hp=cef2d3c03515e9c1063771c928b8695b72d051ad use run-parts semantics in conf.d directory svn path=/trunk/packages/invirt-base/; revision=1423 --- 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()