Files
2026-07-13 12:44:08 +08:00

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
}