1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- '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;
|