import { readFileSync } from "node:fs" import { fileURLToPath } from "node:url" import { defineConfig } from "vite" import react from "@vitejs/plugin-react" // Die App-Version kommt aus der manifest.json der Integration — derselben // Zahl, die HACS anzeigt, die Home Assistant als Version der Integration führt // und die das Backend über sensor.audi_dashboard_app_version meldet (siehe // VERSIONIERUNG.md). Sie wird hier fest einkompiliert, damit die fertige App // weiß, aus welchem Stand sie gebaut wurde, und das gegen den vom Backend // gemeldeten Stand halten kann. // // Bis 2026-08-23 stand die Zahl in einer eigenen Datei VERSION im // Projektstamm. Die ist mit dem Umbau zur HACS-Integration überflüssig // geworden: die manifest.json MUSS eine Version tragen, HACS verlangt sie und // vergleicht danach. Zwei Quellen für dieselbe Angabe wären eine Quelle zu // viel — sie hätten irgendwann auseinandergelegen, und der Vergleich, den // diese Zahl trägt, wäre still falsch geworden. // // Absichtlich hart: fehlt die Datei oder das Feld, soll der Build abbrechen // statt still eine App ohne Versionsangabe zu erzeugen — die könnte ihre // eigene Veraltung nicht mehr erkennen, und genau das ist der Zweck der // ganzen Mechanik. const manifestPfad = fileURLToPath( new URL("../custom_components/audi_dashboard/manifest.json", import.meta.url), ) const appVersion: string = JSON.parse(readFileSync(manifestPfad, "utf8")).version if (!appVersion) throw new Error(`Kein "version"-Feld in ${manifestPfad}`) // Basispfad relativ: die App wird sowohl unter einer eigenen Domain als auch // aus einem Unterordner heraus ausgeliefert (Home Assistant: /local/dm360/), // und in der Capacitor-Hülle direkt vom Dateisystem. export default defineConfig({ base: "./", plugins: [react()], define: { __APP_VERSION__: JSON.stringify(appVersion) }, server: { port: 5173 }, build: { outDir: "dist", target: "es2022", sourcemap: true, }, })