diff --git a/.github/workflows/version_branch.yml b/.github/workflows/version_branch.yml index 9b68824..a76789b 100644 --- a/.github/workflows/version_branch.yml +++ b/.github/workflows/version_branch.yml @@ -352,6 +352,8 @@ jobs: header_re = re.compile(r'(?im)(VERSION[ ]*:[ ]*)([0-9]{2}[.][0-9]{2}[.][0-9]{2})') manifest_marker_re = re.compile(r'(?is) root + updates_marker_re = re.compile(r'(?is))([^<]*?)()') xml_date_res = [ re.compile(r'(?is)()([^<]*?)()'), @@ -399,6 +401,7 @@ jobs: counters['header_replacements'] += n1 if p.suffix.lower() == '.xml': + # Joomla manifest files if manifest_marker_re.search(text): text2, n2 = xml_version_re.subn(lambda m: m.group(1) + new_version + m.group(3), text) text = text2 @@ -414,7 +417,23 @@ jobs: if text != original: updated_manifests.append(str(p)) else: - counters['xml_skipped_non_manifest'] += 1 + # Special case: update server feeds (updates.xml, update.xml, or any XML containing /) + if p.name.lower() in {'updates.xml', 'update.xml'} or updates_marker_re.search(text): + text2, n2 = xml_version_re.subn(lambda m: m.group(1) + new_version + m.group(3), text) + text = text2 + if n2: + counters['xml_version_replacements'] += n2 + + for rx in xml_date_res: + text3, n3 = rx.subn(lambda m: m.group(1) + stamp + m.group(3), text) + text = text3 + if n3: + counters['xml_date_replacements'] += n3 + + if text != original: + updated_manifests.append(str(p)) + else: + counters['xml_skipped_non_manifest'] += 1 if text != original: p.write_text(text, encoding='utf-8')