X-Git-Url: http://xvm.mit.edu/gitweb/invirt/packages/invirt-base.git/blobdiff_plain/cef2d3c03515e9c1063771c928b8695b72d051ad..637da1b9e329a9a1f5dd739f7c73b6464df4967f:/python/invirt/config.py 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()