47 lines
1.4 KiB
TypeScript
Executable File
47 lines
1.4 KiB
TypeScript
Executable File
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;
|
|
}
|
|
}
|