45 lines
1.2 KiB
TypeScript
45 lines
1.2 KiB
TypeScript
export type ServiceRuntimeLike = {
|
|
status?: string;
|
|
state?: string;
|
|
subState?: string;
|
|
pid?: number;
|
|
lastExitStatus?: number;
|
|
lastExitReason?: string;
|
|
lastRunResult?: string;
|
|
lastRunTime?: string;
|
|
detail?: string;
|
|
};
|
|
|
|
export function formatRuntimeStatus(runtime: ServiceRuntimeLike | undefined): string | null {
|
|
if (!runtime) {
|
|
return null;
|
|
}
|
|
const status = runtime.status ?? "unknown";
|
|
const details: string[] = [];
|
|
if (runtime.pid) {
|
|
details.push(`pid ${runtime.pid}`);
|
|
}
|
|
if (runtime.state && runtime.state.toLowerCase() !== status) {
|
|
details.push(`state ${runtime.state}`);
|
|
}
|
|
if (runtime.subState) {
|
|
details.push(`sub ${runtime.subState}`);
|
|
}
|
|
if (runtime.lastExitStatus !== undefined) {
|
|
details.push(`last exit ${runtime.lastExitStatus}`);
|
|
}
|
|
if (runtime.lastExitReason) {
|
|
details.push(`reason ${runtime.lastExitReason}`);
|
|
}
|
|
if (runtime.lastRunResult) {
|
|
details.push(`last run ${runtime.lastRunResult}`);
|
|
}
|
|
if (runtime.lastRunTime) {
|
|
details.push(`last run time ${runtime.lastRunTime}`);
|
|
}
|
|
if (runtime.detail) {
|
|
details.push(runtime.detail);
|
|
}
|
|
return details.length > 0 ? `${status} (${details.join(", ")})` : status;
|
|
}
|