mirror of
https://github.com/openclaw/openclaw.git
synced 2026-08-02 09:01:33 +00:00
49 lines
1.5 KiB
TypeScript
49 lines
1.5 KiB
TypeScript
// Npm Verify Exec script supports OpenClaw repository automation.
|
|
import { execFileSync, type ExecFileSyncOptionsWithStringEncoding } from "node:child_process";
|
|
import { readPositiveEnvInt } from "./numeric-options.mjs";
|
|
|
|
export type NpmVerifyCommandInvocation = {
|
|
command: string;
|
|
args: string[];
|
|
windowsVerbatimArguments?: boolean;
|
|
};
|
|
|
|
type NpmVerifyExecOptions = ExecFileSyncOptionsWithStringEncoding & {
|
|
windowsVerbatimArguments?: boolean;
|
|
};
|
|
|
|
const DEFAULT_NPM_VERIFY_COMMAND_TIMEOUT_MS = 5 * 60 * 1000;
|
|
const DEFAULT_NPM_VERIFY_COMMAND_MAX_BUFFER_BYTES = 16 * 1024 * 1024;
|
|
|
|
export function runNpmVerifyCommand(
|
|
invocation: NpmVerifyCommandInvocation,
|
|
cwd: string,
|
|
options: { maxBufferBytes?: number; timeoutMs?: number } = {},
|
|
): string {
|
|
const timeoutMs =
|
|
options.timeoutMs ??
|
|
readPositiveEnvInt(
|
|
"OPENCLAW_NPM_VERIFY_COMMAND_TIMEOUT_MS",
|
|
process.env,
|
|
DEFAULT_NPM_VERIFY_COMMAND_TIMEOUT_MS,
|
|
);
|
|
const maxBuffer =
|
|
options.maxBufferBytes ??
|
|
readPositiveEnvInt(
|
|
"OPENCLAW_NPM_VERIFY_COMMAND_MAX_BUFFER_BYTES",
|
|
process.env,
|
|
DEFAULT_NPM_VERIFY_COMMAND_MAX_BUFFER_BYTES,
|
|
);
|
|
|
|
const execOptions: NpmVerifyExecOptions = {
|
|
cwd,
|
|
encoding: "utf8",
|
|
killSignal: "SIGKILL",
|
|
maxBuffer,
|
|
stdio: ["ignore", "pipe", "pipe"],
|
|
timeout: timeoutMs,
|
|
windowsVerbatimArguments: invocation.windowsVerbatimArguments,
|
|
};
|
|
return execFileSync(invocation.command, invocation.args, execOptions).trim();
|
|
}
|