src/main/java/de/unixwork/uwproj/Main.java

changeset 93
df47e083139b
parent 90
a13789dd1cfb
child 109
1e852be12654
--- a/src/main/java/de/unixwork/uwproj/Main.java	Fri Jan 05 20:53:42 2024 +0100
+++ b/src/main/java/de/unixwork/uwproj/Main.java	Fri Jan 05 21:02:37 2024 +0100
@@ -2,15 +2,15 @@
 
 import org.apache.velocity.VelocityContext;
 import org.apache.velocity.app.VelocityEngine;
-import org.slf4j.LoggerFactory;
 
 import java.io.*;
-import java.nio.file.*;
-import java.nio.file.attribute.PosixFilePermission;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.nio.file.StandardCopyOption;
 import java.nio.file.attribute.PosixFilePermissions;
 import java.util.Arrays;
 import java.util.Objects;
-import java.util.Set;
 
 public class Main {
 
@@ -173,8 +173,13 @@
         System.out.println("In:  " + inFileName);
         System.out.println("Tpl: " + tplFileName);
 
-        try (var out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(outFileName)))) {
-            writeConfigureScript(out, tplFileName, loadProjectFile(inFileName));
+        final var outFilePath = Path.of(outFileName);
+        try {
+            final var tmp = File.createTempFile("uwproj", null);
+            try (var out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(tmp)))) {
+                writeConfigureScript(out, tplFileName, loadProjectFile(inFileName));
+            }
+            Files.copy(tmp.toPath(), outFilePath, StandardCopyOption.REPLACE_EXISTING);
         } catch (Throwable t) {
             System.err.printf("Unexpected error: %s\n", t.getMessage());
             abort();
@@ -182,7 +187,7 @@
 
         System.out.println("Out: " + outFileName);
         try {
-            Files.setPosixFilePermissions(Path.of(outFileName), PosixFilePermissions.fromString("rwxr-xr-x"));
+            Files.setPosixFilePermissions(outFilePath, PosixFilePermissions.fromString("rwxr-xr-x"));
         } catch (Throwable t) {
             System.err.printf("WARN: Setting file permissions failed: %s\n", t.getMessage());
         }

mercurial