On Wed, Mar 24, 2010 at 19:07, Adam Murdoch <[email protected]> wrote: > > > A couple of days ago I added CopySpec.expand(Map properties), which adds a > filter that runs the input files through a SimpleTemplateEngine with the > given properties, eg > > processResources { > expand(key1: 'value1', key2: 'value2') > } > > Replaces property references, such as ${key1}, plus you can use all the > other good stuff that SimpleTemplateEngine provides, eg ${key1 ?: > 'unspecified'} or <%= classpath.join('\n') %> > > We could extend expand() to accept any number of parameters: > - A Map would be used as is. > - Anything else would be passed to uri(), and a properties file loaded from > the resulting URI. > - The effective Map of properties would be assembled by adding the above > Maps together, in the order specified (last entry wins for duplicate > properties). > > This would let you do something like: > > processResources { > expand(project.properties, 'staging.properties', ' > http://someshared/resource', key1: 'value', key2: 'value2') > } > > I guess expand() isn't the greatest name. Perhaps expandProperties()? And > we could add a corresponding expandTokens() which accepts the same types of > parameters, and runs the file through ReplaceTokens filter with the > assembled map of properties. > > > -- > Adam Murdoch > Gradle Developerhttp://www.gradle.org > > Sounds really good Adam, the only other thing I would like to see is the ability to specify the token delimiters, or have it do both tokens and properties ('${...}', and '@...@' or whatever token delimiter you tell it to). That way there would only be one method that would need to be called that would fulfill probably 90% of the use cases for filters. We could probably even go little further and expect a properties file somewhere (either sourceSet.resources.srcDirs or in . ) called expandValues.properties or something like that and use that file if it's available. That would make processResources work for many people without even changing the default task, or at least very little change required.
I think having properties on the copy task to add to the defaults, like we do in other places, would be best. There could be a tokens property, an expandPropertiesSources, and possibly a flag to turn off expansion. -- Jason Porter Software Engineer Open Source Advocate PGP key id: 926CCFF5 PGP key available at: keyserver.net, pgp.mit.edu
