From 68aa1d0f162b8a8bff957f7ca2bda41093d781c1 Mon Sep 17 00:00:00 2001 From: Nat Quayle Nelson Date: Fri, 1 Oct 2021 22:49:54 -0600 Subject: [PATCH] purgeDirectory --- kiss/src/kiss/Kiss.hx | 1 + kiss/src/kiss/Prelude.hx | 15 +++++++++++++-- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/kiss/src/kiss/Kiss.hx b/kiss/src/kiss/Kiss.hx index 0718cd9b..de4819df 100644 --- a/kiss/src/kiss/Kiss.hx +++ b/kiss/src/kiss/Kiss.hx @@ -78,6 +78,7 @@ class Kiss { "assertProcess" => Symbol("Prelude.assertProcess"), "random" => Symbol("Std.random"), "walkDirectory" => Symbol("Prelude.walkDirectory"), + "purgeDirectory" => Symbol("Prelude.purgeDirectory"), "getTarget" => Symbol("Prelude.getTarget"), // These work with (apply) because they are added as "opAliases" in Macros.kiss: "min" => Symbol("Prelude.min"), diff --git a/kiss/src/kiss/Prelude.hx b/kiss/src/kiss/Prelude.hx index f3bf654c..972c8d68 100644 --- a/kiss/src/kiss/Prelude.hx +++ b/kiss/src/kiss/Prelude.hx @@ -409,11 +409,13 @@ class Prelude { switch (fileOrFolder) { case folder if (FileSystem.isDirectory(joinPath(basePath, directory, folder))): var subdirectory = joinPath(directory, folder); - if (processFolderBefore != null) + if (processFolderBefore != null) { processFolderBefore(subdirectory); + } walkDirectory(basePath, subdirectory, processFile, processFolderBefore, processFolderAfter); - if (processFolderAfter != null) + if (processFolderAfter != null) { processFolderAfter(subdirectory); + } case file: processFile(joinPath(directory, file)); } @@ -423,6 +425,15 @@ class Prelude { #end } + public static function purgeDirectory(directory) { + #if (sys || hxnodejs) + walkDirectory("", directory, FileSystem.deleteFile, null, FileSystem.deleteDirectory); + FileSystem.deleteDirectory(directory); + #else + throw "Can't delete files/folders on this target."; + #end + } + /** * On Sys targets and nodejs, Kiss can be converted to hscript at runtime * NOTE on non-nodejs targets, after the first time calling this function,