diff --git a/.gitignore b/.gitignore index a20704be..d1ce3dc8 100644 --- a/.gitignore +++ b/.gitignore @@ -384,8 +384,5 @@ ARCHITECTURE.md _DEAD/ # Build artifacts -docs/build/ -docs/.vitepress/dist/ -docs/.vitepress/cache/ -assets/build/ -assets/dist/ +docs/ +assets/ diff --git a/README.md b/README.md index d9bdaae0..6111df8d 100644 --- a/README.md +++ b/README.md @@ -7,11 +7,11 @@ > **上传一部电影 → AI 自动完成语义拆条、解说稿、配音、字幕、合成导出** > 从「几天一条」变成「一天十条」。 -[![License: MIT](assets/badges/license-mit.svg)](LICENSE) -[![Python](assets/badges/python.svg)](https://www.python.org/) -[![PySide6](assets/badges/pyside6.svg)](https://qt.io/) -[![Platform](assets/badges/platform.svg)](https://github.com/Agions/scene-fab/releases) -[![Version](assets/badges/version.svg)](https://github.com/Agions/scene-fab/releases) +[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg?style=for-the-badge)](LICENSE) +[![Python](https://img.shields.io/badge/Python-3.10+-3776AB?style=for-the-badge&logo=python&logoColor=white)](https://www.python.org/) +[![PySide6](https://img.shields.io/badge/Qt-6.9+-41C845?style=for-the-badge&logo=qt&logoColor=white)](https://qt.io/) +[![Platform](https://img.shields.io/badge/Platform-Win%20%7C%20macOS%20%7C%20Linux-silver?style=for-the-badge)](https://github.com/Agions/scene-fab/releases) +[![Version](https://img.shields.io/badge/v1.1.0-10B981?style=for-the-badge)](https://github.com/Agions/scene-fab/releases) [**在线文档**](https://agions.github.io/scene-fab/) · [**下载安装**](https://github.com/Agions/scene-fab/releases) · [**报告问题**](https://github.com/Agions/scene-fab/issues/new) · [**功能建议**](https://github.com/Agions/scene-fab/discussions) @@ -239,13 +239,3 @@ SceneFab 的诞生离不开以下开源项目: ⭐ 如果 SceneFab 对你有帮助,请给一个 Star · 🐛 遇到问题请提交 [Issue](https://github.com/Agions/scene-fab/issues) - - diff --git a/assets/badges/license-mit.svg b/assets/badges/license-mit.svg deleted file mode 100644 index 9266130a..00000000 --- a/assets/badges/license-mit.svg +++ /dev/null @@ -1,24 +0,0 @@ - - - License: MIT - - - - - - - - - - - - - - - - - - License - MIT - - diff --git a/assets/badges/platform.svg b/assets/badges/platform.svg deleted file mode 100644 index 1e62f0e4..00000000 --- a/assets/badges/platform.svg +++ /dev/null @@ -1,23 +0,0 @@ - - - Platform: Win | macOS | Linux - - - - - - - - - - - - - - - - - Platform - Win | macOS | Linux - - diff --git a/assets/badges/pyside6.svg b/assets/badges/pyside6.svg deleted file mode 100644 index a3dc340f..00000000 --- a/assets/badges/pyside6.svg +++ /dev/null @@ -1,23 +0,0 @@ - - - PySide6 Qt 6.9+ - - - - - - - - - - - - - - - - - PySide6 - Qt 6.9 - - diff --git a/assets/badges/python.svg b/assets/badges/python.svg deleted file mode 100644 index 33b7b438..00000000 --- a/assets/badges/python.svg +++ /dev/null @@ -1,23 +0,0 @@ - - - Python 3.10+ - - - - - - - - - - - - - - - - - Python - 3.10+ - - diff --git a/assets/badges/version.svg b/assets/badges/version.svg deleted file mode 100644 index fd606dc1..00000000 --- a/assets/badges/version.svg +++ /dev/null @@ -1,23 +0,0 @@ - - - SceneFab v1.1.0 - - - - - - - - - - - - - - - - - version - v1.1.0 - - diff --git a/docs/public/badges/license-mit.svg b/docs/public/badges/license-mit.svg deleted file mode 100644 index 9266130a..00000000 --- a/docs/public/badges/license-mit.svg +++ /dev/null @@ -1,24 +0,0 @@ - - - License: MIT - - - - - - - - - - - - - - - - - - License - MIT - - diff --git a/docs/public/badges/platform.svg b/docs/public/badges/platform.svg deleted file mode 100644 index 1e62f0e4..00000000 --- a/docs/public/badges/platform.svg +++ /dev/null @@ -1,23 +0,0 @@ - - - Platform: Win | macOS | Linux - - - - - - - - - - - - - - - - - Platform - Win | macOS | Linux - - diff --git a/docs/public/badges/pyside6.svg b/docs/public/badges/pyside6.svg deleted file mode 100644 index a3dc340f..00000000 --- a/docs/public/badges/pyside6.svg +++ /dev/null @@ -1,23 +0,0 @@ - - - PySide6 Qt 6.9+ - - - - - - - - - - - - - - - - - PySide6 - Qt 6.9 - - diff --git a/docs/public/badges/python.svg b/docs/public/badges/python.svg deleted file mode 100644 index 33b7b438..00000000 --- a/docs/public/badges/python.svg +++ /dev/null @@ -1,23 +0,0 @@ - - - Python 3.10+ - - - - - - - - - - - - - - - - - Python - 3.10+ - - diff --git a/docs/public/badges/version.svg b/docs/public/badges/version.svg deleted file mode 100644 index fd606dc1..00000000 --- a/docs/public/badges/version.svg +++ /dev/null @@ -1,23 +0,0 @@ - - - SceneFab v1.1.0 - - - - - - - - - - - - - - - - - version - v1.1.0 - - diff --git a/scripts/generate_badges.py b/scripts/generate_badges.py deleted file mode 100644 index 1003e66f..00000000 --- a/scripts/generate_badges.py +++ /dev/null @@ -1,96 +0,0 @@ -#!/usr/bin/env python3 -"""Generate SceneFab version badge SVG from pyproject.toml. - -Usage: - python scripts/generate_badges.py - python scripts/generate_badges.py --version 1.2.0 - python scripts/generate_badges.py --check # CI check (fail if drift) -""" - -from __future__ import annotations - -import argparse -import re -import sys -from pathlib import Path - -ROOT = Path(__file__).resolve().parent.parent -PYPROJECT = ROOT / "pyproject.toml" -BADGE_PATH = ROOT / "assets" / "badges" / "version.svg" - - -def read_pyproject_version() -> str: - """Extract `version = "X.Y.Z"` from pyproject.toml.""" - if not PYPROJECT.exists(): - sys.exit(f"❌ pyproject.toml not found at {PYPROJECT}") - content = PYPROJECT.read_text(encoding="utf-8") - match = re.search(r'^version\s*=\s*"([^"]+)"', content, re.MULTILINE) - if not match: - sys.exit(f"❌ No version field found in {PYPROJECT}") - return match.group(1) - - -def render_version_badge(version: str) -> str: - """Render the version badge SVG with the given version string.""" - svg = f''' - - SceneFab v{version} - - - - - - - - - - - - - - - - - version - v{version} - - -''' - return svg - - -def main() -> int: - parser = argparse.ArgumentParser(description="Generate SceneFab version badge.") - parser.add_argument( - "--version", help="Override version (default: read from pyproject.toml)" - ) - parser.add_argument( - "--check", - action="store_true", - help="CI check: exit 1 if badge is out of sync with pyproject.toml", - ) - args = parser.parse_args() - - version = args.version or read_pyproject_version() - - if args.check: - if not BADGE_PATH.exists(): - print(f"❌ Badge not found at {BADGE_PATH}") - return 1 - existing = BADGE_PATH.read_text(encoding="utf-8") - expected = render_version_badge(version) - if existing == expected: - print(f"✅ Badge in sync (v{version})") - return 0 - print(f"❌ Badge drift: expected v{version}, file is out of sync") - print(f" Run: python scripts/generate_badges.py") - return 1 - - BADGE_PATH.parent.mkdir(parents=True, exist_ok=True) - BADGE_PATH.write_text(render_version_badge(version), encoding="utf-8") - print(f"✅ Wrote {BADGE_PATH} (v{version})") - return 0 - - -if __name__ == "__main__": - sys.exit(main())