[prev in list] [next in list] [prev in thread] [next in thread] 

List:       ant-user
Subject:    RE: Resource collections - Linux vs. windows
From:       "Kimpton, C (Chris)" <Chris.Kimpton () rabobank ! com>
Date:       2014-02-12 10:26:48
Message-ID: 9BD67E5C356C014D8D34B9AF35C1AE1C18AB235F () rabobank ! com
[Download RAW message or body]

Ok - got it working. Below is the test script.  Finally worked out to do it from your \
old posts about this from 2009 :)

Many Thanks.

<?xml version="1.0" encoding="UTF-8"?>
<project name="resource-collection-delete-sample" default="tryit">

    <property name="test-dir" value="${basedir}/testdata"/>

    <target name="setup-files">
        <delete dir="${test-dir}"/>
        <mkdir dir="${test-dir}"/>
        <mkdir dir="${test-dir}/xxfile1"/>
        <mkdir dir="${test-dir}/012"/>
        <mkdir dir="${test-dir}/011"/>
        <mkdir dir="${test-dir}/1"/>
        <touch file="${test-dir}/1/test"/>
        <sleep milliseconds="100" />
        <mkdir dir="${test-dir}/2"/>
        <touch file="${test-dir}/2/test"/>
        <sleep milliseconds="100" />
        <mkdir dir="${test-dir}/3"/>
        <touch file="${test-dir}/3/test"/>
        <sleep milliseconds="100" />
        <mkdir dir="${test-dir}/4"/>
        <touch file="${test-dir}/4/test"/>
        <sleep milliseconds="100" />
        <mkdir dir="${test-dir}/5"/>
        <touch file="${test-dir}/5/test"/>
        <sleep milliseconds="100" />
        <mkdir dir="${test-dir}/6"/>
        <touch file="${test-dir}/6/test"/>
        <sleep milliseconds="100" />
        <touch file="${test-dir}/44" />
        <sleep milliseconds="100" />
        <!-- create some files -->
    </target>

    <macrodef name="delete-dir-pattern">
        <attribute name="dir"/>
        <attribute name="regex"/>
        <sequential>
            <resources id="resource-all-dirs">
                <dirset dir="@{dir}" >
                    <filename regex="@{regex}" />
                </dirset>
            </resources>
            <resources id="resource-last-3-dirs">
                <last count="3">
                    <sort>
                        <dirset dir="@{dir}" >
                            <filename regex="@{regex}" />
                        </dirset>
                        <date />
                    </sort>
                </last>
            </resources>

            <pathconvert property="dirs-to-delete" pathsep=",">
                <difference>
                    <resources refid="resource-all-dirs"/>
                    <resources refid="resource-last-3-dirs" />
                </difference>
                <regexpmapper from="(^.*$)" to="\1\${file.separator}**" />
            </pathconvert>

            <echo message="To delete:${dirs-to-delete}"/>

            <delete verbose="true">
                <files includes="${dirs-to-delete}"/>
            </delete>
        </sequential>
    </macrodef>

    <target name="delete-files">
        <!-- delete all but last few old release directories -->
        <delete-dir-pattern dir="${test-dir}" regex="^\d+$"/>
    </target>

    <target name="tryit" depends="setup-files, delete-files">
    </target>


</project>


-----Original Message-----
From: Matt Benson [mailto:gudnabrsam@gmail.com] 
Sent: 11 February 2014 15:43
To: Ant Users List
Subject: Re: Resource collections - Linux vs. windows

Yeah, I have a feeling you are running into some problem having to do with non-empty \
subdirectories.  Usually some creative sorting, etc., can help.  The delete task \
should know how to handle this with filesets; I believe its page in the manual \
mentions this very problem. Therefore you might try using the pathconvert task to \
create a list of includes for a fileset and pass *that* to the delete task. Keep us \
updated on your progress.

Matt


On Tue, Feb 11, 2014 at 9:30 AM, Kimpton, C (Chris) < Chris.Kimpton@rabobank.com> \
wrote:

