aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/ch/fhnw/thga/gradleplugins/SetupFregeTask.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/ch/fhnw/thga/gradleplugins/SetupFregeTask.java')
-rw-r--r--src/main/java/ch/fhnw/thga/gradleplugins/SetupFregeTask.java54
1 files changed, 41 insertions, 13 deletions
diff --git a/src/main/java/ch/fhnw/thga/gradleplugins/SetupFregeTask.java b/src/main/java/ch/fhnw/thga/gradleplugins/SetupFregeTask.java
index 6bfe72d..c4e17d3 100644
--- a/src/main/java/ch/fhnw/thga/gradleplugins/SetupFregeTask.java
+++ b/src/main/java/ch/fhnw/thga/gradleplugins/SetupFregeTask.java
@@ -6,6 +6,7 @@ import java.net.URL;
import java.nio.channels.Channels;
import java.nio.channels.FileChannel;
import java.nio.channels.ReadableByteChannel;
+import java.nio.file.Paths;
import org.gradle.api.DefaultTask;
import org.gradle.api.GradleException;
@@ -36,32 +37,59 @@ public abstract class SetupFregeTask extends DefaultTask {
public abstract DirectoryProperty getDownloadDir();
@Internal
- public Provider<String> getFregeVersionJarName() {
+ public Provider<String> getFregeVersionJarName()
+ {
return getVersion().map(version -> "frege" + version + ".jar");
}
@Internal
- final public Provider<String> getDownloadUrl() {
+ final public Provider<String> getDownloadUrl()
+ {
return getFregeVersionJarName()
- .map(name -> String.join("/", FREGE_GITHUB_URL_PREFIX, getRelease().get(), name));
+ .map(name -> String.join("/", FREGE_GITHUB_URL_PREFIX, getRelease().get(), name));
}
@OutputFile
- public Provider<RegularFile> getFregeCompilerOutputPath() {
+ public Provider<RegularFile> getFregeCompilerOutputPath()
+ {
return getDownloadDir().file(getFregeVersionJarName());
}
@TaskAction
public void downloadFregeCompiler() {
- 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) {
+ String fregeCompilerOutputPath = getFregeCompilerOutputPath()
+ .get()
+ .getAsFile()
+ .getAbsolutePath();
+ if (Paths
+ .get(fregeCompilerOutputPath)
+ .toFile()
+ .exists()
+ )
+ return;
+
+ 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());
}
}
-}
+} \ No newline at end of file