early/ts/early.child.ts

50 lines
1.3 KiB
TypeScript
Raw Normal View History

2016-06-10 03:18:03 +00:00
import "typings-global";
2016-08-20 05:03:49 +00:00
import chalk = require("chalk");
import readline = require("readline");
2016-06-10 03:59:21 +00:00
let rl = readline.createInterface({
input: process.stdin,
output: process.stdout
2016-06-10 03:59:21 +00:00
});
2016-08-20 05:03:49 +00:00
let moduleName: string;
let loaderLength: number;
let frameCounter: number = 0;
2016-08-20 05:03:49 +00:00
let makeFrame = (): string => {
let resultString: string = `[${chalk.green("/".repeat(frameCounter))}${" ".repeat(loaderLength - frameCounter)}] starting ${moduleName}`;
if (frameCounter == loaderLength) {
frameCounter = 0;
} else {
frameCounter++;
}
return resultString;
};
2016-06-10 03:59:21 +00:00
let logEarlyAbort = false;
let logEarly = () => {
2016-08-20 05:03:49 +00:00
if (!logEarlyAbort) {
rl.write(null, { ctrl: true, name: 'u' });
rl.write(makeFrame());
setTimeout(function () {
logEarly();
}, 80);
}
};
2016-08-20 05:03:49 +00:00
let start = function (moduleNameArg: string = "", loaderLengthArg: string = "10") {
moduleName = moduleNameArg;
loaderLength = parseInt(loaderLengthArg);
2016-06-10 03:36:06 +00:00
logEarly();
};
2016-08-20 05:03:49 +00:00
start(process.env.moduleNameArg, process.env.loaderLengthArg);
2016-06-10 03:59:21 +00:00
2016-08-20 05:03:49 +00:00
process.on('SIGHUP', () => {
2016-06-10 03:59:21 +00:00
logEarlyAbort = true;
2016-08-20 05:03:49 +00:00
rl.write(null, { ctrl: true, name: 'u' });
rl.write(`loaded ${chalk.green(moduleName)}`);
2016-06-10 03:59:21 +00:00
rl.close();
2016-08-20 05:03:49 +00:00
rl.on("close",() => {
process.exit(0);
2016-06-11 22:30:10 +00:00
})
2016-06-10 03:59:21 +00:00
});