From: Ansgar Burchardt Date: Thu, 31 May 2012 18:50:33 +0000 (+0200) Subject: Add nicer and stricter regular expressions. X-Git-Url: https://git.decadent.org.uk/gitweb/?a=commitdiff_plain;h=04c332f3fa9936f457a4c78ec6f72ca7faea0a82;p=dak.git Add nicer and stricter regular expressions. --- diff --git a/daklib/regexes.py b/daklib/regexes.py index 8c9a7fae..15b79a63 100755 --- a/daklib/regexes.py +++ b/daklib/regexes.py @@ -131,3 +131,49 @@ re_includeinrelease = re.compile (r"(Translation-[a-zA-Z_]+\.(?:bz2|xz)|Contents # in generate_index_diffs re_includeinpdiff = re.compile(r"(Translation-[a-zA-Z_]+\.(?:bz2|xz))") + + +###################################################################### +# Patterns matching filenames # +###################################################################### + +# Match safe filenames +re_file_safe = re.compile(r'^[a-zA-Z0-9][a-zA-Z0-9_.:~+-]*$') + +# Prefix of binary and source filenames +_re_file_prefix = '^(?P[a-z0-9][a-z0-9.+-]+)_(?P[A-Za-z0-9.:~+-]+)' + +# Match binary packages +# Groups: package, version, architecture, type +re_file_binary = re.compile(_re_file_prefix + '_(?P[a-z0-9]+)\.(?Pu?deb)$') + +# Match dsc files +# Groups: package, version +re_file_dsc = re.compile(_re_file_prefix + r'\.dsc$') + +# Match other source files +# Groups: package, version +re_file_source = re.compile(_re_file_prefix + r'(?:(?:\.orig(?:-[a-zA-Z0-9-]+)?)?\.tar\.(?:bz2|gz|xz)|\.diff\.gz)$') + +# Match upstream tarball +# Groups: package, version +re_file_orig = re.compile(_re_file_prefix + r'\.orig(?:-[a-zA-Z0-9-]+)?\.tar\.(?:bz2|gz|xz)') + +###################################################################### +# Patterns matching fields # +###################################################################### + +# Match package name +re_field_package = re.compile(r'^[a-z0-9][a-z0-9.+-]+$') + +# Match version +# Groups: without-epoch +re_field_version = re.compile(r'^(?:[0-9]+:)?(?P[A-Za-z0-9.:~+-]+)$') + +# Extract upstream version +# Groups: upstream +re_field_version_upstream = re.compile(r'^(?:[0-9]+:)?(?P.*)-[^-]*$') + +# Match source field +# Groups: package, version +re_field_source = re.compile(r'^(?P[a-z0-9][a-z0-9.+-]+)(:?\s*\((?P[A-Za-z0-9.:~+-])\))?')