A library for standardizing how tasks are logged to the console.
- Create a reporter:
const taskReporter = new TaskReporter({
productName: `Foobar`,
version: `1.2.3`,
description: `running tasks with ${bold(`15`)} workers`,
showStarted: false,
showPending: true,
showCompleted: true,
showSummary: true,
showTaskDetails: true,
});
- Add tasks with the reporter
addTask
method:
const task = taskReporter.addTask(`build something`, /* initially idle */ true);
// When you are starting the task, you can call start:
try {
task.start();
} finally {
task.complete({ status: 'complete' /* etc */ });
}
- You can use various formatting helpers to spice up the colorization and formatting of your logging:
// Fail example, with provide details:
import { bulletedList } from '@ms-cloudpack/task-reporter';
task.complete({
status: 'fail',
message: 'Reason',
details: bulletedList(['Name: value', 'Errors:', ['sub-bullet things', 'etc'], 'Warnings', ['warn1', etc]]),
});
A variety of helper functions are available for formatting.
import { cyan, bold, red } from '@ms-cloudpack/task-reporter';
task.complete('fail', { message: cyan(bold(`I am an ${red(`error`)}`)) });
- When all your tasks are completed, or if you encountered an exit-early scenario, call
reporter.complete('reason')
to end task logging:
// You can instruct the reporter to complete when all tasks are done.
reporter.completeWhenTasksDone();
// Or, you can manually tell it to complete at any point. For example, you may want to complete things when the
// users hits ctrl-c. Prematurely completing means pending tasks will be skipped and running tasks will be aborted.
process.on('SIGINT', () => {
reporter.complete('User hit Ctrl-C');
});