From 7d1c12799980df2b4aef683f37cfcfe65ecd97aa Mon Sep 17 00:00:00 2001 From: jespergravgaard Date: Sun, 27 Dec 2020 21:02:33 +0100 Subject: [PATCH] Fixed update of resource files in output directory. Closes #495 --- src/main/java/dk/camelot64/kickc/KickC.java | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/src/main/java/dk/camelot64/kickc/KickC.java b/src/main/java/dk/camelot64/kickc/KickC.java index c5269882d..381441a65 100644 --- a/src/main/java/dk/camelot64/kickc/KickC.java +++ b/src/main/java/dk/camelot64/kickc/KickC.java @@ -14,10 +14,10 @@ import kickass.nonasm.c64.CharToPetsciiConverter; import picocli.CommandLine; import java.io.*; -import java.nio.file.FileAlreadyExistsException; import java.nio.file.FileSystems; import java.nio.file.Files; import java.nio.file.Path; +import java.nio.file.attribute.FileTime; import java.util.*; import java.util.concurrent.Callable; import java.util.stream.Collectors; @@ -405,12 +405,19 @@ public class KickC implements Callable { if(!CFileDir.toAbsolutePath().equals(outputDir.toAbsolutePath())) { for(Path resourcePath : program.getAsmResourceFiles()) { Path outResourcePath = outputDir.resolve(resourcePath.getFileName().toString()); - System.out.println("Copying resource " + outResourcePath); - try { - Files.copy(resourcePath, outResourcePath); - } catch(FileAlreadyExistsException e) { - // Ignore this + if(Files.exists(outResourcePath)) { + FileTime resModified = Files.getLastModifiedTime(resourcePath); + FileTime outModified = Files.getLastModifiedTime(outResourcePath); + if(outModified.toMillis()>resModified.toMillis()) { + // Outfile is newer - move on to next file + System.out.println("Resource already copied " + outResourcePath); + continue; + } + // Resource is newer than existing file - delete it + Files.delete(outResourcePath); } + System.out.println("Copying resource " + outResourcePath); + Files.copy(resourcePath, outResourcePath); } }