> Good idea.
> 
> It initially worked ok, when the directories were empty, but when I 
> added files to each (touch steps below), that caused the script to not 
> delete any files.
> 
> And now I see that it does not work on Windows either ...  my tests 
> used empty directories.
> 
> Does this sound like a bug or am I missing some subtlety around 
> resource collections/dirset and non-empty subdirectories...
> 
> Thanks in advance.
> 
> Here is my test file:
> 
> 
> <?xml version="1.0" encoding="UTF-8"?> <project 
> name="resource-collection-delete-sample" default="tryit">
> 
> <property name="test-dir" value="${basedir}/testdata"/>
> 
> <target name="setup-files">
> <delete dir="${test-dir}"/>
> <mkdir dir="${test-dir}"/>
> <mkdir dir="${test-dir}/xxfile1"/>
> <mkdir dir="${test-dir}/1"/>
> <touch file="${test-dir}/1/test"/>
> <sleep milliseconds="100" />
> <mkdir dir="${test-dir}/2"/>
> <touch file="${test-dir}/2/test"/>
> <sleep milliseconds="100" />
> <mkdir dir="${test-dir}/3"/>
> <touch file="${test-dir}/3/test"/>
> <sleep milliseconds="100" />
> <mkdir dir="${test-dir}/4"/>
> <touch file="${test-dir}/4/test"/>
> <sleep milliseconds="100" />
> <mkdir dir="${test-dir}/5"/>
> <touch file="${test-dir}/5/test"/>
> <sleep milliseconds="100" />
> <mkdir dir="${test-dir}/6"/>
> <touch file="${test-dir}/6/test"/>
> <sleep milliseconds="100" />
> <touch file="${test-dir}/44" />
> <sleep milliseconds="100" />
> <!-- create some files -->
> </target>
> 
> <target name="delete-files">
> <!-- delete all but last few old release directories -->
> <resources id="resource-all-dirs">
> <dirset dir="${test-dir}" >
> <filename regex="^\d+$" />
> </dirset>
> </resources>
> <resources id="resource-last-3-dirs">
> <last count="3">
> <sort>
> <dirset dir="${test-dir}" >
> <filename regex="^\d+$" />
> </dirset>
> <date />
> </sort>
> </last>
> </resources>
> <delete verbose="true">
> <difference>
> <resources refid="resource-all-dirs"/>
> <resources refid="resource-last-3-dirs" />
> </difference>
> </delete>
> </target>
> 
> <target name="tryit" depends="setup-files, delete-files">
> </target>
> 
> </project>
> 
> 
> 
> 
> -----Original Message-----
> From: Matt Benson [mailto:gudnabrsam@gmail.com]
> Sent: 11 February 2014 14:15
> To: Ant Users List
> Subject: Re: Resource collections - Linux vs. windows
> 
> Can you expand your example into a self-contained example that builds 
> up an appropriate structure first, then still fails on Linux?
> 
> Matt
> 
> 
> On Tue, Feb 11, 2014 at 2:21 AM, Kimpton, C (Chris) < 
> Chris.Kimpton@rabobank.com> wrote:
> 
> > Hi,
> > 
> > I have a target that is trying to delete some directories, all but 
> > the last few.  It works as expected (I believe - it deletes files 
> > when
> > expected) on my dev box (windows), but is not deleting anything on 
> > the build server (Linux):
> > 
> > It builds up 2 resource collections - one for all directories and 
> > one for the last few and then does a delete based on the difference.
> > 
> > <resources id="resource-all-dirs">
> > <dirset dir="${release-base-dir}" >
> > <filename regex="^\d+$" />
> > </dirset>
> > </resources>
> > 
> > <resources id="resource-last-3-dirs">
> > <last count="4">
> > <sort>
> > <dirset dir="${release-base-dir}" >
> > <filename regex="^\d+$" />
> > </dirset>
> > <date />
> > </sort>
> > </last>
> > </resources>
> > 
> > <delete verbose="true">
> > <difference>
> > <resources refid="resource-all-dirs"/>
> > <resources refid="resource-last-3-dirs" />
> > </difference>
> > </delete>
> > 
> > I have tried running with debug and/or verbose but that does not 
> > seem to add anything.  Using version 1.9.3.
> > 
> > Any tips on how to track down the issue?
> > 
> > Cheers,
> > Chris
> > 
> > _____________________________________________________________
> > 
> > This email (including any attachments to it) is confidential, 
> > legally privileged, subject to copyright and is sent for the 
> > personal attention of the intended recipient only. If you have 
> > received this email in error, please advise us immediately and 
> > delete it. You are notified that disclosing, copying, distributing 
> > or taking any action in reliance on the contents of this information 
> > is strictly prohibited. Although we have taken reasonable 
> > precautions to ensure no viruses are present in this email, we 
> > cannot accept responsibility for any loss or damage arising from the 
> > viruses in this email or attachments. We exclude any liability for 
> > the content of this email, or for the consequences of any actions 
> > taken on the basis of the information provided in this email or its 
> > attachments, unless that
> information is subsequently confirmed in writing.
> > _____________________________________________________________
> > 
> 
> ---------------------------------------------------------------------
> 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


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic