Update assets.yml

This commit is contained in:
2025-08-11 14:24:52 +08:00
committed by GitHub
parent 9c2b910dde
commit 00c351d40e

View File

@@ -35,34 +35,45 @@ jobs:
echo "Files copied to temp directory (before processing):"
ls -la temp-b-repo/out/assets
# 安装lxml库用于精确控制XML格式
# 安装lxml库
pip install lxml
# 生成Python脚本使用lxml删除注释并控制格式
# 生成Python脚本修复XML头和注释删除问题
echo "from lxml import etree" > remove_xml_comments.py
echo "import os" >> remove_xml_comments.py
echo "" >> remove_xml_comments.py
echo "def remove_comments_from_xml(file_path):" >> remove_xml_comments.py
echo " try:" >> remove_xml_comments.py
echo " # 解析XML并保留注释(禁用自动移除注释)" >> remove_xml_comments.py
echo " parser = etree.XMLParser(remove_comments=False)" >> remove_xml_comments.py
echo " # 解析XML并保留原始声明和注释" >> remove_xml_comments.py
echo " parser = etree.XMLParser(remove_comments=False, strip_cdata=False)" >> remove_xml_comments.py
echo " tree = etree.parse(file_path, parser=parser)" >> remove_xml_comments.py
echo " root = tree.getroot()" >> remove_xml_comments.py
echo "" >> remove_xml_comments.py
echo " # 递归查找并删除所有注释节点" >> remove_xml_comments.py
echo " for comment in root.xpath('//comment()'):" >> remove_xml_comments.py
echo " parent = comment.getparent()" >> remove_xml_comments.py
echo " if parent is not None:" >> remove_xml_comments.py
echo " parent.remove(comment)" >> remove_xml_comments.py
echo " # 关键修复删除所有层级的注释包括非root区域" >> remove_xml_comments.py
echo " # 遍历所有节点,强制检查注释类型" >> remove_xml_comments.py
echo " for element in root.iter():" >> remove_xml_comments.py
echo " # 遍历子节点的副本,避免修改时索引错乱" >> remove_xml_comments.py
echo " for child in list(element):" >> remove_xml_comments.py
echo " if child.tag is etree.Comment:" >> remove_xml_comments.py
echo " element.remove(child)" >> remove_xml_comments.py
echo "" >> remove_xml_comments.py
echo " # 保存修改后的文件,严格控制格式" >> remove_xml_comments.py
echo " etree.ElementTree(root).write(" >> remove_xml_comments.py
echo " file_path," >> remove_xml_comments.py
echo " encoding='utf-8'," >> remove_xml_comments.py
echo " xml_declaration=True," >> remove_xml_comments.py
echo " pretty_print=False, # 禁用自动格式化(避免额外空格)" >> remove_xml_comments.py
echo " method='xml' # 确保自闭合标签格式为 <tag/> 而非 <tag />" >> remove_xml_comments.py
echo " )" >> remove_xml_comments.py
echo " # 保存修改后的文件修复XML头缺失问题" >> remove_xml_comments.py
echo " # 获取原始XML声明如果存在" >> remove_xml_comments.py
echo " xml_declaration = tree.docinfo.xml_declaration" >> remove_xml_comments.py
echo " encoding = tree.docinfo.encoding or 'utf-8'" >> remove_xml_comments.py
echo "" >> remove_xml_comments.py
echo " # 写入文件时强制保留XML声明" >> remove_xml_comments.py
echo " with open(file_path, 'wb') as f:" >> remove_xml_comments.py
echo " # 手动写入XML声明确保不缺失" >> remove_xml_comments.py
echo " if xml_declaration or xml_declaration is None:" >> remove_xml_comments.py
echo " f.write(f'<?xml version=\"1.0\" encoding=\"{encoding}\"?>\n'.encode(encoding))" >> remove_xml_comments.py
echo " # 写入XML内容控制自闭合标签格式" >> remove_xml_comments.py
echo " tree.write(f," >> remove_xml_comments.py
echo " encoding=encoding," >> remove_xml_comments.py
echo " pretty_print=False," >> remove_xml_comments.py
echo " method='xml'," >> remove_xml_comments.py
echo " xml_declaration=False # 已手动处理声明,避免重复" >> remove_xml_comments.py
echo " )" >> remove_xml_comments.py
echo " print(f'Processed: {file_path}')" >> remove_xml_comments.py
echo " except Exception as e:" >> remove_xml_comments.py
echo " print(f'Error processing {file_path}: {e}')" >> remove_xml_comments.py
@@ -101,6 +112,12 @@ jobs:
echo "Files in B repo target directory after copy:"
ls -la out/assets
# 检查是否有实际变更
if git diff --quiet -- out/assets; then
echo "No changes to sync. Exiting."
exit 0
fi
git add out/assets
git commit -m "Sync assets (no comments): $(date +'%Y-%m-%d %H:%M:%S')"
git push origin $B_BRANCH || { echo "Failed to push to B repo"; exit 1; }