nodecid/utils/preflight.ts

47 lines
1.4 KiB
TypeScript
Raw Normal View History

2025-01-16 05:22:33 +00:00
import { execSync, execFileSync, type ExecSyncOptions } from "child_process";
import colors from "../utils/console-colors";
/**
* ## Preflight Function
* @param {string[] | string} preflight
* @param {boolean} [postflight]
* @returns {boolean}
*/
export default function preflightFn(
preflight?: string[] | string,
postflight?: boolean
): boolean {
const tag = postflight ? "Postflight" : "Preflight";
console.log(`${tag} Running ...`);
const options: ExecSyncOptions = {
cwd: process.cwd(),
stdio: "inherit",
};
try {
if (typeof preflight == "string") {
execFileSync(preflight, options);
} else if (typeof preflight == "object" && preflight?.[0]) {
for (let i = 0; i < preflight.length; i++) {
const cmd = preflight[i];
try {
const execCmd = execSync(cmd, options);
} catch (error: any) {
console.log(
`${colors.FgRed}Error:${colors.Reset} ${tag} command ${cmd} Failed! => ${error.message}`
);
return false;
break;
}
}
}
return true;
} catch (error: any) {
console.log(
`${colors.FgRed}Error:${colors.Reset} ${tag} Failed! => ${error.message}`
);
return false;
}
}