48 lines
1.1 KiB
TypeScript
48 lines
1.1 KiB
TypeScript
import 'typings-global'
|
|
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 makeFrame = (): string => {
|
|
let resultString: string = `[${chalk.green('/'.repeat(frameCounter))}${' '.repeat(loaderLength - frameCounter)}] starting ${moduleName}`
|
|
if (frameCounter === loaderLength) {
|
|
frameCounter = 0
|
|
} else {
|
|
frameCounter++
|
|
}
|
|
return resultString
|
|
}
|
|
|
|
let logEarlyAbort = false
|
|
let logEarly = () => {
|
|
if (!logEarlyAbort) {
|
|
rl.write(null, { ctrl: true, name: 'u' })
|
|
rl.write(makeFrame())
|
|
setTimeout(function () {
|
|
logEarly()
|
|
}, 80)
|
|
} else {
|
|
readline.clearLine(process.stdout,0)
|
|
process.exit(0)
|
|
}
|
|
}
|
|
|
|
let start = function (moduleNameArg: string = '', loaderLengthArg: string = '10') {
|
|
moduleName = moduleNameArg
|
|
loaderLength = parseInt(loaderLengthArg)
|
|
logEarly()
|
|
}
|
|
|
|
process.on('SIGINT', () => {
|
|
logEarlyAbort = true
|
|
})
|
|
|
|
start()
|