From 5353e396ae59bd50f8734693696ebaf2e31694f4 Mon Sep 17 00:00:00 2001 From: Ben Davies Date: Mon, 30 Mar 2020 21:29:34 +0100 Subject: [PATCH] fix(update): Delete old files on exit --- .../uk/co/bjdavies/core/UpdateService.java | 24 ++++++++++++------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/core/src/main/java/uk/co/bjdavies/core/UpdateService.java b/core/src/main/java/uk/co/bjdavies/core/UpdateService.java index 6edc198b..3df53ca1 100644 --- a/core/src/main/java/uk/co/bjdavies/core/UpdateService.java +++ b/core/src/main/java/uk/co/bjdavies/core/UpdateService.java @@ -8,6 +8,9 @@ import java.io.*; import java.net.URL; +import java.util.Arrays; +import java.util.Objects; +import java.util.concurrent.atomic.AtomicBoolean; import java.util.zip.ZipEntry; import java.util.zip.ZipInputStream; @@ -103,6 +106,7 @@ private boolean swapScripts(File unZipTmp) throws IOException { private boolean swapLibs(File unZipTmp) { File libsFolder = new File(unZipTmp + File.separator + "lib/"); File ourLibsFolder = new File("../lib/"); + log.info(ourLibsFolder.getAbsolutePath()); if (!ourLibsFolder.exists()) { if (!ourLibsFolder.mkdirs()) { @@ -117,22 +121,24 @@ private boolean swapLibs(File unZipTmp) { return false; } } - - if (ourLibsFolder.delete()) { - if (ourLibsFolder.mkdirs()) { + AtomicBoolean copy = new AtomicBoolean(true); + try { + Arrays.stream(Objects.requireNonNull(ourLibsFolder.listFiles())).forEach(File::deleteOnExit); + Arrays.stream(Objects.requireNonNull(libsFolder.listFiles())).forEach(f -> { try { - FileUtils.copyDirectory(libsFolder, ourLibsFolder, true); + FileUtils.copyFileToDirectory(f, ourLibsFolder); } catch (IOException e) { log.error("Cant copy", e); - return false; + copy.set(false); } - } else { - return false; - } + }); + } catch (NullPointerException e) { + log.error("Cant copy", e); + return false; } - return true; + return copy.get(); } private void extractFile(ZipInputStream zipIn, String filePath) throws IOException {