See http://people.apache.org/~mbenson/sharedfiles/deldirs.xml for a working example.
-Matt --- On Fri, 3/27/09, Michael Delaney <[email protected]> wrote: > From: Michael Delaney <[email protected]> > Subject: Re: Delete N directories that match a regexp > To: "Ant Users List" <[email protected]> > Date: Friday, March 27, 2009, 3:25 PM > 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] > > > > > -----Inline Attachment Follows----- > > <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] --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
