import tomlkit
from pathlib import Path
from datetime import date
import subprocess
import sys
import re
PROJECT_ROOT = Path("./")
version = input("输入版本号:")
if version == "None":
print("取消运行脚本")
sys.exit()
print()
def format_cargo_toml():
with open(PROJECT_ROOT / Path("Cargo.toml"), 'rb') as f:
data = tomlkit.load(f)
try:
data["package"]["version"] = version
except:
...
with open("Cargo.toml", "w", encoding="utf-8") as f:
tomlkit.dump(data, f)
print("Cargo.toml 版本修改完成\n")
def run_cargo_format():
result = subprocess.run(["cargo", "fmt"], capture_output=True, text=True)
if result.returncode != 0:
print("cargo fmt 运行错误,错误日志:\n", result.stdout, result.stderr)
sys.exit()
print("cargo fmt 运行完成\n")
def rewrite_changelog_date():
with open(PROJECT_ROOT / Path("CHANGELOG.md"), 'r', encoding='utf-8') as f:
lines = f.readlines()
for idx, line in enumerate(lines):
if re.search(rf"{version}", line) != None:
lines[idx] = f"## [{version}] - {date.today().isoformat()}\n"
break
with open(PROJECT_ROOT / Path("CHANGELOG.md"), 'w', encoding='utf-8') as f:
for line in lines:
f.write(line)
print("CHANGELOG.md 格式化完成\n")
format_cargo_toml()
run_cargo_format()
rewrite_changelog_date()