summaryrefslogtreecommitdiff
path: root/buildSrc
diff options
context:
space:
mode:
authorYves Fischer <yvesf-git@xapek.org>2015-12-20 18:47:45 +0100
committerYves Fischer <yvesf-git@xapek.org>2015-12-20 18:47:45 +0100
commit570c0a93fb24a393a2bf013a5aad5b6759713ce7 (patch)
tree430499b41b4defac779fa3f3967bf0fa7af9f418 /buildSrc
downloaddebian-packages-570c0a93fb24a393a2bf013a5aad5b6759713ce7.tar.gz
debian-packages-570c0a93fb24a393a2bf013a5aad5b6759713ce7.zip
start migrating from shell scripts
Diffstat (limited to 'buildSrc')
-rw-r--r--buildSrc/build.gradle7
-rw-r--r--buildSrc/src/main/groovy/buildSrc/DownloadTask.groovy61
2 files changed, 68 insertions, 0 deletions
diff --git a/buildSrc/build.gradle b/buildSrc/build.gradle
new file mode 100644
index 0000000..17d9385
--- /dev/null
+++ b/buildSrc/build.gradle
@@ -0,0 +1,7 @@
+repositories {
+ mavenCentral()
+}
+
+dependencies {
+ compile 'commons-codec:commons-codec:1.10'
+}
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