Oh, right, it's all coming back to me! You taught me that trick a couple of years back on this list. I hadn't thought of that as a solution to my current problem but you're right, it would work for that, too.

Excellent! These 'tricks' make Ant conditional processing much more palateable than having to set a property so that you can set another property so that you can invoke or bypass another target just to display a message. Why aren't these tricks documented in the manual? There should really be a section for techniques like this....

Rhino

----- Original Message ----- From: <[EMAIL PROTECTED]>
To: <[email protected]>
Sent: Wednesday, December 21, 2005 1:05 AM
Subject: AW: Testing multiple values?


Another trick is using
 <antcall target="handle${script1.result}">
and provide a couple of targets.


Jan

-----Ursprüngliche Nachricht-----
Von: Rhino [mailto:[EMAIL PROTECTED]
Gesendet: Mittwoch, 21. Dezember 2005 00:07
An: Ant Users List
Betreff: Re: Testing multiple values?

Wow, that's remarkably easy and straightforward, which is not
what I expect from Ant when it comes to conditions :-)

I'll give this a try and post back if it doesn't work properly.

Thank you!!

Rhino

----- Original Message -----
From: "Ondrej Svetlik" <[EMAIL PROTECTED]>
To: "Ant Users List" <[email protected]>
Sent: Tuesday, December 20, 2005 4:52 PM
Subject: Re: Testing multiple values?


Well, how about

<exec />
<fail message="Script1 failed. See Script1.out.">
<condition>
<equals arg1="${script1.result}" arg2="1" />
</condition>
</fail>

<fail message="WinSCP3 environment not initialized. Please
click on the
keyfile and supply the passphrase.">
<condition>
<equals arg1="${script1.result}" arg2="-1073741819" />
</condition>
</fail>

Best regards,

Ondrej Svetlik

Rhino wrote:
How do I handle three different possible values from an
'exec' task when
I want one value to be ignored and each of the other two
values to invoke
different targets?

I have an exec task that has the parameter
resultproperty="script1.result". The value of
script1.result can be: 0
(indicates that the script worked fine without errors); 1
(indicates that
the script ran but had errors); or -1073741819 (indicates that the
WinSCP3 environment was not initialized properly; basically, the
passphrase hadn't yet been entered so that WinSCP3 could verify the
login).

When script.result is 0, I want to move on to the next
target within my
build. When script.result is 1, I want to fail with the
error message
("Script1 failed. See Script1.out."). When script1.result is
-1073741819, I want to fail with the error message
("WinSCP3 environment
not initialized. Please click on the keyfile and supply the
passphrase.")

My script currently handles the 0 and 1 conditions just
fine but I don't
know how to change my code to handle the third value for
script1.result.
Here is what I have so far:

<target name="upload-Tonge" description="Upload to the
Tonge server.">

<echo message="Uploading to Tonge...."/>

<!--echoproperties prefix="server"/-->

<exec executable="${WinSCP3.com}" os="Windows XP"
output="${script1.out}"
error="${script1.err}"

resultproperty="script1.result"

description="Run a trivial script that doesn't change
anything, just to
show that everything works.">

<arg line="/console /script=${script1.in}"/>

</exec>



</target>

<target name="check-Script1" depends="upload-Tonge"
description="See if
Script1 worked.">

<echo message="Check script1 result"/>

<condition property="script1.failed">

<equals arg1="${script1.result}" arg2="1"/>

</condition>

<echo message="script1.result=${script1.result}"/>

<antcall target="upload-Tonge-Script1-errors"/>

</target>

<target name="upload-Tonge-Script1-errors" if="script1.failed">

<fail message="Oops, script ${script1.name} failed on Tonge
server. See
${script1.out} and ${script1.err}."/>

</target>



<target name="upload-Tonge-Script2-errors" if="script2.failed">

<fail message="Oops, script ${script2.name} failed on Tonge
server. See
${script2.out} and/or ${script2.err}."/>

</target>


Do I need a different condition task to handle the
-1073741819 value for
script1.result? If yes, don't I have to worry about the
'upload-Bongo'
task executing twice? Or can I modify the existing
condition task to
invoke two different targets based on the non-zero value of
script.result, one target for script1.result = 1 and a
different target
for script1.result = -1073741819?

Or do I need to change the script more radically and do
things a whole
different way?

I'd prefer to stay with core tasks if at all possible.

Rhino




---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]


--
No virus found in this incoming message.
Checked by AVG Free Edition.
Version: 7.1.371 / Virus Database: 267.14.1/207 - Release
Date: 19/12/2005





--
No virus found in this outgoing message.
Checked by AVG Free Edition.
Version: 7.1.371 / Virus Database: 267.14.1/207 - Release
Date: 19/12/2005


---------------------------------------------------------------------
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]


--
No virus found in this incoming message.
Checked by AVG Free Edition.
Version: 7.1.371 / Virus Database: 267.14.1/207 - Release Date: 19/12/2005




--
No virus found in this outgoing message.
Checked by AVG Free Edition.
Version: 7.1.371 / Virus Database: 267.14.2/208 - Release Date: 20/12/2005


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to