diff options
| author | Thibault Gagnaux <tgagnaux@gmail.com> | 2022-02-09 10:43:29 +0100 |
|---|---|---|
| committer | Thibault Gagnaux <tgagnaux@gmail.com> | 2022-02-09 10:43:29 +0100 |
| commit | 43ee2210fa07f42a13ac6879ae167db6d2729742 (patch) | |
| tree | 722fd5a79b230a927234601d74581fdaa9c3b700 /src/main/java | |
| parent | 47f99d65a09660863cb5d6b25b239ead3389f3ac (diff) | |
| download | frege-gradle-plugin-43ee2210fa07f42a13ac6879ae167db6d2729742.tar.gz frege-gradle-plugin-43ee2210fa07f42a13ac6879ae167db6d2729742.tar.bz2 frege-gradle-plugin-43ee2210fa07f42a13ac6879ae167db6d2729742.zip | |
refactor: introduces staged builder patterns for frege project setup
(WIP)
Diffstat (limited to 'src/main/java')
| -rw-r--r-- | src/main/java/ch/fhnw/thga/gradleplugins/SetupFregeTask.java | 54 |
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 |
