UNPKG

@thi.ng/file-io

Version:

Assorted file I/O utils (w/ logging support) for NodeJS/Bun

54 lines (53 loc) 1.32 kB
import { rmSync, unlinkSync } from "node:fs"; import { unlink } from "node:fs/promises"; import { maskedPath } from "./mask.js"; const deleteFile = (path, logger, dryRun = false) => { logger?.info( `${dryRun ? "[dryrun] " : ""}deleting file:`, maskedPath(path) ); if (dryRun) return; unlinkSync(path); }; const deleteFileAsync = async (path, logger, dryRun = false) => { logger?.info( `${dryRun ? "[dryrun] " : ""}deleting file:`, maskedPath(path) ); if (dryRun) return; return unlink(path); }; const deleteFiles = (paths, logger, dryRun = false) => { for (let path of paths) { try { deleteFile(path, logger, dryRun); } catch (e) { logger?.warn( "error deleting file:", maskedPath(e.message) ); } } }; const deleteFilesAsync = async (paths, logger, dryRun = false) => { const promises = []; for (let path of paths) { promises.push(deleteFileAsync(path, logger, dryRun)); } await Promise.allSettled(promises); }; const deleteDir = (path, logger, dryRun = false) => { logger?.info( `${dryRun ? "[dryrun] " : ""}deleting directory:`, maskedPath(path) ); if (dryRun) return; rmSync(path, { recursive: true, force: true }); }; export { deleteDir, deleteFile, deleteFileAsync, deleteFiles, deleteFilesAsync };