66 lines
1.2 KiB
JavaScript
66 lines
1.2 KiB
JavaScript
import ora from 'ora'
|
|
|
|
import { createSetupJokeScheduler } from './setup-jokes'
|
|
|
|
/**
|
|
* Create a setup spinner that plays well with prompts and download output.
|
|
*/
|
|
export function createSetupStatus(text) {
|
|
const spinner = ora({
|
|
spinner: 'dots2',
|
|
color: 'cyan',
|
|
text,
|
|
stream: process.stdout,
|
|
discardStdin: false
|
|
})
|
|
const jokeScheduler = createSetupJokeScheduler()
|
|
const status = {
|
|
start() {
|
|
jokeScheduler.start()
|
|
spinner.start()
|
|
|
|
return status
|
|
},
|
|
pause() {
|
|
spinner.stop()
|
|
|
|
return status
|
|
},
|
|
stop() {
|
|
jokeScheduler.finish()
|
|
spinner.stop()
|
|
|
|
return status
|
|
},
|
|
succeed(successText) {
|
|
jokeScheduler.finish()
|
|
spinner.succeed(successText)
|
|
|
|
return status
|
|
},
|
|
fail(failureText) {
|
|
jokeScheduler.finish()
|
|
spinner.fail(failureText)
|
|
|
|
return status
|
|
},
|
|
warn(warningText) {
|
|
jokeScheduler.finish()
|
|
spinner.warn(warningText)
|
|
|
|
return status
|
|
},
|
|
get isSpinning() {
|
|
return spinner.isSpinning
|
|
},
|
|
get text() {
|
|
return spinner.text
|
|
},
|
|
set text(nextText) {
|
|
spinner.text = nextText
|
|
}
|
|
}
|
|
|
|
return status
|
|
}
|