From e16d231e3ae20f2ff2360013be9f3e5507484fad Mon Sep 17 00:00:00 2001 From: pqcqaq <905739777@qq.com> Date: Thu, 16 Jan 2025 19:31:51 +0800 Subject: [PATCH] log --- lib/index.js | 95 +++++++++++++++++----------------------- lib/index.js.map | 2 +- src/index.ts | 112 ++++++++++++++++++++++------------------------- 3 files changed, 95 insertions(+), 114 deletions(-) diff --git a/lib/index.js b/lib/index.js index 2be3bf4..3f10ded 100644 --- a/lib/index.js +++ b/lib/index.js @@ -30,10 +30,10 @@ const DISALLOWED_DIRECTORIES = new Set([ "__MACOSX", ".vscode", ]); -let deletedItems = []; +let deletedFiles = []; // 存储删除的文件信息 +let deletedDirectories = []; // 存储删除的文件夹信息 // 清理文件名 const sanitizeFileName = (fileName) => { - // 对文件名进行标准化处理,解决编码问题 const decodedName = fileName.toString("utf8"); return decodedName; }; @@ -60,14 +60,6 @@ const preTest = () => { process.exit(1); } }; -// 检查文件是否可能是Linux可执行文件(无后缀的二进制) -const isLinuxExecutable = (filePath) => { - if (fs_1.default.statSync(filePath).isFile() && path_1.default.extname(filePath) === "") { - const stats = fs_1.default.statSync(filePath); - return (stats.mode & 0o111) !== 0; - } - return false; -}; // 使用7z解压文件 const extractUsing7z = (filePath, extractTo) => { console.log(`[INFO] 使用 7z 解压文件: ${filePath} 到目录: ${extractTo}`); @@ -96,34 +88,6 @@ const extractRar = (filePath, extractTo) => { console.error(`[ERROR] 解压失败: ${e}`); } }; -/** - * 解压缩文件 - * @param inputDirectory 输入目录 - * @param outputDirectory 输出目录 - * @deprecated 存在编码问题,暂时不使用 - */ -const extractZip = (filePath, extractTo) => { - console.log(`[INFO] 解压缩文件: ${filePath} 到目录: ${extractTo}`); - if (!fs_1.default.existsSync(extractTo)) { - fs_1.default.mkdirSync(extractTo, { recursive: true }); - } - const zip = new adm_zip_1.default(filePath); - // 遍历所有的文件条目,清理文件名中的非法字符 - zip.getEntries().forEach((entry) => { - if (entry.entryName) { - try { - // 清理文件名中的非法字符 - const sanitizedName = sanitizeFileName(entry.rawEntryName); - entry.entryName = sanitizedName; // 更新文件名 - } - catch (e) { - console.error(`[ERROR] 解压时处理文件名失败: ${entry.entryName}`); - } - } - }); - // 解压文件 - zip.extractAllTo(extractTo, true); -}; // 递归处理目录并过滤文件 const processDirectory = (inputDirectory, outputDirectory) => { console.log(`[INFO] 开始处理目录: ${inputDirectory}`); @@ -133,7 +97,11 @@ const processDirectory = (inputDirectory, outputDirectory) => { if (stat.isDirectory()) { // 排除不需要的目录 if (DISALLOWED_DIRECTORIES.has(item)) { - deletedItems.push(`目录: ${itemPath}`); + deletedDirectories.push({ + type: "文件夹", + name: item, + originalPath: itemPath, + }); fs_1.default.rmSync(itemPath, { recursive: true, force: true }); console.log(`[DELETE] 删除目录: ${itemPath}`); } @@ -151,13 +119,11 @@ const processDirectory = (inputDirectory, outputDirectory) => { // 如果是压缩文件,解压后递归处理 if (isCompressedFile(itemPath)) { const relativePath = path_1.default.relative(inputDirectory, path_1.default.dirname(itemPath)); - const outputDirPath = path_1.default.join(outputDirectory, relativePath, path_1.default.basename(itemPath, path_1.default.extname(itemPath)) + - "_extracted"); + const outputDirPath = path_1.default.join(outputDirectory, relativePath, path_1.default.basename(itemPath, path_1.default.extname(itemPath)) + "_extracted"); if (!fs_1.default.existsSync(outputDirPath)) { fs_1.default.mkdirSync(outputDirPath, { recursive: true }); } if (itemPath.endsWith(".zip")) { - // extractZip(itemPath, outputDirPath); // 存在编码问题,暂时不使用 extractUsing7z(itemPath, outputDirPath); } else if (itemPath.endsWith(".7z")) { @@ -178,16 +144,18 @@ const processDirectory = (inputDirectory, outputDirectory) => { fs_1.default.rmSync(outputDirPath, { recursive: true, force: true }); } else if (DISALLOWED_EXTENSIONS.has(ext) || - DISALLOWED_KEYWORDS.has(item) || - isLinuxExecutable(itemPath)) { + DISALLOWED_KEYWORDS.has(item)) { + deletedFiles.push({ + type: "文件", + name: item, + originalPath: itemPath, + }); console.log(`[DELETE] 删除文件: ${itemPath}`); - deletedItems.push(`文件: ${itemPath}`); fs_1.default.rmSync(itemPath, { recursive: true, force: true }); // 删除不需要的文件 } else { // 将文件复制到对应的输出目录 const outputFilePath = path_1.default.join(outputDirectory, item); - // 如果要复制的路径相同就跳过 if (itemPath === outputFilePath) { return; } @@ -197,13 +165,30 @@ const processDirectory = (inputDirectory, outputDirectory) => { } }); }; -// 写入统计文件 -const writeLog = (outputDirectory) => { - const logFile = path_1.default.join(outputDirectory, "result_log.txt"); - fs_1.default.writeFileSync(logFile, "以下是被删除的目录和文件列表:\n"); - fs_1.default.appendFileSync(logFile, deletedItems.join("\n")); - console.log(`[INFO] 已删除${deletedItems.length}个目录或文件。`); - console.log(`[INFO] 统计文件已生成: ${logFile}`); +// 输出删除信息到控制台 +const printDeletedItems = () => { + let result = "\n[INFO] 删除的文件和文件夹:"; + // 输出文件夹 + if (deletedDirectories.length > 0) { + result += "\n[INFO] 被删除的文件夹:"; + deletedDirectories.forEach((item) => { + result += `\n${item.type} ${item.name} ${item.originalPath}`; + }); + } + // 输出文件 + if (deletedFiles.length > 0) { + result += "\n[INFO] 被删除的文件:"; + deletedFiles.forEach((item) => { + result += `\n${item.type} ${item.name} ${item.originalPath}`; + }); + } + return result; +}; +// 写入日志到文件 +const writeLogToFile = (log) => { + const logFilePath = path_1.default.join(process.cwd(), "out/result.log"); + fs_1.default.writeFileSync(logFilePath, log, { encoding: "utf8", flag: "w" }); + console.log(`[INFO] 统计信息已保存到 result.log 文件中。`); }; // 主函数 const main = () => { @@ -220,7 +205,9 @@ const main = () => { fs_1.default.mkdirSync(outputDirectory, { recursive: true }); console.log("[INFO] 开始处理压缩文件..."); processDirectory(inputDirectory, outputDirectory); - writeLog(outputDirectory); + // 输出删除的文件和文件夹 + const deletedItemsLog = printDeletedItems(); + writeLogToFile(deletedItemsLog); console.log('[INFO] 处理完成!结果保存在 "out" 目录中。'); }; main(); diff --git a/lib/index.js.map b/lib/index.js.map index 87a7401..0696066 100644 --- a/lib/index.js.map +++ b/lib/index.js.map @@ -1 +1 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/src/index.ts b/src/index.ts index ff0388f..d77c18a 100644 --- a/src/index.ts +++ b/src/index.ts @@ -26,11 +26,20 @@ const DISALLOWED_DIRECTORIES = new Set([ "__MACOSX", ".vscode", ]); -let deletedItems: string[] = []; + +let deletedFiles: { + type: string; + name: string; + originalPath: string; +}[] = []; // 存储删除的文件信息 +let deletedDirectories: { + type: string; + name: string; + originalPath: string; +}[] = []; // 存储删除的文件夹信息 // 清理文件名 const sanitizeFileName = (fileName: Buffer): string => { - // 对文件名进行标准化处理,解决编码问题 const decodedName = fileName.toString("utf8"); return decodedName; }; @@ -61,15 +70,6 @@ const preTest = () => { } }; -// 检查文件是否可能是Linux可执行文件(无后缀的二进制) -const isLinuxExecutable = (filePath: string): boolean => { - if (fs.statSync(filePath).isFile() && path.extname(filePath) === "") { - const stats = fs.statSync(filePath); - return (stats.mode & 0o111) !== 0; - } - return false; -}; - // 使用7z解压文件 const extractUsing7z = (filePath: string, extractTo: string): void => { console.log(`[INFO] 使用 7z 解压文件: ${filePath} 到目录: ${extractTo}`); @@ -98,38 +98,6 @@ const extractRar = (filePath: string, extractTo: string): void => { } }; -/** - * 解压缩文件 - * @param inputDirectory 输入目录 - * @param outputDirectory 输出目录 - * @deprecated 存在编码问题,暂时不使用 - */ -const extractZip = (filePath: string, extractTo: string): void => { - console.log(`[INFO] 解压缩文件: ${filePath} 到目录: ${extractTo}`); - if (!fs.existsSync(extractTo)) { - fs.mkdirSync(extractTo, { recursive: true }); - } - const zip = new AdmZip(filePath); - - // 遍历所有的文件条目,清理文件名中的非法字符 - zip.getEntries().forEach((entry) => { - if (entry.entryName) { - try { - // 清理文件名中的非法字符 - const sanitizedName = sanitizeFileName(entry.rawEntryName); - entry.entryName = sanitizedName; // 更新文件名 - } catch (e) { - console.error( - `[ERROR] 解压时处理文件名失败: ${entry.entryName}` - ); - } - } - }); - - // 解压文件 - zip.extractAllTo(extractTo, true); -}; - // 递归处理目录并过滤文件 const processDirectory = ( inputDirectory: string, @@ -143,7 +111,11 @@ const processDirectory = ( if (stat.isDirectory()) { // 排除不需要的目录 if (DISALLOWED_DIRECTORIES.has(item)) { - deletedItems.push(`目录: ${itemPath}`); + deletedDirectories.push({ + type: "文件夹", + name: item, + originalPath: itemPath, + }); fs.rmSync(itemPath, { recursive: true, force: true }); console.log(`[DELETE] 删除目录: ${itemPath}`); } else { @@ -166,8 +138,7 @@ const processDirectory = ( const outputDirPath = path.join( outputDirectory, relativePath, - path.basename(itemPath, path.extname(itemPath)) + - "_extracted" + path.basename(itemPath, path.extname(itemPath)) + "_extracted" ); if (!fs.existsSync(outputDirPath)) { @@ -175,7 +146,6 @@ const processDirectory = ( } if (itemPath.endsWith(".zip")) { - // extractZip(itemPath, outputDirPath); // 存在编码问题,暂时不使用 extractUsing7z(itemPath, outputDirPath); } else if (itemPath.endsWith(".7z")) { extractUsing7z(itemPath, outputDirPath); @@ -201,16 +171,18 @@ const processDirectory = ( fs.rmSync(outputDirPath, { recursive: true, force: true }); } else if ( DISALLOWED_EXTENSIONS.has(ext) || - DISALLOWED_KEYWORDS.has(item) || - isLinuxExecutable(itemPath) + DISALLOWED_KEYWORDS.has(item) ) { + deletedFiles.push({ + type: "文件", + name: item, + originalPath: itemPath, + }); console.log(`[DELETE] 删除文件: ${itemPath}`); - deletedItems.push(`文件: ${itemPath}`); fs.rmSync(itemPath, { recursive: true, force: true }); // 删除不需要的文件 } else { // 将文件复制到对应的输出目录 const outputFilePath = path.join(outputDirectory, item); - // 如果要复制的路径相同就跳过 if (itemPath === outputFilePath) { return; } @@ -223,13 +195,31 @@ const processDirectory = ( }); }; -// 写入统计文件 -const writeLog = (outputDirectory: string): void => { - const logFile = path.join(outputDirectory, "result_log.txt"); - fs.writeFileSync(logFile, "以下是被删除的目录和文件列表:\n"); - fs.appendFileSync(logFile, deletedItems.join("\n")); - console.log(`[INFO] 已删除${deletedItems.length}个目录或文件。`); - console.log(`[INFO] 统计文件已生成: ${logFile}`); +// 输出删除信息到控制台 +const printDeletedItems = () => { + let result = "\n[INFO] 删除的文件和文件夹:"; + // 输出文件夹 + if (deletedDirectories.length > 0) { + result += "\n[INFO] 被删除的文件夹:"; + deletedDirectories.forEach((item) => { + result += `\n${item.type} ${item.name} ${item.originalPath}`; + }); + } + // 输出文件 + if (deletedFiles.length > 0) { + result += "\n[INFO] 被删除的文件:"; + deletedFiles.forEach((item) => { + result += `\n${item.type} ${item.name} ${item.originalPath}`; + }); + } + return result; +}; + +// 写入日志到文件 +const writeLogToFile = (log: string) => { + const logFilePath = path.join(process.cwd(), "out/result.log"); + fs.writeFileSync(logFilePath, log, { encoding: "utf8", flag: "w" }); + console.log(`[INFO] 统计信息已保存到 result.log 文件中。`); }; // 主函数 @@ -250,7 +240,11 @@ const main = (): void => { console.log("[INFO] 开始处理压缩文件..."); processDirectory(inputDirectory, outputDirectory); - writeLog(outputDirectory); + + // 输出删除的文件和文件夹 + const deletedItemsLog = printDeletedItems(); + writeLogToFile(deletedItemsLog); + console.log('[INFO] 处理完成!结果保存在 "out" 目录中。'); };