From c598d183f0dc5bf97e23692925f653b20438df7c Mon Sep 17 00:00:00 2001 From: Mathieu Baudier Date: Tue, 23 May 2023 11:43:04 +0200 Subject: [PATCH] Improve osgi-uninstall --- src/org/argeo/build/Make.java | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/src/org/argeo/build/Make.java b/src/org/argeo/build/Make.java index 33291b2..70bf8b5 100644 --- a/src/org/argeo/build/Make.java +++ b/src/org/argeo/build/Make.java @@ -355,8 +355,7 @@ public class Make { if (Files.exists(targetJarP)) { Files.delete(targetJarP); Path targetParent = targetJarP.getParent(); - if (!Files.list(targetParent).iterator().hasNext()) - Files.delete(targetParent); + deleteEmptyParents(targetA2, targetParent); logger.log(DEBUG, "Removed " + targetJarP); count++; } @@ -371,6 +370,18 @@ public class Make { logger.log(INFO, uninstall ? count + " bundles removed" : count + " bundles installed or updated"); } + /** Delete empty parent directory up to the A2 target (included). */ + void deleteEmptyParents(Path targetA2, Path targetParent) throws IOException { + if (!Files.isDirectory(targetParent)) + throw new IllegalArgumentException(targetParent + " must be a directory"); + if (!Files.list(targetParent).iterator().hasNext()) { + Files.delete(targetParent); + if (Files.isSameFile(targetA2, targetParent)) + return;// stop after deleting A2 base + deleteEmptyParents(targetA2, targetParent.getParent()); + } + } + /** Package a single bundle. */ void createBundle(String branch, String bundle, String category) throws IOException { final Path source; -- 2.30.2