54 lines
1022 B
Groovy
54 lines
1022 B
Groovy
import org.gradle.api.tasks.*
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// download and use checksum to verify that we got what we expected
|
|
//
|
|
|
|
@CacheableTask
|
|
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)
|
|
}
|
|
|
|
VerifiedDownload() {
|
|
outputs.upToDateWhen {
|
|
getDest().exists()
|
|
}
|
|
}
|
|
|
|
@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
|
|
}
|
|
}
|
|
}
|