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

Reply via email to