This commit is contained in:
Benjamin Toby 2025-02-03 14:21:32 +01:00
parent 619afc8303
commit 1e57cdbc1d
9 changed files with 106 additions and 85 deletions

View File

@ -31,6 +31,7 @@ function run() {
redeploy_path,
first_run,
port,
debounce,
} = config;
let redeployFile: string | undefined;
@ -64,6 +65,7 @@ function run() {
first_run,
port,
postflight,
debounce,
});
} catch (error: any) {
console.log(

3
dist/buncid.js vendored
View File

@ -14,7 +14,7 @@ function run() {
try {
const configText = fs_1.default.readFileSync(path_1.default.join(WORK_DIR, "buncid.config.json"), "utf-8");
const config = JSON.parse(configText);
const { start, preflight, postflight, build, redeploy_path, first_run, port, } = config;
const { start, preflight, postflight, build, redeploy_path, first_run, port, debounce, } = config;
let redeployFile;
if (!redeploy_path) {
const defaultRedeployPath = path_1.default.join(WORK_DIR, "REDEPLOY");
@ -38,6 +38,7 @@ function run() {
first_run,
port,
postflight,
debounce,
});
}
catch (error) {

File diff suppressed because one or more lines are too long

1
dist/types.d.ts vendored
View File

@ -6,6 +6,7 @@ export interface NodeCIConfig {
first_run?: boolean;
port?: string | number | (string | number)[];
build?: NodeCIBuild;
debounce?: number;
}
export interface NodeCIBuild {
paradigm: "Next.JS" | "Remix";

View File

@ -8,11 +8,12 @@
* @param {string | number | (string | number)[]} [param0.port] - The port to kill on rebuild
* @param {boolean} [param0.first_run] - Whether to run the preflight on first run. Default `false`
*/
export default function startProcess({ command, preflight, postflight, redeploy_file, port, first_run, }: {
export default function startProcess({ command, preflight, postflight, redeploy_file, port, first_run, debounce, }: {
command: string;
preflight?: string[] | string;
postflight?: string[] | string;
redeploy_file: string;
port?: string | number | (string | number)[];
first_run?: boolean;
debounce?: number;
}): void;

71
dist/utils/start.js vendored
View File

@ -12,6 +12,7 @@ const kill_child_1 = __importDefault(require("./kill-child"));
let childProcess = null;
const pTitle = "buncid";
process.title = pTitle;
let timeout;
/**
* # Start the process
* @param {object} param0
@ -22,7 +23,8 @@ process.title = pTitle;
* @param {string | number | (string | number)[]} [param0.port] - The port to kill on rebuild
* @param {boolean} [param0.first_run] - Whether to run the preflight on first run. Default `false`
*/
function startProcess({ command, preflight, postflight, redeploy_file, port, first_run, }) {
function startProcess({ command, preflight, postflight, redeploy_file, port, first_run, debounce, }) {
const DEBOUNCE = debounce || 1000;
try {
if (first_run) {
console.log("First Run ...");
@ -35,42 +37,45 @@ function startProcess({ command, preflight, postflight, redeploy_file, port, fir
}
console.log("Watching", redeploy_file);
fs_1.default.watchFile(redeploy_file, { interval: 100 }, (curr, prev) => {
console.log(`${console_colors_1.default.BgBlue}File Changed${console_colors_1.default.Reset}`);
if (global.REDEPLOYMENTS == 0) {
return;
}
if (childProcess) {
console.log("******************************");
console.log(`******** ${console_colors_1.default.FgBlue}Rebuilding ${console_colors_1.default.FgMagenta}${global.REDEPLOYMENTS}${console_colors_1.default.Reset} ********`);
console.log("******************************");
try {
const runPreflight = (0, preflight_1.default)(preflight);
if (!runPreflight) {
console.log(`${console_colors_1.default.FgRed}Error:${console_colors_1.default.Reset} Preflight Failed.`);
}
else {
(0, kill_child_1.default)(childProcess, port).then((kill) => {
if (kill) {
childProcess = (0, run_1.default)(command);
if (postflight) {
const runPostflight = (0, preflight_1.default)(postflight, true);
if (!runPostflight) {
// TODO: Action to take if postflight fails
console.log(`${console_colors_1.default.FgRed}Error:${console_colors_1.default.Reset} Postflight Failed.`);
clearTimeout(timeout);
timeout = setTimeout(() => {
console.log(`${console_colors_1.default.BgBlue}File Changed${console_colors_1.default.Reset}`);
if (global.REDEPLOYMENTS == 0) {
return;
}
if (childProcess) {
console.log("******************************");
console.log(`******** ${console_colors_1.default.FgBlue}Rebuilding ${console_colors_1.default.FgMagenta}${global.REDEPLOYMENTS}${console_colors_1.default.Reset} ********`);
console.log("******************************");
try {
const runPreflight = (0, preflight_1.default)(preflight);
if (!runPreflight) {
console.log(`${console_colors_1.default.FgRed}Error:${console_colors_1.default.Reset} Preflight Failed.`);
}
else {
(0, kill_child_1.default)(childProcess, port).then((kill) => {
if (kill) {
childProcess = (0, run_1.default)(command);
if (postflight) {
const runPostflight = (0, preflight_1.default)(postflight, true);
if (!runPostflight) {
// TODO: Action to take if postflight fails
console.log(`${console_colors_1.default.FgRed}Error:${console_colors_1.default.Reset} Postflight Failed.`);
}
}
}
}
else {
process.exit();
}
});
else {
process.exit();
}
});
}
}
catch (error) {
console.log(`${console_colors_1.default.FgRed}Error:${console_colors_1.default.Reset} killing child processes => ${error.message}`);
process.exit();
}
}
catch (error) {
console.log(`${console_colors_1.default.FgRed}Error:${console_colors_1.default.Reset} killing child processes => ${error.message}`);
process.exit();
}
}
}, DEBOUNCE);
});
}
catch (error) {

View File

@ -1,6 +1,6 @@
{
"name": "@moduletrace/buncid",
"version": "1.0.4",
"version": "1.0.5",
"description": "Simple CI/CD process For Bun runtime",
"main": "dist/index.js",
"bin": {

View File

@ -6,6 +6,7 @@ export interface NodeCIConfig {
first_run?: boolean;
port?: string | number | (string | number)[];
build?: NodeCIBuild;
debounce?: number;
}
export interface NodeCIBuild {

View File

@ -10,6 +10,8 @@ let childProcess: ChildProcess | null = null;
const pTitle = "buncid";
process.title = pTitle;
let timeout: any;
/**
* # Start the process
* @param {object} param0
@ -27,6 +29,7 @@ export default function startProcess({
redeploy_file,
port,
first_run,
debounce,
}: {
command: string;
preflight?: string[] | string;
@ -34,7 +37,10 @@ export default function startProcess({
redeploy_file: string;
port?: string | number | (string | number)[];
first_run?: boolean;
debounce?: number;
}) {
const DEBOUNCE = debounce || 1000;
try {
if (first_run) {
console.log("First Run ...");
@ -53,57 +59,61 @@ export default function startProcess({
console.log("Watching", redeploy_file);
fs.watchFile(redeploy_file, { interval: 100 }, (curr, prev) => {
console.log(`${colors.BgBlue}File Changed${colors.Reset}`);
clearTimeout(timeout);
if (global.REDEPLOYMENTS == 0) {
return;
}
timeout = setTimeout(() => {
console.log(`${colors.BgBlue}File Changed${colors.Reset}`);
if (childProcess) {
console.log("******************************");
console.log(
`******** ${colors.FgBlue}Rebuilding ${colors.FgMagenta}${global.REDEPLOYMENTS}${colors.Reset} ********`
);
console.log("******************************");
try {
const runPreflight = preflightFn(preflight);
if (!runPreflight) {
console.log(
`${colors.FgRed}Error:${colors.Reset} Preflight Failed.`
);
} else {
killChild(childProcess, port).then((kill) => {
if (kill) {
childProcess = run(command);
if (postflight) {
const runPostflight = preflightFn(
postflight,
true
);
if (!runPostflight) {
// TODO: Action to take if postflight fails
console.log(
`${colors.FgRed}Error:${colors.Reset} Postflight Failed.`
);
}
}
} else {
process.exit();
}
});
}
} catch (error: any) {
console.log(
`${colors.FgRed}Error:${colors.Reset} killing child processes => ${error.message}`
);
process.exit();
if (global.REDEPLOYMENTS == 0) {
return;
}
}
if (childProcess) {
console.log("******************************");
console.log(
`******** ${colors.FgBlue}Rebuilding ${colors.FgMagenta}${global.REDEPLOYMENTS}${colors.Reset} ********`
);
console.log("******************************");
try {
const runPreflight = preflightFn(preflight);
if (!runPreflight) {
console.log(
`${colors.FgRed}Error:${colors.Reset} Preflight Failed.`
);
} else {
killChild(childProcess, port).then((kill) => {
if (kill) {
childProcess = run(command);
if (postflight) {
const runPostflight = preflightFn(
postflight,
true
);
if (!runPostflight) {
// TODO: Action to take if postflight fails
console.log(
`${colors.FgRed}Error:${colors.Reset} Postflight Failed.`
);
}
}
} else {
process.exit();
}
});
}
} catch (error: any) {
console.log(
`${colors.FgRed}Error:${colors.Reset} killing child processes => ${error.message}`
);
process.exit();
}
}
}, DEBOUNCE);
});
} catch (error: any) {
console.log(