From 9899f6cd9500f4c949c194c3b93bbf10b8079c35 Mon Sep 17 00:00:00 2001 From: Andrea Cavalli Date: Tue, 19 Jul 2022 01:20:16 +0200 Subject: [PATCH] Update files only if it's needed --- .../data/generator/SourcesGenerator.java | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/src/main/java/it/cavallium/data/generator/SourcesGenerator.java b/src/main/java/it/cavallium/data/generator/SourcesGenerator.java index f97545f..1bdf9ef 100644 --- a/src/main/java/it/cavallium/data/generator/SourcesGenerator.java +++ b/src/main/java/it/cavallium/data/generator/SourcesGenerator.java @@ -36,6 +36,7 @@ import java.io.IOException; import java.io.InputStream; import java.io.Serializable; import java.lang.reflect.Array; +import java.nio.charset.StandardCharsets; import java.nio.file.Files; import java.nio.file.Path; import java.util.ArrayList; @@ -2903,7 +2904,22 @@ public class SourcesGenerator { } private void writeClass(Path outPath, String classPackage, Builder versionsClass) throws IOException { - JavaFile.builder(classPackage, versionsClass.build()).build().writeTo(outPath); + var sb = new StringBuilder(); + JavaFile.builder(classPackage, versionsClass.build()).build().writeTo(sb); + String newFile = sb.toString(); + boolean mustWrite; + if (Files.isRegularFile(outPath) && Files.isReadable(outPath)) { + String oldFile = Files.readString(outPath, StandardCharsets.UTF_8); + mustWrite = !oldFile.equals(newFile); + } else { + mustWrite = true; + } + if (mustWrite) { + logger.debug("File {} changed", outPath); + Files.writeString(outPath, newFile); + } else { + logger.debug("File {} is the same, unchanged", outPath); + } } private String getVersionVarName(String version) {