Files
aza/AzA march 2026 - Kopie (18)/aza_build_stamp.py

60 lines
1.8 KiB
Python
Raw Normal View History

2026-04-22 22:33:46 +02:00
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Erzeugt _build_info.py mit Build-Zeitstempel, Git-Commit, Branch und Dirty-Status.
Aufruf: python aza_build_stamp.py
Ergebnis: _build_info.py im selben Verzeichnis
"""
import datetime
import os
import subprocess
import sys
def _run_git(*args: str) -> str:
try:
r = subprocess.run(
["git"] + list(args),
capture_output=True, text=True, timeout=5,
cwd=os.path.dirname(os.path.abspath(__file__)),
)
return r.stdout.strip() if r.returncode == 0 else ""
except Exception:
return ""
def generate() -> dict:
now = datetime.datetime.now()
info = {
"BUILD_TIME": now.strftime("%Y-%m-%d %H:%M:%S"),
"BUILD_TIMESTAMP": now.strftime("%Y%m%d_%H%M%S"),
"GIT_COMMIT": _run_git("rev-parse", "--short=8", "HEAD"),
"GIT_BRANCH": _run_git("rev-parse", "--abbrev-ref", "HEAD"),
"GIT_DIRTY": bool(_run_git("status", "--porcelain")),
}
return info
def write_module(info: dict, path: str | None = None):
if path is None:
path = os.path.join(os.path.dirname(os.path.abspath(__file__)), "_build_info.py")
lines = [
'# Auto-generated by aza_build_stamp.py DO NOT EDIT',
f'BUILD_TIME = "{info["BUILD_TIME"]}"',
f'BUILD_TIMESTAMP = "{info["BUILD_TIMESTAMP"]}"',
f'GIT_COMMIT = "{info["GIT_COMMIT"]}"',
f'GIT_BRANCH = "{info["GIT_BRANCH"]}"',
f'GIT_DIRTY = {info["GIT_DIRTY"]}',
]
with open(path, "w", encoding="utf-8") as f:
f.write("\n".join(lines) + "\n")
print(f"[BUILD-STAMP] {path} geschrieben ({info['BUILD_TIME']}, {info['GIT_COMMIT']}, dirty={info['GIT_DIRTY']})")
if __name__ == "__main__":
info = generate()
write_module(info)