Search in sources :

Example 1 with DownloadedToolManager

use of org.curioswitch.gradle.tooldownloader.DownloadedToolManager in project curiostack by curioswitch.

the class SetupTask method exec.

@TaskAction
public void exec() throws Exception {
    if ("true".equals(System.getenv("CI")) || toolName.equals("graalvm")) {
        return;
    }
    DownloadedToolManager toolManager = DownloadToolUtil.getManager(getProject());
    Path shimsPath = toolManager.getCuriostackDir().resolve("shims");
    if (Files.exists(shimsPath)) {
        try (var s = Files.walk(shimsPath)) {
            s.sorted(Comparator.reverseOrder()).map(Path::toFile).forEach(File::delete);
        }
    }
    getProject().mkdir(shimsPath);
    final String shimTemplate;
    try {
        shimTemplate = Resources.toString(Resources.getResource("tooldownloader/shim-template.sh"), StandardCharsets.UTF_8);
    } catch (IOException e) {
        throw new UncheckedIOException("Could not open shim template.", e);
    }
    for (Path binDir : toolManager.getBinDirs(toolName)) {
        try (Stream<Path> s = Files.list(binDir)) {
            s.filter(Files::isExecutable).filter(p -> !p.getFileName().toString().startsWith("git")).filter(p -> !p.getFileName().endsWith(".dll")).filter(p -> !p.getFileName().endsWith(".pyd")).forEach(path -> workerExecutor.submit(WriteShim.class, config -> {
                config.setIsolationMode(IsolationMode.NONE);
                config.params(shimsPath.toString(), path.toString(), shimTemplate);
            }));
        } catch (IOException e) {
            throw new UncheckedIOException("Could not open directory.", e);
        }
    }
}
Also used : Path(java.nio.file.Path) PathUtil(org.curioswitch.gradle.helpers.platform.PathUtil) Resources(com.google.common.io.Resources) Files(java.nio.file.Files) IOException(java.io.IOException) DownloadToolUtil(org.curioswitch.gradle.tooldownloader.util.DownloadToolUtil) File(java.io.File) StandardCharsets(java.nio.charset.StandardCharsets) UncheckedIOException(java.io.UncheckedIOException) Inject(javax.inject.Inject) TaskAction(org.gradle.api.tasks.TaskAction) Stream(java.util.stream.Stream) IsolationMode(org.gradle.workers.IsolationMode) WorkerExecutor(org.gradle.workers.WorkerExecutor) Paths(java.nio.file.Paths) DownloadedToolManager(org.curioswitch.gradle.tooldownloader.DownloadedToolManager) DefaultTask(org.gradle.api.DefaultTask) Comparator(java.util.Comparator) Path(java.nio.file.Path) DownloadedToolManager(org.curioswitch.gradle.tooldownloader.DownloadedToolManager) UncheckedIOException(java.io.UncheckedIOException) IOException(java.io.IOException) UncheckedIOException(java.io.UncheckedIOException) Files(java.nio.file.Files) File(java.io.File) TaskAction(org.gradle.api.tasks.TaskAction)

Aggregations

Resources (com.google.common.io.Resources)1 File (java.io.File)1 IOException (java.io.IOException)1 UncheckedIOException (java.io.UncheckedIOException)1 StandardCharsets (java.nio.charset.StandardCharsets)1 Files (java.nio.file.Files)1 Path (java.nio.file.Path)1 Paths (java.nio.file.Paths)1 Comparator (java.util.Comparator)1 Stream (java.util.stream.Stream)1 Inject (javax.inject.Inject)1 PathUtil (org.curioswitch.gradle.helpers.platform.PathUtil)1 DownloadedToolManager (org.curioswitch.gradle.tooldownloader.DownloadedToolManager)1 DownloadToolUtil (org.curioswitch.gradle.tooldownloader.util.DownloadToolUtil)1 DefaultTask (org.gradle.api.DefaultTask)1 TaskAction (org.gradle.api.tasks.TaskAction)1 IsolationMode (org.gradle.workers.IsolationMode)1 WorkerExecutor (org.gradle.workers.WorkerExecutor)1