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 } |