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 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 Integration überflüssig geworden: // Home Assistant selbst verlangt ein version-Feld in jeder manifest.json, // unabhängig von HACS (das für dieses private Repository ohnehin dauerhaft // ausscheidet, siehe AGENTS.md Abschnitt H). 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, }, })