paline 0.5.0

一个用 Rust 编写的代码行数统计命令行工具。递归扫描目录,按编程语言统计行数,并以彩色横向条形图在终端中可视化展示。
# commit 前运行
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()