I tried you're advice below, to the best of my understanding of it and I
seem to have taken a step in the wrong direction. Now, nothing happens ...
I already have a shell script ready, I'm wondering if that's the way I
should go.
Matt Benson wrote:
Glad to know you're using the resourcecollection stuff in anger and getting some
mileage out of it. Unfortunately it seems you've hit on a genuine lack... :)
Firstly your date-sorted resourcecollection should be a dirset, but then you still
need a decent way to round up the children of those directories. The easiest way
would be to use antcontrib's <for> task to iterate over the directories and
delete each:
(given dirset id=ds and antcontrib ns ac)
<ac:for param="d">
<dirset refid="ds" />
<sequential>
<delete dir="@{ds}" />
</sequential>
</ac:for>
However, you said stock Ant. I was stumped, and was about to write that you
could drop back to scripting or write a Java task or type (such a type might be
nice). Then my younger, more inventive self barged in, gave me a good smack,
and came up with this approach:
(given same dirset id=ds)w
<pathconvert refid="ds" property="includes" pathsep="${line.separator}">
<regexpmapper from="(^.*$)" to="\1${file.separator}**" />
</pathconvert>
<echo file="includesfile">${includes}</echo>
<delete>
<files includesfile="includesfile" />
</delete>
<delete file="includesfile" />
Note that if you know that your directories won't have spaces or commas in
their names you could bypass the includesfile and simply
<delete>
<files includes="${includes}" />
</delete>
--oh, except in this case you'd use pathsep="," on your pathconvert.
Whaddya think?
-Matt
--- On Thu, 3/26/09, Michael Delaney <[email protected]> wrote:
From: Michael Delaney <[email protected]>
Subject: Delete N directories that match a regexp
To: "Ant Users List" <[email protected]>
Date: Thursday, March 26, 2009, 1:09 PM
I'm look for a way, with using ant
"out of the box", to find a list of directories and sort
them via date then deleted the oldest three directories.
Thus far I've been able to sort the directories, take the
last three but I can't seem to figure out how to delete the
actual directory; see attached build.xml for an example of
how far I've gotten.
-----Inline Attachment Follows-----
<project name="project-deletion" default="build">
<property name="base.dir"
value="/srv/jboss" />
<property name="module.name"
value="myProject" />
<target name="build">
<antcall target="clean"
/>
</target>
<target name="get-count">
<condition
property="should.clean">
<resourcecount
when="greater" count="8">
<fileset dir="${base.dir}">
<include
name="*-${module.name}/prefix.properties" />
</fileset>
</resourcecount>
</condition>
</target>
<target name="clean" depends="get-count"
if="should.clean">
<delete
includeemptydirs="true">
<first
count="3">
<sort>
<fileset dir="${base.dir}">
<include
name="*-${module.name}/*" />
</fileset>
<date
xmlns="antlib:org.apache.tools.ant.types.resources.comparators"
/>
</sort>
</first>
</delete>
</target>
</project>
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]
<project name="project-deletion" default="build">
<property name="base.dir" value="/srv/jboss" />
<property name="module.name" value="myProject" />
<dirset dir="${base.dir}" id="ds">
<patternset id="module.directories">
<include name="*-${module.name}" />
</patternset>
</dirset>
<target name="build">
<antcall target="clean" />
</target>
<target name="get-count">
<condition property="should.clean">
<resourcecount when="greater" count="8">
<dirset dir="${base.dir}">
<patternset refid="module.directories" />
</dirset>
</resourcecount>
</condition>
</target>
<target name="clean" depends="get-count" if="should.clean">
<delete includeemptydirs="true" quiet="false">
<first count="3">
<dirset dir="${base.dir}">
<patternset refid="module.directories" />
</dirset>
</first>
</delete>
</target>
</project>
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]