aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/ch/fhnw/thga/gradleplugins/SetupFregeCompilerTask.java
diff options
context:
space:
mode:
authorThibault Gagnaux <tgagnaux@gmail.com>2021-07-01 19:09:02 +0200
committerThibault Gagnaux <tgagnaux@gmail.com>2021-07-01 19:09:02 +0200
commit5ad88075e8e67ece6673999ffd06260c2b5d298d (patch)
treea332a0515cf1fe80e8c2b38f785f3bd0aad45461 /src/main/java/ch/fhnw/thga/gradleplugins/SetupFregeCompilerTask.java
parentb87c1babf4a1d0b9cdf417b8aaf8da8edc473766 (diff)
downloadfrege-gradle-plugin-5ad88075e8e67ece6673999ffd06260c2b5d298d.tar.gz
frege-gradle-plugin-5ad88075e8e67ece6673999ffd06260c2b5d298d.tar.bz2
frege-gradle-plugin-5ad88075e8e67ece6673999ffd06260c2b5d298d.zip
Refactors `SetupFregeCompilerTask` tests
Diffstat (limited to 'src/main/java/ch/fhnw/thga/gradleplugins/SetupFregeCompilerTask.java')
-rw-r--r--src/main/java/ch/fhnw/thga/gradleplugins/SetupFregeCompilerTask.java48
1 files changed, 35 insertions, 13 deletions
diff --git a/src/main/java/ch/fhnw/thga/gradleplugins/SetupFregeCompilerTask.java b/src/main/java/ch/fhnw/thga/gradleplugins/SetupFregeCompilerTask.java
index a7f48ba..b3d08a1 100644
--- a/src/main/java/ch/fhnw/thga/gradleplugins/SetupFregeCompilerTask.java
+++ b/src/main/java/ch/fhnw/thga/gradleplugins/SetupFregeCompilerTask.java
@@ -9,13 +9,21 @@ 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.file.DirectoryProperty;
+import org.gradle.api.file.RegularFile;
+import org.gradle.api.logging.Logger;
+import org.gradle.api.logging.Logging;
import org.gradle.api.provider.Property;
+import org.gradle.api.provider.Provider;
import org.gradle.api.tasks.Input;
+import org.gradle.api.tasks.Internal;
import org.gradle.api.tasks.OutputFile;
import org.gradle.api.tasks.TaskAction;
public abstract class SetupFregeCompilerTask extends DefaultTask {
+ public static final Logger LOGGER = Logging.getLogger(SetupFregeCompilerTask.class);
+
+ private static final String FREGE_GITHUB_URL_PREFIX = "https://github.com/Frege/frege/releases/download";
@Input
public abstract Property<String> getFregeVersion();
@@ -23,21 +31,35 @@ public abstract class SetupFregeCompilerTask extends DefaultTask {
@Input
public abstract Property<String> getFregeRelease();
+ @Internal
+ public abstract DirectoryProperty getFregeCompilerOutputDirectory();
+
+ @Internal
+ public Provider<String> getFregeVersionJarName() {
+ return getFregeVersion().map(version -> "frege" + version + ".jar");
+ }
+
+ @Internal
+ public Provider<String> getDownloadUrl() {
+ return getFregeVersionJarName()
+ .map(name -> String.join("/", FREGE_GITHUB_URL_PREFIX, getFregeRelease().get(), name));
+ }
+
@OutputFile
- public abstract RegularFileProperty getFregeCompilerPath();
+ public Provider<RegularFile> getFregeCompilerOutputPath() {
+ return getFregeCompilerOutputDirectory().file(getFregeVersionJarName());
+ }
@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());
- }
+ String fregeCompilerOutputPath = getFregeCompilerOutputPath().get().getAsFile().getAbsolutePath();
+ try (ReadableByteChannel readChannel = Channels.newChannel(new URL(getDownloadUrl().get()).openStream());
+ FileOutputStream fregeCompilerOutputStream = new FileOutputStream(fregeCompilerOutputPath);) {
+ FileChannel writeChannel = fregeCompilerOutputStream.getChannel();
+ writeChannel.transferFrom(readChannel, 0, Long.MAX_VALUE);
+ LOGGER.lifecycle(String.format("Successfully downloaded %s to: %s", getFregeVersionJarName().get(), fregeCompilerOutputPath));
+ } catch (IOException e) {
+ throw new GradleException(e.getMessage());
+ }
}
}