ant-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Wray, Nathan" <Nathan.W...@compuware.com>
Subject RE: Creating a fileset from a list of filenames
Date Thu, 05 Nov 2009 17:28:51 GMT
It's not very typical to see an app aware of its environment when you're
running ant under cygwin.  The list of files dumped from the xmlproperty
for instance is identical.


-----Original Message-----
From: Matt Benson [mailto:gudnabrsam@gmail.com] 
Sent: Thursday, November 05, 2009 12:24 PM
To: Ant Users List
Subject: Re: Creating a fileset from a list of filenames


On Nov 5, 2009, at 11:07 AM, Wray, Nathan wrote:

> Matt, David;
>
> Using pathconvert/fileset worked 90% of the time.  For some reason  
> it failed under cygwin and instead of seeing the one changed file  
> it would seek all the files from the base directory (I'd assume a  
> globmapper failure, but I never found the exact issue).

This is almost certainly due to the differences between path  
separators... the svn commands you use to generate the list are  
windows-based.

-Matt

>
> I was surprised to find that the project already had ant-contrib  
> installed, so I was able to use <for> after all:
>
> <for list="${svnstat.status.target.entry.path}" param="modifiedFile">
>   <sequential>
>   <if>
>     <matches pattern="^.*?\.java$" string="@{modifiedFile}" />
>     <then>
>       <checkstyle
>         config="${basedir}/Checkstyle.xml"
>         failOnViolation="true"
>         maxErrors="25"
>         maxWarnings="25"
>         file="@{modifiedFile}"
>>
>       </checkstyle>
>     </then>
>     <!-- this "else" is debugging info
>     <else>
>        <echo message="Skipping file, not java: @{modifiedFile}" />
>     </else>
>     -->
>   </if>
>   </sequential>
>  </for>
>
> One downside of processing each file individually is that the  
> target fails after the first failed file; in a perfect world I'll  
> figure out how to report all of the failures in every file, and  
> then have the outer task fail.
>
> Thanks for your help!
> Nathan
>
> -----Original Message-----
> From: Matt Benson [mailto:gudnabrsam@yahoo.com]
> Sent: Tuesday, November 03, 2009 8:59 AM
> To: Ant Users List
> Subject: Re: Creating a fileset from a list of filenames
>
>
>
> --- On Tue, 11/3/09, Wray, Nathan <Nathan.Wray@compuware.com> wrote:
>
>> From: Wray, Nathan <Nathan.Wray@compuware.com>
>> Subject: Creating a fileset from a list of filenames
>> To: user@ant.apache.org
>> Date: Tuesday, November 3, 2009, 7:16 AM
>> Hi All;
>>
>>
>>
>> I'm trying to identify modified java files in an SVN
>> working copy and
>> run checkstyle on these files.  So far I've got a
>> property with a list
>> of everything modified like:
>>
>>
>>
>> /path/file1;/path/file2;/path/file3
>>
>>
>>
>> It seems like I need something the opposite of pathconvert
>> to turn this
>> property into a FileSet.
>>
>
> If you needed the new fileset for a task that had been updated to  
> use resource collections, you could use the paths you have directly  
> in a <files> collection.  However, since <checkstyle> doesn't seem  
> to support the broader resource collection interface, it will be a  
> bit more complicated.  See below:
>
>
>> Any suggestions?  The relevant part of my build file
>> follows:
>>
>>
>>
>> <exec executable="svn"
>> outputproperty="svn.status.out">
>>
>> <arg value="status" />
>>
>> <arg value="${basedir}/.." />
>>
>> <arg value="--xml" />
>>
>> </exec>
>>
>>
>>
>> <xmlproperty prefix="svnstat" collapseattributes="true"
>> delimiter=";">
>>
>> <propertyset>
>>
>> <propertyref name="svn.status.out"/>
>>
>> </propertyset>
>>
>> </xmlproperty>
>>
>>
>>
>> <!--
>>
>> Now svnstat.status.target.entry.path contains all of the
>> modified files
>>
>> and folders as a semicolon separated list
>>
>> This needs to be filtered to just .java files
>>
>> -->
>>
>> <echo  message="unfiltered list of modified files:
>> ${svnstat.status.target.entry.path}"/>
>>
>>
>>
>> <!--
>>
>> This fails, the list is not a pathid
>>
>> -->
>>
>> <checkstyle  config="./Checkstyle.xml">
>>
>> <fileset pathid="svnstat.status.target.entry.path"/>
>>
>> </checkstyle>
>>
>>
>
> This is untested, but:
>
> <pathconvert property="includespattern" pathsep=",">
>   <path path="${svnstat.status.target.entry.path}" />
>   <globmapper from="${basedir}/*" to="*" handledirsep="true" />
> </pathconvert>
>
> And then your fileset would be:
>
> <fileset dir="${basedir}" includes="${includespattern}">
>   <filename name="**/*.java" />
> </fileset>
>
> HTH,
> Matt
>>
>>
>>
>>
>>
>> Thank you
>>
>> Nathan
>>
>>
>>
>>
>>
>>
>> The contents of this e-mail are intended for the named
>> addressee only. It contains information that may be
>> confidential. Unless you are the named addressee or an
>> authorized designee, you may not copy or use it, or disclose
>> it to anyone else. If you received it in error please notify
>> us immediately and then destroy it.
>>
>>
>
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: user-unsubscribe@ant.apache.org
> For additional commands, e-mail: user-help@ant.apache.org
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: user-unsubscribe@ant.apache.org
> For additional commands, e-mail: user-help@ant.apache.org
>


---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@ant.apache.org
For additional commands, e-mail: user-help@ant.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@ant.apache.org
For additional commands, e-mail: user-help@ant.apache.org


Mime
View raw message