Factor out recurring pattern in download tasks
This commit is contained in:
parent
4749fe47c0
commit
813c79caa0
|
@ -0,0 +1,46 @@
|
||||||
|
import org.gradle.api.tasks.*
|
||||||
|
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////////////////
|
||||||
|
//
|
||||||
|
// download and use checksum to verify that we got what we expected
|
||||||
|
//
|
||||||
|
|
||||||
|
class VerifiedDownload extends org.gradle.api.DefaultTask {
|
||||||
|
|
||||||
|
// URL of resource to download
|
||||||
|
def @Input src
|
||||||
|
|
||||||
|
// expected checksum of resource as hex digits
|
||||||
|
def @Input checksum
|
||||||
|
|
||||||
|
// algorithm to use for computing checksum
|
||||||
|
def @Input algorithm = 'MD5'
|
||||||
|
|
||||||
|
// whether to use ETag for selective downloading
|
||||||
|
def @Input useETag = true
|
||||||
|
|
||||||
|
// local file into which resource should be saved
|
||||||
|
def @OutputFile dest
|
||||||
|
|
||||||
|
File getDest() {
|
||||||
|
return project.file(dest)
|
||||||
|
}
|
||||||
|
|
||||||
|
@TaskAction
|
||||||
|
downloadAndVerify() {
|
||||||
|
def destFile = getDest()
|
||||||
|
project.download {
|
||||||
|
src this.src
|
||||||
|
dest destFile
|
||||||
|
overwrite true
|
||||||
|
onlyIfModified true
|
||||||
|
useETag this.useETag
|
||||||
|
}
|
||||||
|
project.verifyChecksum {
|
||||||
|
src destFile
|
||||||
|
algorithm this.algorithm
|
||||||
|
checksum this.checksum
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -6,31 +6,10 @@ sourceSets.test.java.srcDirs = ['src']
|
||||||
// download JLex
|
// download JLex
|
||||||
//
|
//
|
||||||
|
|
||||||
class VerifiedDownload extends org.gradle.api.DefaultTask {
|
|
||||||
|
|
||||||
@Input String src
|
|
||||||
@Input String checksum
|
|
||||||
@OutputFile File dest
|
|
||||||
|
|
||||||
@TaskAction
|
|
||||||
downloadAndVerify() {
|
|
||||||
download {
|
|
||||||
src this.src
|
|
||||||
dest this.dest
|
|
||||||
overwrite true
|
|
||||||
onlyIfModified true
|
|
||||||
}
|
|
||||||
verifyChecksum {
|
|
||||||
src this.dest
|
|
||||||
checksum this.checksum
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
task downloadJLex(type: VerifiedDownload) {
|
task downloadJLex(type: VerifiedDownload) {
|
||||||
src 'http://www.cs.princeton.edu/~appel/modern/java/JLex/current/Main.java'
|
src 'http://www.cs.princeton.edu/~appel/modern/java/JLex/current/Main.java'
|
||||||
checksum 'fe0cff5db3e2f0f5d67a153cf6c783af'
|
checksum 'fe0cff5db3e2f0f5d67a153cf6c783af'
|
||||||
dest file('src/JLex/Main.java')
|
dest 'src/JLex/Main.java'
|
||||||
}
|
}
|
||||||
|
|
||||||
task cleanDownloadJLex(type: Delete) {
|
task cleanDownloadJLex(type: Delete) {
|
||||||
|
|
|
@ -10,21 +10,10 @@ dependencies {
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
task downloadNodeJS {
|
task downloadNodeJS(type: VerifiedDownload) {
|
||||||
outputs.file "$temporaryDir/nodejs.zip"
|
src 'https://api.github.com/repos/nodejs/node/zipball/0a604e92e258c5ee2752d763e50721e35053f135'
|
||||||
doLast {
|
dest "$temporaryDir/nodejs.zip"
|
||||||
download {
|
checksum '33c5ba7a5d45644e70d268d8ad3e57df'
|
||||||
src 'https://api.github.com/repos/nodejs/node/zipball/0a604e92e258c5ee2752d763e50721e35053f135'
|
|
||||||
dest outputs.files.singleFile
|
|
||||||
overwrite true
|
|
||||||
onlyIfModified true
|
|
||||||
useETag true
|
|
||||||
}
|
|
||||||
verifyChecksum {
|
|
||||||
src outputs.files.singleFile
|
|
||||||
checksum '33c5ba7a5d45644e70d268d8ad3e57df'
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
task unpackNodeJSLib(type: Copy, dependsOn: downloadNodeJS) {
|
task unpackNodeJSLib(type: Copy, dependsOn: downloadNodeJS) {
|
||||||
|
|
|
@ -1,22 +1,11 @@
|
||||||
apply plugin: 'base'
|
apply plugin: 'base'
|
||||||
|
|
||||||
task downloadAjaxslt {
|
task downloadAjaxslt(type: VerifiedDownload) {
|
||||||
def version = '0.8.1'
|
def version = '0.8.1'
|
||||||
def versionedArchive = "ajaxslt-${version}.tar.gz"
|
def versionedArchive = "ajaxslt-${version}.tar.gz"
|
||||||
outputs.file "$temporaryDir/$versionedArchive"
|
src "https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/ajaxslt/$versionedArchive"
|
||||||
doLast {
|
dest "$temporaryDir/$versionedArchive"
|
||||||
download {
|
checksum 'c995abe3310a401bb4db7f28a6409756'
|
||||||
src "https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/ajaxslt/$versionedArchive"
|
|
||||||
dest outputs.files.singleFile
|
|
||||||
overwrite true
|
|
||||||
onlyIfModified true
|
|
||||||
useETag true
|
|
||||||
}
|
|
||||||
verifyChecksum {
|
|
||||||
src outputs.files.singleFile
|
|
||||||
checksum 'c995abe3310a401bb4db7f28a6409756'
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
task unpackAjaxslt(type: Sync, dependsOn: downloadAjaxslt) {
|
task unpackAjaxslt(type: Sync, dependsOn: downloadAjaxslt) {
|
||||||
|
|
|
@ -10,25 +10,13 @@ sourceSets.test.java.srcDirs = ['src']
|
||||||
// download and extract "bcel-5.2.jar"
|
// download and extract "bcel-5.2.jar"
|
||||||
//
|
//
|
||||||
|
|
||||||
task downloadBcel {
|
task downloadBcel(type: VerifiedDownload) {
|
||||||
ext {
|
ext.version = '5.2'
|
||||||
version = '5.2'
|
|
||||||
}
|
|
||||||
def archive = "bcel-${version}.tar.gz"
|
def archive = "bcel-${version}.tar.gz"
|
||||||
outputs.file "$temporaryDir/$archive"
|
src "http://archive.apache.org/dist/jakarta/bcel/binaries/$archive"
|
||||||
doLast {
|
dest "$temporaryDir/$archive"
|
||||||
download {
|
checksum '19bffd7f217b0eae415f1ef87af2f0bc'
|
||||||
src "http://archive.apache.org/dist/jakarta/bcel/binaries/$archive"
|
useETag false
|
||||||
dest outputs.files.singleFile
|
|
||||||
overwrite true
|
|
||||||
onlyIfModified true
|
|
||||||
useETag false // server does not provide ETags
|
|
||||||
}
|
|
||||||
verifyChecksum {
|
|
||||||
src outputs.files.singleFile
|
|
||||||
checksum '19bffd7f217b0eae415f1ef87af2f0bc'
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
task extractBcel(type: Copy, dependsOn: downloadBcel) {
|
task extractBcel(type: Copy, dependsOn: downloadBcel) {
|
||||||
|
@ -56,22 +44,11 @@ clean.dependsOn cleanExtractBcel
|
||||||
// download "java-cup-11a.jar"
|
// download "java-cup-11a.jar"
|
||||||
//
|
//
|
||||||
|
|
||||||
task downloadJavaCup {
|
task downloadJavaCup(type: VerifiedDownload) {
|
||||||
def archive = 'java-cup-11a.jar'
|
def archive = 'java-cup-11a.jar'
|
||||||
outputs.file "$projectDir/$archive"
|
src "http://www2.cs.tum.edu/projects/cup/$archive"
|
||||||
doLast {
|
dest "$projectDir/$archive"
|
||||||
download {
|
checksum '2bda8c40abd0cbc295d3038643d6e4ec'
|
||||||
src "http://www2.cs.tum.edu/projects/cup/$archive"
|
|
||||||
dest outputs.files.singleFile
|
|
||||||
overwrite true
|
|
||||||
onlyIfModified true
|
|
||||||
useETag true
|
|
||||||
}
|
|
||||||
verifyChecksum {
|
|
||||||
src outputs.files.singleFile
|
|
||||||
checksum '2bda8c40abd0cbc295d3038643d6e4ec'
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
task cleanDownloadJavaCup(type: Delete) {
|
task cleanDownloadJavaCup(type: Delete) {
|
||||||
|
@ -106,24 +83,13 @@ clean.dependsOn cleanCollectJLex
|
||||||
// generate "hello_hash.jar"
|
// generate "hello_hash.jar"
|
||||||
//
|
//
|
||||||
|
|
||||||
task downloadOcamlJava {
|
task downloadOcamlJava(type: VerifiedDownload) {
|
||||||
def version = '2.0-alpha1'
|
def version = '2.0-alpha1'
|
||||||
ext.basename = "ocamljava-$version"
|
ext.basename = "ocamljava-$version"
|
||||||
def archive = "${basename}.tar.gz"
|
def archive = "${basename}.tar.gz"
|
||||||
outputs.file "$temporaryDir/$archive"
|
src "http://www.ocamljava.org/downloads/download.php?version=$version-bin"
|
||||||
doLast {
|
dest "$temporaryDir/$archive"
|
||||||
download {
|
checksum '45feec6e3889f5073a39c2c4c84878d1'
|
||||||
src "http://www.ocamljava.org/downloads/download.php?version=$version-bin"
|
|
||||||
dest outputs.files.singleFile
|
|
||||||
overwrite true
|
|
||||||
onlyIfModified true
|
|
||||||
useETag true
|
|
||||||
}
|
|
||||||
verifyChecksum {
|
|
||||||
src outputs.files.singleFile
|
|
||||||
checksum '45feec6e3889f5073a39c2c4c84878d1'
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
task unpackOcamlJava(type: Sync, dependsOn: downloadOcamlJava) {
|
task unpackOcamlJava(type: Sync, dependsOn: downloadOcamlJava) {
|
||||||
|
|
|
@ -16,39 +16,26 @@ task cloneDroidBench(type: Exec) {
|
||||||
commandLine 'git', 'clone', "--branch=$inputs.properties.branch", '--config=advice.detachedHead=false', '--depth=1', '--quiet', inputs.properties.repository, destDir
|
commandLine 'git', 'clone', "--branch=$inputs.properties.branch", '--config=advice.detachedHead=false', '--depth=1', '--quiet', inputs.properties.repository, destDir
|
||||||
}
|
}
|
||||||
|
|
||||||
task downloadAndroidSdk {
|
task downloadAndroidSdk(type: VerifiedDownload) {
|
||||||
def sdkOs
|
def sdkOs
|
||||||
def sdkChecksum
|
|
||||||
switch (System.getProperty('os.name')) {
|
switch (System.getProperty('os.name')) {
|
||||||
case ~/Linux/:
|
case ~/Linux/:
|
||||||
sdkOs = 'linux'
|
sdkOs = 'linux'
|
||||||
sdkChecksum = '444e22ce8ca0f67353bda4b85175ed3731cae3ffa695ca18119cbacef1c1bea0'
|
checksum '444e22ce8ca0f67353bda4b85175ed3731cae3ffa695ca18119cbacef1c1bea0'
|
||||||
break
|
break
|
||||||
case ~/Mac OS X/:
|
case ~/Mac OS X/:
|
||||||
sdkOs = 'darwin'
|
sdkOs = 'darwin'
|
||||||
sdkChecksum = '4a81754a760fce88cba74d69c364b05b31c53d57b26f9f82355c61d5fe4b9df9'
|
checksum '4a81754a760fce88cba74d69c364b05b31c53d57b26f9f82355c61d5fe4b9df9'
|
||||||
break
|
break
|
||||||
case ~/Windows.*/:
|
case ~/Windows.*/:
|
||||||
sdkOs = 'windows'
|
sdkOs = 'windows'
|
||||||
sdkChecksum = '7f6037d3a7d6789b4fdc06ee7af041e071e9860c51f66f7a4eb5913df9871fd2'
|
checksum '7f6037d3a7d6789b4fdc06ee7af041e071e9860c51f66f7a4eb5913df9871fd2'
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
def archive = "sdk-tools-$sdkOs-3859397.zip"
|
def archive = "sdk-tools-$sdkOs-3859397.zip"
|
||||||
outputs.file "$temporaryDir/$archive"
|
src "https://dl.google.com/android/repository/$archive"
|
||||||
doLast {
|
dest "$temporaryDir/$archive"
|
||||||
download {
|
algorithm 'SHA-256'
|
||||||
src "https://dl.google.com/android/repository/$archive"
|
|
||||||
dest outputs.files.singleFile
|
|
||||||
overwrite true
|
|
||||||
onlyIfModified true
|
|
||||||
useETag true
|
|
||||||
}
|
|
||||||
verifyChecksum {
|
|
||||||
src outputs.files.singleFile
|
|
||||||
algorithm 'SHA-256'
|
|
||||||
checksum sdkChecksum
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
task unpackAndroidSdk(type: Sync, dependsOn: downloadAndroidSdk) {
|
task unpackAndroidSdk(type: Sync, dependsOn: downloadAndroidSdk) {
|
||||||
|
@ -86,38 +73,16 @@ task copyAndroidJar(type: Sync, dependsOn: installAndroidPlatforms) {
|
||||||
into temporaryDir
|
into temporaryDir
|
||||||
}
|
}
|
||||||
|
|
||||||
task downloadSampleCup {
|
task downloadSampleCup(type: VerifiedDownload) {
|
||||||
outputs.file 'data/sample.cup'
|
src 'http://www.cc.gatech.edu/gvu/people/faculty/hudson/java_cup/classes.v0.9e/java_cup/parser.cup'
|
||||||
doLast {
|
dest 'data/sample.cup'
|
||||||
download {
|
checksum '76b549e7c6e802b811a374248175ecf4'
|
||||||
src 'http://www.cc.gatech.edu/gvu/people/faculty/hudson/java_cup/classes.v0.9e/java_cup/parser.cup'
|
|
||||||
dest outputs.files.singleFile
|
|
||||||
overwrite true
|
|
||||||
onlyIfModified true
|
|
||||||
useETag true
|
|
||||||
}
|
|
||||||
verifyChecksum {
|
|
||||||
src outputs.files.singleFile
|
|
||||||
checksum '76b549e7c6e802b811a374248175ecf4'
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
task downloadSampleLex {
|
task downloadSampleLex(type: VerifiedDownload) {
|
||||||
outputs.file 'data/sample.lex'
|
src 'https://www.cs.princeton.edu/~appel/modern/java/JLex/current/sample.lex'
|
||||||
doLast {
|
dest 'data/sample.lex'
|
||||||
download {
|
checksum 'ae887758b2657981d023a72a165da830'
|
||||||
src 'https://www.cs.princeton.edu/~appel/modern/java/JLex/current/sample.lex'
|
|
||||||
dest outputs.files.singleFile
|
|
||||||
overwrite true
|
|
||||||
onlyIfModified true
|
|
||||||
useETag true
|
|
||||||
}
|
|
||||||
verifyChecksum {
|
|
||||||
src outputs.files.singleFile
|
|
||||||
checksum 'ae887758b2657981d023a72a165da830'
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
clean.dependsOn cleanCopyDxJar
|
clean.dependsOn cleanCopyDxJar
|
||||||
|
|
Loading…
Reference in New Issue