2016-06-20 7 views
0

Ich versuche, ein Phing-Skript zu ändern und kann nicht sehen, was ich dachte, wäre ein offensichtliches Merkmal.Ending Ziel früh in Phing

Das Phing-Skript hat ein generisches Bestätigungsziel, das in verschiedenen Ausführungsstadien nach Eingaben sucht. Ich möchte das Skript automatisieren, damit es ohne Eingabe ausgeführt werden kann. Ich würde erwarten, in der Lage zu sein, indem Sie eine Art von <break> oder <end> Art Aufgabe in das Ziel einfügen, so dass es früh zurückkehrt. Die manual scheint solche Funktionalität nicht aufzuführen.

Ich weiß, dass ich dies erreichen kann, indem ich ein Zwischenziel erstelle, das zuerst das cmd-Linienargument überprüft und dann das Bestätigungsziel aufruft, aber gibt es einen eleganteren Weg?

Dies ist das Ziel, das automatisiert werden muss und von mehreren Orten aufgerufen wird. Der Auslöser zum Überspringen wäre eine Eigenschaft, die über die Befehlszeile -D eingestellt wird.

<!-- confirm a user action --> 
<target name="confirm"> 
    <input propertyname="confirm" validargs="yes,no"> 
     ${confirm.message} ('yes' to continue) 
    </input> 
    <if> 
     <not> 
      <equals arg1="${confirm}" arg2="yes" /> 
     </not> 
     <then> 
      <fail message="You didn't say 'yes'" /> 
     </then> 
    </if> 
</target> 

Antwort

1

Für den gleichen Zweck verwende ich diese tech:

<if> 
    <not> 
    <isset property="confirm" /> 
    </not> 
    <then> 
    <input propertyname="confirm" validargs="yes,no"> 
     ${confirm.message} ('yes' to continue) 
    </input> 
    <if> 
     <not> 
      <equals arg1="${confirm}" arg2="yes" /> 
     </not> 
     <then> 
      <fail message="You didn't say 'yes'" /> 
     </then> 
    </if> 
    </then> 
</if> 

dann Sie

phing build.xml -Dconfirm=yes 

ohne promt ausführen kann.