import { readdir } from 'fs/promises'; import { join } from 'path'; import ora from 'ora'; import { createCsvFile } from '../utils/csv'; import { getFileStats, getSampledData } from '../utils/file'; import { print, printSuccess } from '../utils/print'; export interface HandleFiles { inputDir: string; outputFilePath: string; } export async function handleFiles({ inputDir, outputFilePath }: HandleFiles): Promise { const filePaths = await readdir(inputDir); const asyncIterator = filePaths.map(async (filePath) => { const fullFilePath = join(inputDir, filePath); const sampleData = await getSampledData(fullFilePath); return Promise.resolve({ ...await getFileStats(fullFilePath), head: sampleData.head.join('\n'), middle: sampleData.middle.join('\n'), tail: sampleData.tail.join('\n'), }); }); const spinner = ora('检查文件中'); spinner.start(); const filesInfo = await Promise.all(asyncIterator); await createCsvFile( outputFilePath, ['name', 'fullPath', 'size', 'rowCount', 'head', 'middle', 'tail'], filesInfo, ); spinner.stop(); print(''); print('-----------------------------------------------------'); printSuccess(`文件检查完成,报表已输出到 [${outputFilePath}]`); print('-----------------------------------------------------'); print(''); Promise.resolve(); }