budgie-cli
Version:
Node CLI for Budgie.
50 lines (42 loc) • 1.58 kB
text/typescript
import { BudgieConverter } from "../converters/budgieConverter";
import { ConversionStatus, IFailedConversionResult, ISuccessfulConversionResult } from "../converters/converter";
import { printActionResult } from "../utils/printing";
import { IRunDependencies } from "./convertFiles";
/**
* Conversion results for a single file.
*/
interface IFileRunResults {
/**
* Language conversions that failed.
*/
failures: ReadonlyArray<IFailedConversionResult>;
/**
* Language conversions that succeeded.
*/
successes: ReadonlyArray<ISuccessfulConversionResult>;
}
/**
* Converts a file.
*
* @param dependencies Injected dependencies for converting files.
* @param filePath Path to the file.
* @returns Promise for results from converting the file.
*/
export const convertFile = async (
dependencies: IRunDependencies,
budgieConverters: BudgieConverter[],
filePath: string,
): Promise<IFileRunResults> => {
const results = await Promise.all(budgieConverters.map(async (budgieConverter) => budgieConverter.convertFile(filePath)));
const failures: IFailedConversionResult[] = [];
const successes: ISuccessfulConversionResult[] = [];
for (const result of results) {
printActionResult(dependencies.logger, filePath, "Converted", "converting", result);
if (result.status === ConversionStatus.Failed) {
failures.push(result);
} else {
successes.push(result);
}
}
return { failures, successes };
};