20 * or visit www.oracle.com if you need additional information or have any
21 * questions.
22 */
23
24 package org.openjdk.skara.gradle.images;
25
26 import org.gradle.api.DefaultTask;
27 import org.gradle.api.model.ObjectFactory;
28 import org.gradle.api.provider.*;
29 import org.gradle.api.tasks.*;
30
31 import javax.inject.Inject;
32 import java.io.*;
33 import java.nio.file.*;
34 import java.nio.file.attribute.PosixFilePermissions;
35 import java.util.Comparator;
36
37 public class LaunchersTask extends DefaultTask {
38 private Property<Path> toDir;
39 private Property<String> os;
40 private MapProperty<String, String> launchers;
41 private ListProperty<String> options;
42
43 @Inject
44 public LaunchersTask(ObjectFactory factory) {
45 toDir = factory.property(Path.class);
46 os = factory.property(String.class);
47 launchers = factory.mapProperty(String.class, String.class);
48 options = factory.listProperty(String.class);
49 }
50
51 @Input
52 ListProperty<String> getOptions() {
53 return options;
54 }
55
56 @OutputDirectory
57 Property<Path> getToDir() {
58 return toDir;
59 }
60
61 @Input
62 Property<String> getOS() {
63 return os;
64 }
65
66 @Input
67 MapProperty<String, String> getLaunchers() {
68 return launchers;
69 }
70
71 private static void clearDirectory(Path directory) throws IOException {
72 Files.walk(directory)
73 .map(Path::toFile)
74 .sorted(Comparator.reverseOrder())
75 .forEach(File::delete);
76 }
77
78 @TaskAction
79 void generate() throws IOException {
80 var dest = toDir.get().resolve(os.get());
81 if (Files.isDirectory(dest)) {
82 clearDirectory(dest);
83 }
84 Files.createDirectories(dest);
85 var optionString = String.join(" ", options.get());
86 for (var entry : launchers.get().entrySet()) {
87 var filename = entry.getKey();
88 var clazz = entry.getValue();
89
90 if (os.get().equals("windows")) {
91 var file = dest.resolve(filename + ".bat");
92 try (var w = Files.newBufferedWriter(file)) {
93 w.write("@echo off\r\n");
94 w.write("set DIR=%~dp0\r\n");
95 w.write("set JAVA_HOME=%DIR%..\\image\r\n");
96 w.write("\"%JAVA_HOME%\\bin\\java.exe\" " + optionString + " --module " + clazz + " %*\r\n");
97 }
98 } else {
99 var file = dest.resolve(filename);
100 try (var w = Files.newBufferedWriter(file)) {
|
20 * or visit www.oracle.com if you need additional information or have any
21 * questions.
22 */
23
24 package org.openjdk.skara.gradle.images;
25
26 import org.gradle.api.DefaultTask;
27 import org.gradle.api.model.ObjectFactory;
28 import org.gradle.api.provider.*;
29 import org.gradle.api.tasks.*;
30
31 import javax.inject.Inject;
32 import java.io.*;
33 import java.nio.file.*;
34 import java.nio.file.attribute.PosixFilePermissions;
35 import java.util.Comparator;
36
37 public class LaunchersTask extends DefaultTask {
38 private Property<Path> toDir;
39 private Property<String> os;
40 private Property<String> cpu;
41 private MapProperty<String, String> launchers;
42 private ListProperty<String> options;
43
44 @Inject
45 public LaunchersTask(ObjectFactory factory) {
46 toDir = factory.property(Path.class);
47 os = factory.property(String.class);
48 cpu = factory.property(String.class);
49 launchers = factory.mapProperty(String.class, String.class);
50 options = factory.listProperty(String.class);
51 }
52
53 @Input
54 ListProperty<String> getOptions() {
55 return options;
56 }
57
58 @OutputDirectory
59 Property<Path> getToDir() {
60 return toDir;
61 }
62
63 @Input
64 Property<String> getOS() {
65 return os;
66 }
67
68 @Input
69 Property<String> getCPU() {
70 return cpu;
71 }
72
73 @Input
74 MapProperty<String, String> getLaunchers() {
75 return launchers;
76 }
77
78 private static void clearDirectory(Path directory) throws IOException {
79 Files.walk(directory)
80 .map(Path::toFile)
81 .sorted(Comparator.reverseOrder())
82 .forEach(File::delete);
83 }
84
85 @TaskAction
86 void generate() throws IOException {
87 var dest = toDir.get().resolve(os.get() + "-" + cpu.get());
88 if (Files.isDirectory(dest)) {
89 clearDirectory(dest);
90 }
91 Files.createDirectories(dest);
92 var optionString = String.join(" ", options.get());
93 for (var entry : launchers.get().entrySet()) {
94 var filename = entry.getKey();
95 var clazz = entry.getValue();
96
97 if (os.get().equals("windows")) {
98 var file = dest.resolve(filename + ".bat");
99 try (var w = Files.newBufferedWriter(file)) {
100 w.write("@echo off\r\n");
101 w.write("set DIR=%~dp0\r\n");
102 w.write("set JAVA_HOME=%DIR%..\\image\r\n");
103 w.write("\"%JAVA_HOME%\\bin\\java.exe\" " + optionString + " --module " + clazz + " %*\r\n");
104 }
105 } else {
106 var file = dest.resolve(filename);
107 try (var w = Files.newBufferedWriter(file)) {
|