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.
64 lines
1.1 KiB
64 lines
1.1 KiB
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) |
|
}
|
|
|