import { EOL } from "os"; import { Logger, TaskResult } from "./types"; /* * Ouptut to console the result of a task. */ export function outputResult( message: string, p: string, name: string, result: "success" | "failure", logger: Logger ): void { const state = result === "success" ? "Done" : "Failed"; const log = result === "success" ? logger.log : logger.error; if (message === "") { log(`${state} ${name} in ${p}${EOL}`); } else { log(` / ${state} ${name} in ${p}`); log(prefix(message, " | ")); log(` \\ ${state} ${name} in ${p}${EOL}`); } } /* * Take a block of text and add a prefix in front of each line. */ function prefix(message: string, prefix: string): string { return ( prefix + message .split(EOL) .filter((m) => m !== "") .join(`${EOL}${prefix}`) ); } /* * format stdout and stderr in the following format: * * ``` * STDOUT: * | some output * STDERR: * | some stderr output * ``` */ export function formatOutput(result: TaskResult): string { let message = ""; if (result.stdout.length !== 0) { message += `STDOUT${EOL}`; message += prefix(result.stdout, " | "); message += `${EOL}`; } if (result.stderr.length !== 0) { message += `STDERR${EOL}`; message += prefix(result.stderr, " | "); message += `${EOL}`; } return message; }