early/ts/index.ts

63 lines
1.7 KiB
TypeScript

import "typings-global"
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;
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) {
doText = true;
}
// exports
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,
CI: process.env.CI
}
});
} else if (doText) {
console.log(`**** starting ${chalk.green(moduleNameArg)} ****`);
}
};
export let stop = function () {
let done = q.defer();
let endTime = process.hrtime(startTime);
let executionTime = function(){
try {
return(endTime[0] * 1e9 + endTime[1]);
}
catch(err){
return undefined;
}
}() / 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;
};