from pathlib import Path import subprocess from version import VERSION # ========================= # Konfiguration # ========================= APP_NAME = "Simbriefimport" COMPANY = "Carsten" COPYRIGHT = "© 2025 Carsten" OUTPUT_FILE = Path("version_info.txt") def get_build_number() -> int: """ Ermittelt die Buildnummer aus Git (Commit-Zähler). Fällt sauber auf 0 zurück, wenn Git nicht verfügbar ist. """ try: out = subprocess.check_output( ["git", "rev-list", "--count", "HEAD"], stderr=subprocess.DEVNULL ) return int(out.decode().strip()) except Exception: return 0 def main(): build = get_build_number() try: major, minor, patch = map(int, VERSION.split(".")) except ValueError: raise RuntimeError( f"VERSION '{VERSION}' muss dem Schema Major.Minor.Patch entsprechen" ) filevers = f"{major},{minor},{patch},{build}" textvers = f"{VERSION}.{build}" content = f"""VSVersionInfo( ffi=FixedFileInfo( filevers=({filevers}), prodvers=({filevers}), mask=0x3f, flags=0x0, OS=0x40004, fileType=0x1, subtype=0x0, date=(0,0) ), kids=[ StringFileInfo( [ StringTable( '040904B0', [ StringStruct('CompanyName', '{COMPANY}'), StringStruct('FileDescription', '{APP_NAME}'), StringStruct('ProductName', '{APP_NAME}'), StringStruct('InternalName', '{APP_NAME}'), StringStruct('OriginalFilename', '{APP_NAME}.exe'), StringStruct('FileVersion', '{textvers}'), StringStruct('ProductVersion', '{textvers}'), StringStruct('LegalCopyright', '{COPYRIGHT}') ] ) ] ) ] ) """ OUTPUT_FILE.write_text(content, encoding="utf-8") print(f"Version_info erzeugt:") print(f" Version: {textvers}") print(f" Datei: {OUTPUT_FILE.resolve()}") if __name__ == "__main__": import sys if "--make-version" in sys.argv: ver = ensure_version_info(force=True) # <-- MUSS True sein print(ver) raise SystemExit(0) main()