I've got an NAnt <exec>
task. I want one argument presence to be conditional to some property being true
.
For example, I want the -c
command line argument of psExec to be conditional. It should be outputted only if ${pExec.copyprog == 'true'}
.
The following does not work:
<property name="psExec.copyprog" value="false" />
...
<exec program="${psExec.path}" failonerror="false">
...
<arg line="-c" if="${psExec.copyprog}==true" />
</exec>
It yields the following error:
'false==true' is not a valid value for attribute 'if' of <arg ... />.
Cannot resolve 'false==true' to boolean value.
String was not recognized as a valid Boolean.
How can I achieve this?
Properties in NAnt are tricky since they don't have a type and simply are considered as of type string
. So this would be the solution:
<exec program="${psExec.path}" failonerror="false">
<!-- ... -->
<arg line="-c" if="${bool::parse(psExec.copyprog)}" />
</exec>
Update: Mea culpa! I was wrong. if="${psExec.copyprog}"
does also work. So there is some sort of property typing.
You'd need to put ==true
inside {}
, but you can also just skip it:
<arg line="-c" if="${psExec.copyprog}" />
Comparing a true
boolean expression to true
does not change the result.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With