From 570c0a93fb24a393a2bf013a5aad5b6759713ce7 Mon Sep 17 00:00:00 2001 From: Yves Fischer Date: Sun, 20 Dec 2015 18:47:45 +0100 Subject: start migrating from shell scripts --- .../src/main/groovy/buildSrc/DownloadTask.groovy | 61 ++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 buildSrc/src/main/groovy/buildSrc/DownloadTask.groovy (limited to 'buildSrc/src') diff --git a/buildSrc/src/main/groovy/buildSrc/DownloadTask.groovy b/buildSrc/src/main/groovy/buildSrc/DownloadTask.groovy new file mode 100644 index 0000000..1a49dd5 --- /dev/null +++ b/buildSrc/src/main/groovy/buildSrc/DownloadTask.groovy @@ -0,0 +1,61 @@ +package buildSrc + +import org.apache.commons.codec.binary.Hex +import org.gradle.api.DefaultTask +import org.gradle.api.tasks.* + +import java.security.MessageDigest + +class DownloadTask extends DefaultTask { + @OutputFile + File destFile + + @Input + URL source + + String sha256sum + + void setSource(URL url) { + this.@source = url + if (destFile == null) { + final basename = url.path.substring(url.path.lastIndexOf('/') + 1) + destFile = new File(project.buildDir, basename) + } + } + + void source(URL url) { + setSource(url) + } + + void source(String sourceUrl) { + source new URL(sourceUrl) + } + + void sha256sum(String sha256sum) { + this.@sha256sum = sha256sum + } + + private void checkSha256Sum(File file, String sum) { + final md = MessageDigest.getInstance('SHA-256') + final digestBytes = md.digest(file.bytes) + final digestHex = Hex.encodeHexString(digestBytes) + if (digestHex != sum) { + throw new TaskExecutionException(this, + new Exception("Checksum mismatch, expected ${sum} got ${digestHex}")) + } + } + + @TaskAction + void doExecute() { + final tempFile = new File(destFile.path + '_download') + project.logger.info("Download ${source} to ${tempFile}") + ant.get(src: source, dest: tempFile, verbose: true) + + if (sha256sum) { + checkSha256Sum(tempFile, sha256sum) + } + + project.logger.info("Rename downloaded ${tempFile} to ${destFile}") + ant.rename(src: tempFile, dest: destFile) + } +} \ No newline at end of file -- cgit v1.2.1