diff --git a/src/main/java/codechicken/diffpatch/cli/PatchOperation.java b/src/main/java/codechicken/diffpatch/cli/PatchOperation.java index 8627c88..8f1f3e5 100644 --- a/src/main/java/codechicken/diffpatch/cli/PatchOperation.java +++ b/src/main/java/codechicken/diffpatch/cli/PatchOperation.java @@ -20,6 +20,7 @@ import java.util.*; import java.util.function.Consumer; import java.util.function.Function; +import java.util.stream.Stream; import static codechicken.diffpatch.util.LogLevel.*; import static codechicken.diffpatch.util.Utils.filterPrefixed; @@ -331,6 +332,23 @@ public boolean doPatch(FileCollector oCollector, FileCollector rCollector, Patch for (String file : removedFiles) { summary.removedFiles++; + Path deletedFile = this.outputPath.toPath().resolve(file); + Files.delete(deletedFile); + try(Stream walker = Files.walk(this.outputPath.toPath())){ + walker.sorted(Comparator.reverseOrder()) + .filter(Files::isDirectory) + .filter(path -> { + try(Stream folders = Files.list(path)) { + return !folders.findFirst().isPresent(); + } catch (IOException e) { + return false; + } + }) + .map(Path::toFile) + .forEach(File::delete); + } + + log(DEBUG, "Removed: " + file); }