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

changeset 93
df47e083139b
parent 90
a13789dd1cfb
child 109
1e852be12654
equal deleted inserted replaced
92:5a32534f2604 93:df47e083139b
1 package de.unixwork.uwproj; 1 package de.unixwork.uwproj;
2 2
3 import org.apache.velocity.VelocityContext; 3 import org.apache.velocity.VelocityContext;
4 import org.apache.velocity.app.VelocityEngine; 4 import org.apache.velocity.app.VelocityEngine;
5 import org.slf4j.LoggerFactory;
6 5
7 import java.io.*; 6 import java.io.*;
8 import java.nio.file.*; 7 import java.nio.file.Files;
9 import java.nio.file.attribute.PosixFilePermission; 8 import java.nio.file.Path;
9 import java.nio.file.Paths;
10 import java.nio.file.StandardCopyOption;
10 import java.nio.file.attribute.PosixFilePermissions; 11 import java.nio.file.attribute.PosixFilePermissions;
11 import java.util.Arrays; 12 import java.util.Arrays;
12 import java.util.Objects; 13 import java.util.Objects;
13 import java.util.Set;
14 14
15 public class Main { 15 public class Main {
16 16
17 public final static String IN_FILE_DEFAULT = "make/project.xml"; 17 public final static String IN_FILE_DEFAULT = "make/project.xml";
18 public final static String TPL_FILE_DEFAULT = "make/configure.vm"; 18 public final static String TPL_FILE_DEFAULT = "make/configure.vm";
171 } 171 }
172 172
173 System.out.println("In: " + inFileName); 173 System.out.println("In: " + inFileName);
174 System.out.println("Tpl: " + tplFileName); 174 System.out.println("Tpl: " + tplFileName);
175 175
176 try (var out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(outFileName)))) { 176 final var outFilePath = Path.of(outFileName);
177 writeConfigureScript(out, tplFileName, loadProjectFile(inFileName)); 177 try {
178 final var tmp = File.createTempFile("uwproj", null);
179 try (var out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(tmp)))) {
180 writeConfigureScript(out, tplFileName, loadProjectFile(inFileName));
181 }
182 Files.copy(tmp.toPath(), outFilePath, StandardCopyOption.REPLACE_EXISTING);
178 } catch (Throwable t) { 183 } catch (Throwable t) {
179 System.err.printf("Unexpected error: %s\n", t.getMessage()); 184 System.err.printf("Unexpected error: %s\n", t.getMessage());
180 abort(); 185 abort();
181 } 186 }
182 187
183 System.out.println("Out: " + outFileName); 188 System.out.println("Out: " + outFileName);
184 try { 189 try {
185 Files.setPosixFilePermissions(Path.of(outFileName), PosixFilePermissions.fromString("rwxr-xr-x")); 190 Files.setPosixFilePermissions(outFilePath, PosixFilePermissions.fromString("rwxr-xr-x"));
186 } catch (Throwable t) { 191 } catch (Throwable t) {
187 System.err.printf("WARN: Setting file permissions failed: %s\n", t.getMessage()); 192 System.err.printf("WARN: Setting file permissions failed: %s\n", t.getMessage());
188 } 193 }
189 } 194 }
190 } 195 }

mercurial