mirror of
https://github.com/openclaw/openclaw.git
synced 2026-03-12 07:20:45 +00:00
41 lines
1.1 KiB
TypeScript
41 lines
1.1 KiB
TypeScript
export type InstallCommandResult = {
|
|
code: number | null;
|
|
stdout: string;
|
|
stderr: string;
|
|
};
|
|
|
|
function summarizeInstallOutput(text: string): string | undefined {
|
|
const raw = text.trim();
|
|
if (!raw) {
|
|
return undefined;
|
|
}
|
|
const lines = raw
|
|
.split("\n")
|
|
.map((line) => line.trim())
|
|
.filter(Boolean);
|
|
if (lines.length === 0) {
|
|
return undefined;
|
|
}
|
|
|
|
const preferred =
|
|
lines.find((line) => /^error\b/i.test(line)) ??
|
|
lines.find((line) => /\b(err!|error:|failed)\b/i.test(line)) ??
|
|
lines.at(-1);
|
|
|
|
if (!preferred) {
|
|
return undefined;
|
|
}
|
|
const normalized = preferred.replace(/\s+/g, " ").trim();
|
|
const maxLen = 200;
|
|
return normalized.length > maxLen ? `${normalized.slice(0, maxLen - 1)}…` : normalized;
|
|
}
|
|
|
|
export function formatInstallFailureMessage(result: InstallCommandResult): string {
|
|
const code = typeof result.code === "number" ? `exit ${result.code}` : "unknown exit";
|
|
const summary = summarizeInstallOutput(result.stderr) ?? summarizeInstallOutput(result.stdout);
|
|
if (!summary) {
|
|
return `Install failed (${code})`;
|
|
}
|
|
return `Install failed (${code}): ${summary}`;
|
|
}
|