feat: 引入选项以在发布说明中忽略已移除的插件。

This commit is contained in:
fujie
2026-01-03 10:55:05 +08:00
parent 3ee00bb083
commit c8e8434bc6
2 changed files with 20 additions and 9 deletions

View File

@@ -101,7 +101,7 @@ jobs:
fi fi
# Compare versions and generate release notes # Compare versions and generate release notes
python scripts/extract_plugin_versions.py --compare old_versions.json --output changes.md python scripts/extract_plugin_versions.py --compare old_versions.json --ignore-removed --output changes.md
python scripts/extract_plugin_versions.py --compare old_versions.json --json --output changes.json python scripts/extract_plugin_versions.py --compare old_versions.json --json --output changes.json
echo "=== Version Changes ===" echo "=== Version Changes ==="

View File

@@ -109,9 +109,7 @@ def scan_plugins_directory(plugins_dir: str) -> list[dict[str, Any]]:
return plugins return plugins
def compare_versions( def compare_versions(current: list[dict], previous_file: str) -> dict[str, list[dict]]:
current: list[dict], previous_file: str
) -> dict[str, list[dict]]:
""" """
Compare current plugin versions with a previous version file. Compare current plugin versions with a previous version file.
比较当前插件版本与之前的版本文件。 比较当前插件版本与之前的版本文件。
@@ -168,7 +166,9 @@ def format_markdown_table(plugins: list[dict]) -> str:
"|---------------|----------------|-------------|---------------------|", "|---------------|----------------|-------------|---------------------|",
] ]
for plugin in sorted(plugins, key=lambda x: (x.get("type", ""), x.get("title", ""))): for plugin in sorted(
plugins, key=lambda x: (x.get("type", ""), x.get("title", ""))
):
title = plugin.get("title", "Unknown") title = plugin.get("title", "Unknown")
version = plugin.get("version", "Unknown") version = plugin.get("version", "Unknown")
plugin_type = plugin.get("type", "Unknown").capitalize() plugin_type = plugin.get("type", "Unknown").capitalize()
@@ -181,7 +181,9 @@ def format_markdown_table(plugins: list[dict]) -> str:
return "\n".join(lines) return "\n".join(lines)
def format_release_notes(comparison: dict[str, list]) -> str: def format_release_notes(
comparison: dict[str, list], ignore_removed: bool = False
) -> str:
""" """
Format version comparison as release notes. Format version comparison as release notes.
将版本比较格式化为发布说明。 将版本比较格式化为发布说明。
@@ -206,7 +208,7 @@ def format_release_notes(comparison: dict[str, list]) -> str:
) )
lines.append("") lines.append("")
if comparison["removed"]: if comparison["removed"] and not ignore_removed:
lines.append("### 移除插件 / Removed Plugins") lines.append("### 移除插件 / Removed Plugins")
for plugin in comparison["removed"]: for plugin in comparison["removed"]:
lines.append(f"- **{plugin['title']}** v{plugin['version']}") lines.append(f"- **{plugin['title']}** v{plugin['version']}")
@@ -239,6 +241,11 @@ def main():
metavar="FILE", metavar="FILE",
help="Compare with previous version JSON file", help="Compare with previous version JSON file",
) )
parser.add_argument(
"--ignore-removed",
action="store_true",
help="Ignore removed plugins in output",
)
parser.add_argument( parser.add_argument(
"--output", "--output",
"-o", "-o",
@@ -257,7 +264,9 @@ def main():
if args.json: if args.json:
output = json.dumps(comparison, indent=2, ensure_ascii=False) output = json.dumps(comparison, indent=2, ensure_ascii=False)
else: else:
output = format_release_notes(comparison) output = format_release_notes(
comparison, ignore_removed=args.ignore_removed
)
if not output.strip(): if not output.strip():
output = "No changes detected. / 未检测到更改。" output = "No changes detected. / 未检测到更改。"
elif args.json: elif args.json:
@@ -268,7 +277,9 @@ def main():
# Default: simple list # Default: simple list
lines = [] lines = []
for plugin in sorted(plugins, key=lambda x: x.get("title", "")): for plugin in sorted(plugins, key=lambda x: x.get("title", "")):
lines.append(f"{plugin.get('title', 'Unknown')}: v{plugin.get('version', '?')}") lines.append(
f"{plugin.get('title', 'Unknown')}: v{plugin.get('version', '?')}"
)
output = "\n".join(lines) output = "\n".join(lines)
# Write output # Write output