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()