Yes!, console output!.
Too much information (for logging and debugging could be useful) but for normal usage is too much information.
I was thinking something closer to:
based on XML:
...
<item display='Adding users and groups...'>
<addgroup
groupname='Cowboy Bebop'
comment="It's them bounty hunters!"
/>
<adduser
username='Spike'
password='swordfish'
groups='Administrators "Cowboy Bebop"'
fullname='Spike Spiegel'
comment="Don't mess with the best!"
/>
<adduser
username='Jet'
password='hammerhead'
groups='"Cowboy Bebop"'
fullname='Jet Black'
comment="When the Black Dog bites, he don't let go!"
/>
</item>
...
Generate this filtered output:
XPlode4
Adding users and groups... [33%]
Adding user Jet...
....
Adding users and groups.... done.
....
Copying files to build directory... [45%]
Main executables....
....
Copying files to build directory... [66%]
Global runtimes....
....
So in that way, you mimic the <item display=''> for Line1 and the display for execute or other sub-items actions.
The conditional part:
Lets say I wanted to include other XML with items definitions if env variable "CLEAN" is defined, no matter what value it have.
Later, we could define "VERSION_TAG" on command line or env. and use it as paramenter of execute action, and only perform the item actions if VERSION_TAG is defined, in case it didn't exist, ignore the actions.
Simple conditional? I think the tags affected could be include and item, the actions on each item didn't need that.
Example:
<items>
<include file='#XPLODE#\cleanup.xml' condition='#CLEANUP#' />
<item display="test1">
<FileIO display="copy files...">
<copy from="&SrcDir;" to="&DstDir;" mask="*.cab" />
</FileIO>
</item>
</items>
Hope this helps.
Cya,
Zero
PS: The <!ENTITY> tag of your xplode4 xml will not validate, isn't well-formed. Maybe a change on it to be valid?