X-Git-Url: https://git.decadent.org.uk/gitweb/?a=blobdiff_plain;f=daklib%2Fregexes.py;h=202aa57005045ac86d10073d02013d75505b1796;hb=7634c6b12df2eaf14e4b07e27222c87cb740268d;hp=edf9566538003edbe08d3347aef53eba434fcf93;hpb=bcf32a5ccbf5dd045fd39b8d76a38934739c4780;p=dak.git diff --git a/daklib/regexes.py b/daklib/regexes.py index edf95665..202aa570 100755 --- a/daklib/regexes.py +++ b/daklib/regexes.py @@ -128,3 +128,56 @@ re_match_expired = re.compile(r"^The key used to sign .+ has expired on .+$") # in generate-releases re_gensubrelease = re.compile (r".*/(binary-[0-9a-z-]+|source)$") re_includeinrelease = re.compile (r"(Translation-[a-zA-Z_]+\.(?:bz2|xz)|Contents-[0-9a-z-]+.gz|Index|Packages(.gz|.bz2)?|Sources(.gz|.bz2)?|MD5SUMS|SHA256SUMS|Release)$") + +# 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 = r'^(?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 + r'_(?P[a-z0-9]+)\.(?Pu?deb)$') + +# Match changes files +# Groups: package, version, suffix +re_file_changes = re.compile(_re_file_prefix + r'_(?P[a-zA-Z0-9+-]+)\.changes$') + +# 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-]+)?|\.debian)?\.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.:~+-])\))?')