Use ".singleFile" instead of "[0]" when we expect just one file

This documents our intent more clearly, and actively checks for
mistakes rather than silently ignoring unexpected extra files.
This commit is contained in:
Ben Liblit 2018-02-26 19:28:34 -06:00
parent 1d8869bb0a
commit 2a75244914
4 changed files with 18 additions and 18 deletions

View File

@ -17,7 +17,7 @@ task downloadNodeJS(type: de.undercouch.gradle.tasks.download.Download) {
}
task verifyNodeJS(type: VerifyWithStamp, dependsOn: downloadNodeJS) {
src files(downloadNodeJS)[0]
src files(downloadNodeJS).singleFile
checksum '33c5ba7a5d45644e70d268d8ad3e57df'
}

View File

@ -11,7 +11,7 @@ task downloadAjaxslt(type: de.undercouch.gradle.tasks.download.Download) {
}
task verifyAjaxslt(type: VerifyWithStamp, dependsOn: downloadAjaxslt) {
src files(downloadAjaxslt)[0]
src files(downloadAjaxslt).singleFile
checksum 'c995abe3310a401bb4db7f28a6409756'
}

View File

@ -25,7 +25,7 @@ task downloadBcel(type: Download) {
}
task verifyBcel(type: VerifyWithStamp, dependsOn: downloadBcel) {
src files(downloadBcel)[0]
src files(downloadBcel).singleFile
checksum '19bffd7f217b0eae415f1ef87af2f0bc'
}
@ -65,7 +65,7 @@ task cleanDownloadJavaCup(type: Delete) {
}
task verifyJavaCup(type: VerifyWithStamp, dependsOn: downloadJavaCup) {
src files(downloadJavaCup)[0]
src files(downloadJavaCup).singleFile
checksum '2bda8c40abd0cbc295d3038643d6e4ec'
}
@ -108,7 +108,7 @@ task downloadOcamlJava(type: Download) {
}
task verifyOcamlJava(type: VerifyWithStamp, dependsOn: downloadOcamlJava) {
src downloadOcamlJava.outputFiles[0]
src files(downloadOcamlJava).singleFile
checksum '45feec6e3889f5073a39c2c4c84878d1'
}
@ -120,9 +120,9 @@ task unpackOcamlJava(type: Sync, dependsOn: verifyOcamlJava) {
task generateHelloHash(type: JavaExec, dependsOn: unpackOcamlJava) {
inputs.file 'ocaml/hello_hash.ml'
outputs.file 'hello_hash.jar'
args inputs.files[0], '-o', outputs.files[0]
args inputs.files.singleFile, '-o', outputs.files.singleFile
def ocamlJavaHome = new File(files(unpackOcamlJava)[0], downloadOcamlJava.basename)
def ocamlJavaHome = new File(files(unpackOcamlJava).singleFile, downloadOcamlJava.basename)
classpath new File(ocamlJavaHome, 'lib/ocamljava.jar')
main 'ocaml.compilers.ocamljavaMain'
inputs.dir ocamlJavaHome

View File

@ -40,7 +40,7 @@ task downloadAndroidSdk(type: Download) {
}
task verifyAndroidSdk(type: VerifyWithStamp, dependsOn: downloadAndroidSdk) {
src files(downloadAndroidSdk)[0]
src files(downloadAndroidSdk).singleFile
algorithm 'SHA-256'
checksum downloadAndroidSdk.checksum
}
@ -52,31 +52,31 @@ task unpackAndroidSdk(type: Sync, dependsOn: verifyAndroidSdk) {
// TODO: factor out common code in installAndroidBuildTools and installAndroidPlatforms
task installAndroidBuildTools(type: Exec, dependsOn: unpackAndroidSdk) {
def manager = "${unpackAndroidSdk.outputs.files[0]}/tools/bin/sdkmanager"
def manager = "${unpackAndroidSdk.outputs.files.singleFile}/tools/bin/sdkmanager"
ext.version = '26.0.2'
commandLine 'sh', '-ceu', "yes 2>/dev/null | $manager build-tools\\;$version >/dev/null"
def androidSdk = unpackAndroidSdk.outputs.files[0]
def androidSdk = unpackAndroidSdk.outputs.files.singleFile
inputs.dir "$androidSdk/tools"
outputs.dir "$androidSdk/build-tools"
}
task copyDxJar(type: Sync, dependsOn: installAndroidBuildTools) {
from "${installAndroidBuildTools.outputs.files[0]}/${installAndroidBuildTools.version}/lib/dx.jar"
from "${installAndroidBuildTools.outputs.files.singleFile}/${installAndroidBuildTools.version}/lib/dx.jar"
into 'lib'
}
// TODO: factor out common code in installAndroidBuildTools and installAndroidPlatforms
task installAndroidPlatforms(type: Exec, dependsOn: unpackAndroidSdk) {
def manager = "${unpackAndroidSdk.outputs.files[0]}/tools/bin/sdkmanager"
def manager = "${unpackAndroidSdk.outputs.files.singleFile}/tools/bin/sdkmanager"
ext.version = "android-${installAndroidBuildTools.version.tokenize('.')[0]}"
commandLine 'sh', '-ceu', "yes 2>/dev/null | $manager platforms\\;$version >/dev/null"
def androidSdk = unpackAndroidSdk.outputs.files[0]
def androidSdk = unpackAndroidSdk.outputs.files.singleFile
inputs.dir "$androidSdk/tools"
outputs.dir "$androidSdk/platforms"
}
task copyAndroidJar(type: Sync, dependsOn: installAndroidPlatforms) {
from "${installAndroidPlatforms.outputs.files[0]}/${installAndroidPlatforms.version}/android.jar"
from "${installAndroidPlatforms.outputs.files.singleFile}/${installAndroidPlatforms.version}/android.jar"
into temporaryDir
}
@ -87,7 +87,7 @@ task downloadSampleCup(type: Download) {
}
task verifySampleCup(type: VerifyWithStamp, dependsOn: downloadSampleCup) {
src files(downloadSampleCup)[0]
src files(downloadSampleCup).singleFile
checksum '76b549e7c6e802b811a374248175ecf4'
}
@ -98,7 +98,7 @@ task downloadSampleLex(type: Download) {
}
task verifySampleLex(type: VerifyWithStamp, dependsOn: downloadSampleLex) {
src files(downloadSampleLex)[0]
src files(downloadSampleLex).singleFile
checksum 'ae887758b2657981d023a72a165da830'
}
@ -110,14 +110,14 @@ dependencies {
testCompile(
'junit:junit:4.11',
'org.osgi:org.osgi.core:4.2.0',
files("${copyDxJar.outputs.files[0]}/dx.jar"),
files("${copyDxJar.outputs.files.singleFile}/dx.jar"),
project(':com.ibm.wala.core'),
project(':com.ibm.wala.dalvik'),
project(':com.ibm.wala.shrike'),
project(':com.ibm.wala.util'),
project(configuration: 'testArchives', path: ':com.ibm.wala.core.tests'),
)
testRuntime files("${copyAndroidJar.outputs.files[0]}/android.jar")
testRuntime files("${copyAndroidJar.outputs.files.singleFile}/android.jar")
}
processTestResources {