2014-05-24 63 views
0

我寫在Phing構建腳本,並檢查文件類型的存在,想有一個,如果該目錄中的測試具有特定擴展名的文件是否存在陳述(在這種情況下.sql文件) 。我曾嘗試與<available>要做到這一點,如下圖所示,沒有運氣(在<then>永遠不會被執行。任何人有任何想法?在phing

<if> 
    <available file="${build.pendingsql}/*" type="file" extension="sql" /> 
    <then> 

     <!-- Do stuff --> 

    </then> 
</if> 

回答

0

我的Mac上我最終使用下列內容:

<!-- Are there sql files in pending --> 
<exec checkreturn="false" dir="${build.pendingsql}" command="ls *.sql" outputProperty="list"/> 
<echo msg="${list}"/> 
<if> 
    <equals arg1="${list}" arg2="ls: *.sql: No such file or directory" /> 
    <then> 
     <echo msg="No SQL patches found"/> 
    </then> 
    <else> 
     <echo msg="SQL patches found"/> 
    </else> 
</if> 

主要從張貼Bolek解決方案的變化是檢查返回值必須爲false,以便將ls退出> 0並將equals測試更改爲「ls:* .sql:No such file or directory」。我意識到這是一個有點冒險,可能會打破(基於語言/系統輸出不同的「沒有這樣的」消息),但它適用於我。

1

你可以做這樣的事情(它調整到您的具體需求,LS運行在當前drectory):

<?xml version="1.0" encoding="UTF-8"?> 
<project name="test" default="check"> 
    <target name="check"> 
     <exec checkreturn="true" command="ls *.sql" outputProperty="list"/> 
     <if> 
      <equals arg1="${list}" arg2="" /> 
      <then> 
       <echo msg="not found"/> 
      </then> 
      <else> 
       <echo msg="found ${list}"/> 
      </else> 
     </if> 
    </target> 
</project> 
+0

不幸的是LS * .SQL不返回 「」 更糟的是,在Mac上退出> 0。非常感謝,你把我放在正確的道路上...... – AndrewD