From 684be05fe802497d85c5a3d3dff108aad5f6564a Mon Sep 17 00:00:00 2001
From: dgelessus <dgelessus@users.noreply.github.com>
Date: Fri, 10 Jan 2025 12:13:14 +0100
Subject: [PATCH] Move generated dat files instead of copying and then deleting

---
 .../hhu/stups/sablecc/gradle/SableCCTask.java | 25 +++++++++++--------
 1 file changed, 14 insertions(+), 11 deletions(-)

diff --git a/src/main/java/de/hhu/stups/sablecc/gradle/SableCCTask.java b/src/main/java/de/hhu/stups/sablecc/gradle/SableCCTask.java
index 68bdad5..27466f9 100644
--- a/src/main/java/de/hhu/stups/sablecc/gradle/SableCCTask.java
+++ b/src/main/java/de/hhu/stups/sablecc/gradle/SableCCTask.java
@@ -127,16 +127,19 @@ public abstract class SableCCTask extends SourceTask {
 		});
 		
 		// Move generated dat files from Java source directory to resources directory.
-		this.getFs().copy(spec -> {
-			spec.from(destinationJavaPath);
-			spec.into(destinationResourcesPath);
-			spec.include("**/*.dat");
-		});
-		this.getFs().delete(spec -> {
-			ConfigurableFileTree fileTree = this.objectFactory.fileTree();
-			fileTree.from(destinationJavaPath);
-			fileTree.include("**/*.dat");
-			spec.delete(fileTree);
-		});
+		ConfigurableFileTree datFiles = this.objectFactory.fileTree();
+		datFiles.from(destinationJavaPath);
+		datFiles.include("**/*.dat");
+		for (File datFile : datFiles) {
+			Path sourcePath = datFile.toPath();
+			assert sourcePath.isAbsolute();
+			Path relativePath = destinationJavaPath.relativize(sourcePath);
+			Path destinationPath = destinationResourcesPath.resolve(relativePath);
+			assert destinationPath.isAbsolute();
+			if (destinationPath.getParent() != null) {
+				Files.createDirectories(destinationPath.getParent());
+			}
+			Files.move(sourcePath, destinationPath);
+		}
 	}
 }
-- 
GitLab