Files
aza/AzA march 2026 - Kopie (18)/aza_build_stamp.py
2026-04-22 22:33:46 +02:00

60 lines
1.8 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/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)