budgie-cli
Version:
Node CLI for Budgie.
54 lines (47 loc) • 1.98 kB
text/typescript
import chalk from "chalk";
import { EOL } from "os";
import { ConversionStatus, IConversionResult, IFailedConversionResult } from "../converters/converter";
import { ILogger } from "../logger";
import { indent } from "./text";
export const printActionsPrefix = (
logger: ILogger,
targets: ReadonlyArray<unknown> | ReadonlySet<unknown>,
descriptor: string,
targetType: string,
) => {
const size = targets instanceof Set ? targets.size : (targets as ReadonlyArray<unknown>).length;
logger.log([`${descriptor} `, size, ` ${targetType}`, size === 1 ? "" : "s", "..."].join(""));
};
export const printActionResult = (
logger: ILogger,
filePath: string,
descriptorSucceeded: string,
descriptorFailed: string,
result: IConversionResult,
) => {
if (result.status === ConversionStatus.Succeeded) {
if (result.outputPath !== undefined) {
logger.log(
chalk.italic.grey(descriptorSucceeded),
chalk.bold.green(filePath),
chalk.italic.grey("to"),
chalk.bold.green(result.outputPath),
);
}
} else {
logger.error(
chalk.grey.italic(`Failed ${descriptorFailed}`),
[chalk.red.bold(filePath), chalk.grey.italic(":"), EOL, indent(chalk.italic.red(`${result.error.stack}`))].join(""),
);
}
};
export const printActionsSummary = (logger: ILogger, descriptor: string, failures?: IFailedConversionResult[]) => {
if (failures === undefined || failures.length === 0) {
logger.log(chalk.green(`${descriptor} complete.`));
} else {
logger.log(
chalk.bold(`${descriptor} failed with ${chalk.bold(`${failures.length}`)} failure${failures.length === 1 ? "" : "s"}.`),
...failures.map((failure) => chalk.red(`\n ${failure.sourcePath} ${chalk.grey("->")} ${failure.outputPath}`)),
);
}
};