diff options
author | Thibault Gagnaux <tgagnaux@gmail.com> | 2021-06-30 15:37:38 +0200 |
---|---|---|
committer | Thibault Gagnaux <tgagnaux@gmail.com> | 2021-06-30 15:37:38 +0200 |
commit | b87c1babf4a1d0b9cdf417b8aaf8da8edc473766 (patch) | |
tree | 918b967b94b6963ae785ed276115eb247f774e84 /src/main/java/ch/fhnw/thga/gradleplugins/SetupFregeCompilerTask.java | |
parent | e7fc5336c818e6ce9f81069df73c258d116acc9f (diff) | |
download | frege-gradle-plugin-b87c1babf4a1d0b9cdf417b8aaf8da8edc473766.tar.gz frege-gradle-plugin-b87c1babf4a1d0b9cdf417b8aaf8da8edc473766.tar.bz2 frege-gradle-plugin-b87c1babf4a1d0b9cdf417b8aaf8da8edc473766.zip |
Adds first `SetupFregeCompilerTaks` with some tests
Diffstat (limited to 'src/main/java/ch/fhnw/thga/gradleplugins/SetupFregeCompilerTask.java')
-rw-r--r-- | src/main/java/ch/fhnw/thga/gradleplugins/SetupFregeCompilerTask.java | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/src/main/java/ch/fhnw/thga/gradleplugins/SetupFregeCompilerTask.java b/src/main/java/ch/fhnw/thga/gradleplugins/SetupFregeCompilerTask.java new file mode 100644 index 0000000..a7f48ba --- /dev/null +++ b/src/main/java/ch/fhnw/thga/gradleplugins/SetupFregeCompilerTask.java @@ -0,0 +1,43 @@ +package ch.fhnw.thga.gradleplugins; + +import java.io.FileOutputStream; +import java.io.IOException; +import java.net.URL; +import java.nio.channels.Channels; +import java.nio.channels.FileChannel; +import java.nio.channels.ReadableByteChannel; + +import org.gradle.api.DefaultTask; +import org.gradle.api.GradleException; +import org.gradle.api.file.RegularFileProperty; +import org.gradle.api.provider.Property; +import org.gradle.api.tasks.Input; +import org.gradle.api.tasks.OutputFile; +import org.gradle.api.tasks.TaskAction; + +public abstract class SetupFregeCompilerTask extends DefaultTask { + + @Input + public abstract Property<String> getFregeVersion(); + + @Input + public abstract Property<String> getFregeRelease(); + + @OutputFile + public abstract RegularFileProperty getFregeCompilerPath(); + + @TaskAction + public void downloadFregeCompiler() { + try { + ReadableByteChannel readChannel = Channels.newChannel( + new URL("https://github.com/Frege/frege/releases/download/" + + getFregeRelease().get() + "/frege" + getFregeVersion().get() + ".jar").openStream()); + FileOutputStream fregeCompilerDestinationPath = new FileOutputStream(getFregeCompilerPath().get().getAsFile().getAbsolutePath()); + FileChannel writeChannel = fregeCompilerDestinationPath.getChannel(); + writeChannel.transferFrom(readChannel, 0, Long.MAX_VALUE); + System.out.println("Successfully downloaded compiler to" + getFregeCompilerPath().get()); + } catch (IOException e) { + throw new GradleException(e.getMessage()); + } + } +} |