Add read-only MG4 ADB status collector
This commit is contained in:
+19
-2
@@ -1,5 +1,6 @@
|
||||
import { resolve } from "node:path";
|
||||
import { z } from "zod";
|
||||
import type { AdbConfig } from "./adb.js";
|
||||
|
||||
const booleanFromString = z
|
||||
.enum(["true", "false"])
|
||||
@@ -15,7 +16,11 @@ const schema = z.object({
|
||||
COOKIE_SECURE: booleanFromString,
|
||||
ALLOWED_ORIGINS: z.string().default("http://mg4pi.local:8787"),
|
||||
UPDATE_STATUS_PATH: z.string().default("/var/lib/pi-car-companion/update-status.json"),
|
||||
VERSION_FILE: z.string().default(resolve("REVISION"))
|
||||
VERSION_FILE: z.string().default(resolve("REVISION")),
|
||||
ADB_ENABLED: booleanFromString,
|
||||
ADB_PATH: z.string().min(1).default("adb"),
|
||||
ADB_SERIAL: z.string().max(128).regex(/^[a-zA-Z0-9._:-]*$/).default(""),
|
||||
ADB_TIMEOUT_MS: z.coerce.number().int().min(500).max(15_000).default(3_000)
|
||||
});
|
||||
|
||||
export type AppConfig = {
|
||||
@@ -28,6 +33,7 @@ export type AppConfig = {
|
||||
allowedOrigins: ReadonlySet<string>;
|
||||
updateStatusPath: string;
|
||||
versionFile: string;
|
||||
adb: AdbConfig;
|
||||
};
|
||||
|
||||
export function loadConfig(environment: NodeJS.ProcessEnv = process.env): AppConfig {
|
||||
@@ -43,6 +49,11 @@ export function loadConfig(environment: NodeJS.ProcessEnv = process.env): AppCon
|
||||
allowedOrigins.add("http://127.0.0.1:5173");
|
||||
}
|
||||
|
||||
const adbSerial = parsed.ADB_SERIAL.trim() || null;
|
||||
if (parsed.ADB_ENABLED && !adbSerial) {
|
||||
throw new Error("ADB_SERIAL is required when ADB_ENABLED=true");
|
||||
}
|
||||
|
||||
return {
|
||||
nodeEnv: parsed.NODE_ENV,
|
||||
host: parsed.HOST,
|
||||
@@ -52,6 +63,12 @@ export function loadConfig(environment: NodeJS.ProcessEnv = process.env): AppCon
|
||||
cookieSecure: parsed.COOKIE_SECURE,
|
||||
allowedOrigins,
|
||||
updateStatusPath: parsed.UPDATE_STATUS_PATH,
|
||||
versionFile: parsed.VERSION_FILE
|
||||
versionFile: parsed.VERSION_FILE,
|
||||
adb: {
|
||||
enabled: parsed.ADB_ENABLED,
|
||||
executable: parsed.ADB_PATH,
|
||||
serial: adbSerial,
|
||||
timeoutMs: parsed.ADB_TIMEOUT_MS
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user