Build: Allow extra config for integ test to be anything project.file() accepts

This change delays the lookup for whatever is passed to extra config as
the source file to happen at execution time. This allows using eg a task
which generates a file, but maintains the checks that the file is not a
dir and that it exists at runtime.
This commit is contained in:
Ryan Ernst 2015-11-25 00:34:56 -08:00
parent d6969fcf3a
commit 52f31ee14a
1 changed files with 12 additions and 9 deletions

View File

@ -184,17 +184,20 @@ class ClusterFormationTasks {
Copy copyConfig = project.tasks.create(name: name, type: Copy, dependsOn: setup)
copyConfig.into(new File(node.homeDir, 'config')) // copy must always have a general dest dir, even though we don't use it
for (Map.Entry<String,Object> extraConfigFile : node.config.extraConfigFiles.entrySet()) {
File srcConfigFile = project.file(extraConfigFile.getValue())
if (srcConfigFile.isDirectory()) {
throw new GradleException("Source for extraConfigFile must be a file: ${srcConfigFile}")
}
if (srcConfigFile.exists() == false) {
throw new GradleException("Source file for extraConfigFile does not exist: ${srcConfigFile}")
Closure delayedSrc = {
File srcConfigFile = project.file(extraConfigFile.getValue())
if (srcConfigFile.isDirectory()) {
throw new GradleException("Source for extraConfigFile must be a file: ${srcConfigFile}")
}
if (srcConfigFile.exists() == false) {
throw new GradleException("Source file for extraConfigFile does not exist: ${srcConfigFile}")
}
return srcConfigFile
}
File destConfigFile = new File(node.homeDir, 'config/' + extraConfigFile.getKey())
copyConfig.from(srcConfigFile)
.into(destConfigFile.canonicalFile.parentFile)
.rename { destConfigFile.name }
copyConfig.from(delayedSrc)
.into(destConfigFile.canonicalFile.parentFile)
.rename { destConfigFile.name }
}
return copyConfig
}