65 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			65 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| 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)
 | |
| }
 |