You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
65 lines
1.1 KiB
65 lines
1.1 KiB
3 years ago
|
const ora = require('ora')
|
||
|
const chalk = require('chalk')
|
||
|
|
||
|
const spinner = ora()
|
||
|
let lastMsg = null
|
||
|
let isPaused = false
|
||
|
|
||
|
exports.logWithSpinner = (symbol, msg) => {
|
||
|
if (!msg) {
|
||
|
msg = symbol
|
||
|
symbol = chalk.green('✔')
|
||
|
}
|
||
|
if (lastMsg) {
|
||
|
spinner.stopAndPersist({
|
||
|
symbol: lastMsg.symbol,
|
||
|
text: lastMsg.text
|
||
|
})
|
||
|
}
|
||
|
spinner.text = ' ' + msg
|
||
|
lastMsg = {
|
||
|
symbol: symbol + ' ',
|
||
|
text: msg
|
||
|
}
|
||
|
spinner.start()
|
||
|
}
|
||
|
|
||
|
exports.stopSpinner = (persist) => {
|
||
|
if (!spinner.isSpinning) {
|
||
|
return
|
||
|
}
|
||
|
|
||
|
if (lastMsg && persist !== false) {
|
||
|
spinner.stopAndPersist({
|
||
|
symbol: lastMsg.symbol,
|
||
|
text: lastMsg.text
|
||
|
})
|
||
|
} else {
|
||
|
spinner.stop()
|
||
|
}
|
||
|
lastMsg = null
|
||
|
}
|
||
|
|
||
|
exports.pauseSpinner = () => {
|
||
|
if (spinner.isSpinning) {
|
||
|
spinner.stop()
|
||
|
isPaused = true
|
||
|
}
|
||
|
}
|
||
|
|
||
|
exports.resumeSpinner = () => {
|
||
|
if (isPaused) {
|
||
|
spinner.start()
|
||
|
isPaused = false
|
||
|
}
|
||
|
}
|
||
|
|
||
|
exports.failSpinner = (text) => {
|
||
|
spinner.fail(text)
|
||
|
}
|
||
|
|
||
|
// silent all logs except errors during tests and keep record
|
||
|
if (process.env.VUE_CLI_TEST) {
|
||
|
require('./_silence')('spinner', exports)
|
||
|
}
|