Files
YuWuKunCheng 823a24d364 第九版
2026-06-05 09:02:54 +08:00

75 lines
2.0 KiB
Python

#!/usr/bin/env python3
"""版本号自增 — pyproject.toml(2605.X) + Cargo.toml(26.5.X)
规则: YYMM 匹配当前年月 → patch 自增; 不匹配 → 重置为 NEW_YYMM.1
仅当版本号需要变化时才修改文件。
"""
import os
import re
import sys
from datetime import date
SCRIPT_DIR = os.path.dirname(os.path.abspath(__file__))
PYPROJECT = os.path.join(SCRIPT_DIR, "pyproject.toml")
CARGO_TOML = os.path.join(SCRIPT_DIR, "Cargo.toml")
def read_file(path: str) -> str:
with open(path, "r") as f:
return f.read()
def write_file(path: str, content: str) -> None:
with open(path, "w") as f:
f.write(content)
def main() -> None:
today = date.today()
new_yymm = today.strftime("%y%m") # 2605
# --- pyproject.toml ---
pyproject = read_file(PYPROJECT)
m = re.search(r'^version\s*=\s*"(\d{4})\.(\d+)"', pyproject, re.MULTILINE)
if not m:
print("ERROR: 无法从 pyproject.toml 解析版本号", file=sys.stderr)
sys.exit(1)
old_yymm, old_patch = m.group(1), int(m.group(2))
if old_yymm == new_yymm:
new_patch = old_patch + 1
else:
new_patch = 1
new_py_ver = f"{new_yymm}.{new_patch}"
if old_yymm == new_yymm and old_patch == new_patch:
print(f"版本号未变: {new_py_ver}")
return
new_pyproject = re.sub(
r'^(version\s*=\s*)"\d{4}\.\d+"',
rf'\1"{new_py_ver}"',
pyproject,
flags=re.MULTILINE,
)
write_file(PYPROJECT, new_pyproject)
print(f'pyproject.toml: {m.group(0).split("=")[1].strip()} → "{new_py_ver}"')
# --- Cargo.toml ---
new_cargo_ver = f"{new_yymm[:2]}.{int(new_yymm[2:])}.{new_patch}" # 26.5.2
cargo = read_file(CARGO_TOML)
new_cargo = re.sub(
r'^(version\s*=\s*)"\d+\.\d+\.\d+"',
rf'\1"{new_cargo_ver}"',
cargo,
flags=re.MULTILINE,
)
write_file(CARGO_TOML, new_cargo)
print(f'Cargo.toml: → "{new_cargo_ver}"')
if __name__ == "__main__":
main()