Files
enm-cli/lib/components/SpinnerWithCounter.js
Vyacheslav.Sviridov bcc0a42f73 bulk import creation
2022-06-26 21:09:48 +06:00

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