improved early and added loading time
This commit is contained in:
@ -1,24 +1,18 @@
|
||||
import "typings-global";
|
||||
let colors = require("colors");
|
||||
import chalk = require("chalk");
|
||||
import readline = require("readline");
|
||||
let rl = readline.createInterface({
|
||||
input: process.stdin,
|
||||
output: process.stdout
|
||||
});
|
||||
|
||||
let moduleName:string;
|
||||
let loaderLength:number;
|
||||
let frameCounter:number = 0;
|
||||
let moduleName: string;
|
||||
let loaderLength: number;
|
||||
let frameCounter: number = 0;
|
||||
|
||||
let makeFrame = ():string => {
|
||||
let resultString:string = "["
|
||||
+ "/".green.repeat(frameCounter)
|
||||
+ " ".repeat(loaderLength - frameCounter)
|
||||
+ "]"
|
||||
+ " starting "
|
||||
+ moduleName.cyan;
|
||||
|
||||
if(frameCounter == loaderLength){
|
||||
let makeFrame = (): string => {
|
||||
let resultString: string = `[${chalk.green("/".repeat(frameCounter))}${" ".repeat(loaderLength - frameCounter)}] starting ${moduleName}`;
|
||||
if (frameCounter == loaderLength) {
|
||||
frameCounter = 0;
|
||||
} else {
|
||||
frameCounter++;
|
||||
@ -28,25 +22,29 @@ let makeFrame = ():string => {
|
||||
|
||||
let logEarlyAbort = false;
|
||||
let logEarly = () => {
|
||||
rl.write(null, {ctrl: true, name: 'u'});
|
||||
rl.write(makeFrame());
|
||||
setTimeout(function(){
|
||||
if(!logEarlyAbort) logEarly();
|
||||
},80);
|
||||
if (!logEarlyAbort) {
|
||||
rl.write(null, { ctrl: true, name: 'u' });
|
||||
rl.write(makeFrame());
|
||||
setTimeout(function () {
|
||||
logEarly();
|
||||
}, 80);
|
||||
}
|
||||
};
|
||||
|
||||
let start = function(moduleNameArg:string = "",loaderLengthArg:string = "10"){
|
||||
let start = function (moduleNameArg: string = "", loaderLengthArg: string = "10") {
|
||||
moduleName = moduleNameArg;
|
||||
loaderLength = parseInt(loaderLengthArg);
|
||||
logEarly();
|
||||
};
|
||||
|
||||
start(process.env.moduleNameArg,process.env.loaderLengthArg);
|
||||
start(process.env.moduleNameArg, process.env.loaderLengthArg);
|
||||
|
||||
process.on('SIGINT', () => {
|
||||
process.on('SIGHUP', () => {
|
||||
logEarlyAbort = true;
|
||||
rl.write(null, {ctrl: true, name: 'u'});
|
||||
rl.write(null, { ctrl: true, name: 'u' });
|
||||
rl.write(`loaded ${chalk.green(moduleName)}`);
|
||||
rl.close();
|
||||
rl.on("close",function(){
|
||||
rl.on("close",() => {
|
||||
process.exit(0);
|
||||
})
|
||||
});
|
42
ts/index.ts
42
ts/index.ts
@ -1,43 +1,53 @@
|
||||
import "typings-global"
|
||||
import colors = require("colors");
|
||||
import path = require("path");
|
||||
import chalk = require("chalk");
|
||||
let q = require("q");
|
||||
import readline = require("readline");
|
||||
import childProcess = require("child_process");
|
||||
let earlyChild;
|
||||
|
||||
let doAnimation:boolean = true;
|
||||
let doText:boolean = false;
|
||||
if(process.argv.indexOf("-v") != -1 || process.env.CI){
|
||||
let doAnimation: boolean = true;
|
||||
let doText: boolean = false;
|
||||
let moduleName:string = "undefined module name";
|
||||
let startTime;
|
||||
|
||||
if (process.argv.indexOf("-v") != -1 || process.env.CI) {
|
||||
doAnimation = false;
|
||||
} else if(process.argv.indexOf("-v") == -1){
|
||||
} else if (process.argv.indexOf("-v") == -1) {
|
||||
doText = true;
|
||||
}
|
||||
|
||||
// exports
|
||||
export let start = function(moduleNameArg:string = "",loaderLengthArg:string = "10"){
|
||||
if(doAnimation){
|
||||
earlyChild = childProcess.fork(path.join(__dirname,"early.child.js"),[],{
|
||||
export let start = function (moduleNameArg: string = "", loaderLengthArg: string = "10") {
|
||||
|
||||
startTime = process.hrtime();
|
||||
|
||||
moduleName = moduleNameArg;
|
||||
if (doAnimation) {
|
||||
earlyChild = childProcess.fork(path.join(__dirname, "early.child.js"), [], {
|
||||
env: {
|
||||
moduleNameArg:moduleNameArg,
|
||||
loaderLengthArg:loaderLengthArg,
|
||||
moduleNameArg: moduleNameArg,
|
||||
loaderLengthArg: loaderLengthArg,
|
||||
CI: process.env.CI
|
||||
}
|
||||
});
|
||||
} else if (doText) {
|
||||
console.log("**** starting " + moduleNameArg.cyan + " ****");
|
||||
console.log(`**** starting ${chalk.green(moduleNameArg)} ****`);
|
||||
}
|
||||
};
|
||||
|
||||
export let stop = function(){
|
||||
export let stop = function () {
|
||||
let done = q.defer();
|
||||
if(doAnimation){
|
||||
earlyChild.kill();
|
||||
earlyChild.on("close",function(){
|
||||
console.log("\n");
|
||||
let endTime = process.hrtime(startTime);
|
||||
let executionTime = (endTime[0] * 1e9 + endTime[1]) / 1000000000;
|
||||
if (doAnimation) {
|
||||
earlyChild.kill("SIGHUP");
|
||||
earlyChild.on("close", function () {
|
||||
console.log(` in ${executionTime} seconds!`);
|
||||
done.resolve();
|
||||
})
|
||||
} else {
|
||||
console.log("... finished loading moduleName in {executionTime}");
|
||||
done.resolve();
|
||||
}
|
||||
return done.promise;
|
||||
|
Reference in New Issue
Block a user