From 06b4ffc668fa3df80ee46b9ffa37784baf853006 Mon Sep 17 00:00:00 2001 From: Karsten Schmidt Date: Mon, 22 Apr 2024 15:43:22 +0200 Subject: [PATCH] feat(file-io): add deleteDir() --- packages/file-io/src/delete.ts | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/packages/file-io/src/delete.ts b/packages/file-io/src/delete.ts index 37ccf00fa2..a59d57b04d 100644 --- a/packages/file-io/src/delete.ts +++ b/packages/file-io/src/delete.ts @@ -1,5 +1,5 @@ import type { ILogger } from "@thi.ng/logger"; -import { unlinkSync } from "node:fs"; +import { rmSync, unlinkSync } from "node:fs"; /** * Deletes file at given path. If `dryRun` is true (default: false), the file @@ -15,3 +15,17 @@ export const deleteFile = (path: string, logger?: ILogger, dryRun = false) => { if (dryRun) return; unlinkSync(path); }; + +/** + * Like {@link deleteFile}, but attempts to recursively remove an entire + * directory at given path. + * + * @param path + * @param logger + * @param dryRun + */ +export const deleteDir = (path: string, logger?: ILogger, dryRun = false) => { + logger && logger.info(`${dryRun ? "[dryrun] " : ""}deleting file: ${path}`); + if (dryRun) return; + rmSync(path, { recursive: true, force: true }); +};