ant-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Matt Benson <gudnabr...@gmail.com>
Subject Re: Creating a fileset from a list of filenames
Date Thu, 05 Nov 2009 17:24:25 GMT

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


Mime
View raw message