walkDirectory process folders before/after

This commit is contained in:
2021-08-12 14:13:59 -06:00
parent 033325455a
commit 8135389944
2 changed files with 10 additions and 8 deletions

View File

@@ -59,9 +59,7 @@ class CompilerTools {
// TODO this assumes the user hasn't put folders in the folder, which
// would cause a failure because we're not deleting recursively
if (FileSystem.exists(args.outputFolder)) {
for (file in FileSystem.readDirectory(args.outputFolder)) {
FileSystem.deleteFile(Path.join([args.outputFolder, file]));
}
Prelude.walkDirectory(null, args.outputFolder, (file) -> FileSystem.deleteFile(file), null, (folder) -> FileSystem.deleteDirectory(folder));
FileSystem.deleteDirectory(args.outputFolder);
}
@@ -148,8 +146,8 @@ class CompilerTools {
var envFolder = '${args.outputFolder}-env';
Prelude.assertProcess("python", ["-m", "venv", envFolder]);
var envBinDir = if (Sys.systemName() == "Windows") "Scripts" else "bin";
trace(Prelude.assertProcess("ls", [envFolder]).replace("\n", " "));
trace(Prelude.assertProcess("ls", [Path.join([envFolder, envBinDir])]).replace("\n", " "));
// trace(Prelude.assertProcess("ls", [envFolder]).replace("\n", " "));
// trace(Prelude.assertProcess("ls", [Path.join([envFolder, envBinDir])]).replace("\n", " "));
var envPython = Path.join([envFolder, envBinDir, "python"]);
command = envPython;
switch (args.langProjectFile.extension()) {

View File

@@ -376,14 +376,18 @@ class Prelude {
private static var kissProcess:Process = null;
#end
public static function walkDirectory(basePath, directory, processFile:(String) -> Void, processSubdirectory:(String) -> Void) {
public static function walkDirectory(basePath, directory, processFile:(String) -> Void, ?processFolderBefore:(String) -> Void,
?processFolderAfter:(String) -> Void) {
#if (sys || hxnodejs)
for (fileOrFolder in FileSystem.readDirectory(joinPath(basePath, directory))) {
switch (fileOrFolder) {
case folder if (FileSystem.isDirectory(joinPath(basePath, directory, folder))):
var subdirectory = joinPath(directory, folder);
processSubdirectory(subdirectory);
walkDirectory(basePath, subdirectory, processFile, processSubdirectory);
if (processFolderBefore != null)
processFolderBefore(subdirectory);
walkDirectory(basePath, subdirectory, processFile, processFolderBefore, processFolderAfter);
if (processFolderAfter != null)
processFolderAfter(subdirectory);
case file:
processFile(joinPath(directory, file));
}