mirror of
https://github.com/openclaw/openclaw.git
synced 2026-10-03 01:29:56 +00:00
* refactor(scripts): deslop scripts/lib Consolidate script lifecycle, scenario, planner, report, release and packaging helpers while retaining CLI and publication contracts. Keep config-boundary source caches within one scan so repeated in-process checks observe edits. Carry extracted helpers through selective fixtures and iOS scope routing. Leave PR tooling and its library import closure intact. * fix(scripts): retain sanitizer fast path after helper cleanup * fix(scripts): model watchdog shell consumer in dead-code checks
25 lines
955 B
TypeScript
25 lines
955 B
TypeScript
import fs from "node:fs";
|
|
import { parsePositiveInt } from "./numeric-options.mjs";
|
|
|
|
const JSON_ARTIFACT_MAX_BYTES_ENV = "OPENCLAW_DOCKER_E2E_JSON_ARTIFACT_MAX_BYTES";
|
|
const DEFAULT_JSON_ARTIFACT_MAX_BYTES = 16 * 1024 * 1024;
|
|
|
|
export function readDockerE2eJsonArtifact(file: string): unknown {
|
|
const maxBytes = parsePositiveInt(
|
|
process.env[JSON_ARTIFACT_MAX_BYTES_ENV] || String(DEFAULT_JSON_ARTIFACT_MAX_BYTES),
|
|
JSON_ARTIFACT_MAX_BYTES_ENV,
|
|
);
|
|
const stat = fs.statSync(file);
|
|
if (!stat.isFile()) {
|
|
throw new Error(`JSON artifact is not a file: ${file}`);
|
|
}
|
|
if (stat.size > maxBytes) {
|
|
throw new Error(`JSON artifact exceeded ${maxBytes} bytes: ${file} (${stat.size} bytes)`);
|
|
}
|
|
const text = fs.readFileSync(file, "utf8");
|
|
const bytes = Buffer.byteLength(text, "utf8");
|
|
if (bytes > maxBytes) {
|
|
throw new Error(`JSON artifact exceeded ${maxBytes} bytes: ${file} (${bytes} bytes)`);
|
|
}
|
|
return JSON.parse(text);
|
|
}
|