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.2 KiB
						
					
					
				
			
		
		
	
	
							64 lines
						
					
					
						
							1.2 KiB
						
					
					
				'use strict'; | 
						|
const figures = require('figures'); | 
						|
const cliCursor = require('cli-cursor'); | 
						|
const utils = require('./lib/utils'); | 
						|
 | 
						|
const renderHelper = (task, event, options) => { | 
						|
	const log = utils.log.bind(undefined, options); | 
						|
 | 
						|
	if (event.type === 'STATE') { | 
						|
		const message = task.isPending() ? 'started' : task.state; | 
						|
 | 
						|
		log(`${task.title} [${message}]`); | 
						|
 | 
						|
		if (task.isSkipped() && task.output) { | 
						|
			log(`${figures.arrowRight} ${task.output}`); | 
						|
		} | 
						|
	} else if (event.type === 'DATA') { | 
						|
		log(`${figures.arrowRight} ${event.data}`); | 
						|
	} else if (event.type === 'TITLE') { | 
						|
		log(`${task.title} [title changed]`); | 
						|
	} | 
						|
}; | 
						|
 | 
						|
const render = (tasks, options) => { | 
						|
	for (const task of tasks) { | 
						|
		task.subscribe( | 
						|
			event => { | 
						|
				if (event.type === 'SUBTASKS') { | 
						|
					render(task.subtasks, options); | 
						|
					return; | 
						|
				} | 
						|
 | 
						|
				renderHelper(task, event, options); | 
						|
			}, | 
						|
			err => { | 
						|
				console.log(err); | 
						|
			} | 
						|
		); | 
						|
	} | 
						|
}; | 
						|
 | 
						|
class VerboseRenderer { | 
						|
	constructor(tasks, options) { | 
						|
		this._tasks = tasks; | 
						|
		this._options = Object.assign({ | 
						|
			dateFormat: 'HH:mm:ss' | 
						|
		}, options); | 
						|
	} | 
						|
 | 
						|
	static get nonTTY() { | 
						|
		return true; | 
						|
	} | 
						|
 | 
						|
	render() { | 
						|
		cliCursor.hide(); | 
						|
		render(this._tasks, this._options); | 
						|
	} | 
						|
 | 
						|
	end() { | 
						|
		cliCursor.show(); | 
						|
	} | 
						|
} | 
						|
 | 
						|
module.exports = VerboseRenderer;
 | 
						|
 |