mirror of
https://github.com/Dokploy/dokploy.git
synced 2026-07-10 08:25:22 +02:00
- Introduced a new ExecError class to standardize error handling during command execution. - Updated deployApplication and deployCompose functions to log detailed error messages, excluding ExecError instances. - Improved execAsync and execAsyncRemote functions to throw ExecError with additional context for better debugging. - Added base64 encoding for error messages to ensure sensitive information is handled appropriately.
56 lines
1.5 KiB
TypeScript
56 lines
1.5 KiB
TypeScript
export interface ExecErrorDetails {
|
|
command: string;
|
|
stdout?: string;
|
|
stderr?: string;
|
|
exitCode?: number;
|
|
originalError?: Error;
|
|
serverId?: string | null;
|
|
}
|
|
|
|
export class ExecError extends Error {
|
|
public readonly command: string;
|
|
public readonly stdout?: string;
|
|
public readonly stderr?: string;
|
|
public readonly exitCode?: number;
|
|
public readonly originalError?: Error;
|
|
public readonly serverId?: string | null;
|
|
|
|
constructor(message: string, details: ExecErrorDetails) {
|
|
super(message);
|
|
this.name = "ExecError";
|
|
this.command = details.command;
|
|
this.stdout = details.stdout;
|
|
this.stderr = details.stderr;
|
|
this.exitCode = details.exitCode;
|
|
this.originalError = details.originalError;
|
|
this.serverId = details.serverId;
|
|
|
|
// Maintains proper stack trace for where our error was thrown (only available on V8)
|
|
if (Error.captureStackTrace) {
|
|
Error.captureStackTrace(this, ExecError);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Get a formatted error message with all details
|
|
*/
|
|
getDetailedMessage(): string {
|
|
const parts = [
|
|
`Command: ${this.command}`,
|
|
this.exitCode !== undefined ? `Exit Code: ${this.exitCode}` : null,
|
|
this.serverId ? `Server ID: ${this.serverId}` : "Location: Local",
|
|
this.stderr ? `Stderr: ${this.stderr}` : null,
|
|
this.stdout ? `Stdout: ${this.stdout}` : null,
|
|
].filter(Boolean);
|
|
|
|
return `${this.message}\n${parts.join("\n")}`;
|
|
}
|
|
|
|
/**
|
|
* Check if this error is from a remote execution
|
|
*/
|
|
isRemote(): boolean {
|
|
return !!this.serverId;
|
|
}
|
|
}
|