< prev index next >

buildSrc/images/src/main/java/org/openjdk/skara/gradle/images/LaunchersTask.java

Print this page

 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)) {
< prev index next >