UNPKG

@jdbk/book-cli

Version:

Command line interface for front end project

66 lines (57 loc) 1.18 kB
/* eslint-disable global-require */ 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.BOOK_CLI_TEST) { require('./_silence')('spinner', exports); }