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}`;
}
Messung V0.5 in Prozent C=98 H=97 G=97
¤ Dauer der Verarbeitung: 0.13 Sekunden
(vorverarbeitet am 2026-05-26)
¤
*© Formatika GbR, Deutschland