mirror of
https://github.com/vvsviridov/enm-cli.git
synced 2025-11-06 23:23:43 +00:00
40 lines
835 B
JavaScript
Executable File
40 lines
835 B
JavaScript
Executable File
const ora = require('ora')
|
|
const { isXMas } = require('../../util/validation')
|
|
|
|
const defaultSpinner = process.env.SPINNER || 'clock'
|
|
|
|
|
|
class SpinnerWithCounter {
|
|
constructor() {
|
|
this.spinner = null
|
|
this.counter = 0
|
|
}
|
|
|
|
start(text) {
|
|
if (!this.spinner) {
|
|
this.spinner = ora(text)
|
|
this.spinner.spinner = isXMas() ? 'christmas' : defaultSpinner
|
|
this.spinner.start()
|
|
}
|
|
this.counter = ++this.counter
|
|
}
|
|
|
|
succeed() {
|
|
this.counter = --this.counter
|
|
if (this.spinner && this.counter === 0) {
|
|
this.spinner.succeed()
|
|
this.spinner = null
|
|
}
|
|
}
|
|
|
|
fail() {
|
|
this.counter = --this.counter
|
|
if (this.spinner && this.counter === 0) {
|
|
this.spinner.fail()
|
|
this.spinner = null
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
module.exports = SpinnerWithCounter |