UNPKG

budgie-cli

Version:
50 lines (42 loc) 1.58 kB
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 }; };