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:07:53 GMT
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).

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


Mime
View raw message