64 lines
1.4 KiB
Python
64 lines
1.4 KiB
Python
from datetime import datetime
|
|
from pathlib import Path
|
|
import subprocess
|
|
import tomllib
|
|
|
|
|
|
PROJECT_DIR = Path(__file__).resolve().parent.parent
|
|
VERSION_FILE = PROJECT_DIR / "version.toml"
|
|
|
|
|
|
def get_git_commit() -> str:
|
|
"""Возвращает short hash текущего HEAD."""
|
|
try:
|
|
result = subprocess.run(
|
|
["git", "rev-parse", "--short", "HEAD"],
|
|
cwd=PROJECT_DIR,
|
|
capture_output=True,
|
|
text=True,
|
|
check=True,
|
|
)
|
|
|
|
return result.stdout.strip()
|
|
|
|
except (subprocess.CalledProcessError, FileNotFoundError):
|
|
return "unknown"
|
|
|
|
|
|
def main() -> None:
|
|
# Сначала читаем текущий version.toml.
|
|
# Нам нужны значения, которые разработчик поменял вручную.
|
|
with VERSION_FILE.open("rb") as file:
|
|
data = tomllib.load(file)
|
|
|
|
major = data["version"]["major"]
|
|
minor = data["version"]["minor"]
|
|
patch = data["version"]["patch"]
|
|
|
|
now = datetime.now()
|
|
|
|
content = f"""\
|
|
[version]
|
|
major = {major}
|
|
minor = {minor}
|
|
patch = {patch}
|
|
|
|
[build]
|
|
date = "{now:%Y-%m-%d}"
|
|
time = "{now:%H:%M:%S}"
|
|
"""
|
|
|
|
VERSION_FILE.write_text(
|
|
content,
|
|
encoding="utf-8",
|
|
)
|
|
|
|
print(
|
|
f"Version updated: "
|
|
f"{major}.{minor}.{patch} "
|
|
f"({now:%Y-%m-%d %H:%M:%S})"
|
|
)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main() |