declare SCUM console log capture

This commit is contained in:
npc0-hue
2026-08-22 13:07:20 +08:00
parent ec63b8750d
commit 256f6267b5
5 changed files with 6 additions and 3 deletions
@@ -2,6 +2,7 @@
"version": 1, "version": 1,
"action": "start", "action": "start",
"mode": "supervised", "mode": "supervised",
"outputMode": "console",
"executableKey": "bin/scum-start.cmd", "executableKey": "bin/scum-start.cmd",
"arguments": [], "arguments": [],
"environment": { "environment": {
@@ -3,7 +3,7 @@
"id": "game.scum", "id": "game.scum",
"name": "SCUM Server", "name": "SCUM Server",
"description": "First-party SCUM game server operations plugin with platform-mediated lifecycle and companion bridge support.", "description": "First-party SCUM game server operations plugin with platform-mediated lifecycle and companion bridge support.",
"version": "0.1.7", "version": "0.1.8",
"kind": "game-plugin", "kind": "game-plugin",
"tags": [ "tags": [
"scum", "scum",
@@ -21,6 +21,7 @@
"additionalProperties": { "type": "string", "maxLength": 512 }, "additionalProperties": { "type": "string", "maxLength": 512 },
"maxProperties": 32 "maxProperties": 32
}, },
"outputMode": { "enum": ["pipes", "console"] },
"timeoutMs": { "type": "integer", "minimum": 1, "maximum": 7200000 }, "timeoutMs": { "type": "integer", "minimum": 1, "maximum": 7200000 },
"stopTimeoutMs": { "type": "integer", "minimum": 1, "maximum": 60000 } "stopTimeoutMs": { "type": "integer", "minimum": 1, "maximum": 60000 }
} }
+1
View File
@@ -650,6 +650,7 @@ export interface PluginLifecycleActionDeclaration {
executableKey?: string; executableKey?: string;
arguments?: string[]; arguments?: string[];
environment?: Record<`GAME_${string}` | `SERVER_${string}` | `RUN_${string}`, string>; environment?: Record<`GAME_${string}` | `SERVER_${string}` | `RUN_${string}`, string>;
outputMode?: "pipes" | "console";
timeoutMs?: number; timeoutMs?: number;
stopTimeoutMs?: number; stopTimeoutMs?: number;
} }
+2 -2
View File
@@ -219,7 +219,7 @@ describe("plugin manifest validation", () => {
expect(assetPaths).toEqual(expect.arrayContaining(["actions/install.json", "actions/start.json", "bin/scum-install-update.cmd", "bin/scum-start.cmd", "assets/map/scum-map-overview.jpg"])); expect(assetPaths).toEqual(expect.arrayContaining(["actions/install.json", "actions/start.json", "bin/scum-install-update.cmd", "bin/scum-start.cmd", "assets/map/scum-map-overview.jpg"]));
expect(installAction).toMatchObject({ executableKey: "bin/scum-install-update.cmd", environment: { SERVER_STEAM_APP_ID: "3792580", SERVER_STEAMCMD_UPDATE_ARGS: "+login anonymous +app_update 3792580 +quit" } }); expect(installAction).toMatchObject({ executableKey: "bin/scum-install-update.cmd", environment: { SERVER_STEAM_APP_ID: "3792580", SERVER_STEAMCMD_UPDATE_ARGS: "+login anonymous +app_update 3792580 +quit" } });
expect(installAction.timeoutMs).toBe(7200000); expect(installAction.timeoutMs).toBe(7200000);
expect(startAction).toMatchObject({ executableKey: "bin/scum-start.cmd", environment: { SERVER_LOG_FLAG: "-log" } }); expect(startAction).toMatchObject({ executableKey: "bin/scum-start.cmd", outputMode: "console", environment: { SERVER_LOG_FLAG: "-log" } });
expect(installScript).not.toContain("taskkill /IM SCUMServer.exe /F"); expect(installScript).not.toContain("taskkill /IM SCUMServer.exe /F");
expect(installScript).toContain("call :stop_matching_scum"); expect(installScript).toContain("call :stop_matching_scum");
expect(installScript).toContain("Get-CimInstance Win32_Process"); expect(installScript).toContain("Get-CimInstance Win32_Process");
@@ -482,7 +482,7 @@ describe("plugin manifest validation", () => {
const serialized = JSON.stringify(manifest).toLowerCase(); const serialized = JSON.stringify(manifest).toLowerCase();
expect(serialized).not.toContain("local-proof"); expect(serialized).not.toContain("local-proof");
expect(manifest.version).toBe("0.1.7"); expect(manifest.version).toBe("0.1.8");
expect(installAction.environment?.SERVER_TEMPLATE).toBe("scum-server"); expect(installAction.environment?.SERVER_TEMPLATE).toBe("scum-server");
expect(manifest.permissions).toEqual(expect.arrayContaining(["server.game-client.read", "server.game-client.command", "server.game-client.maintenance"])); expect(manifest.permissions).toEqual(expect.arrayContaining(["server.game-client.read", "server.game-client.command", "server.game-client.maintenance"]));
expect(manifest.gameClientBridge.commands.map((command) => command.type)).toEqual(expect.arrayContaining([ expect(manifest.gameClientBridge.commands.map((command) => command.type)).toEqual(expect.arrayContaining([