Files
start-sdk/lib/health/checkFns/runHealthScript.ts
2023-04-07 11:43:05 -06:00

36 lines
1.1 KiB
TypeScript

import { Effects } from "../../types";
import { CheckResult } from "./CheckResult";
import { timeoutPromise } from "./index";
/**
* Running a health script, is used when we want to have a simple
* script in bash or something like that. It should return something that is useful
* in {result: string} else it is considered an error
* @param param0
* @returns
*/
export const runHealthScript = async (
effects: Effects,
runCommand: Parameters<Effects["runCommand"]>[0],
{
timeout = 30000,
errorMessage = `Error while running command: ${runCommand}`,
message = (res: string) =>
`Have ran script ${runCommand} and the result: ${res}`,
}
): Promise<CheckResult> => {
const res = await Promise.race([
effects.runCommand(runCommand),
timeoutPromise(timeout),
]).catch((e) => {
effects.warn(errorMessage);
effects.warn(JSON.stringify(e));
effects.warn(e.toString());
throw { status: "failing", message: errorMessage } as CheckResult;
});
return {
status: "passing",
message: message(res),
} as CheckResult;
};