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