2013-01-18 85 views
7

Il mio obiettivo è riempire la proprietà con l'output del comando "git describe". Ho un immobile:Come assegnare l'output di exec a una proprietà in NAnt

<property name="build.version" value = ""/> 

E voglio riempirlo con output del seguente comando: git descrivono

ho provato:

<exec program='${git.executable}' outputproperty='build.version'> 
    <arg value='describe' /> 
</exec> 

ma a differenza del Formica, NAnt non supporta outputproperty :(solo output (su file).

risposta

8

Hai ragione. Hai l'attributo resultproperty per contenere il codice di uscita e l'attributo output per reindirizzare l'output.

Perché non reindirizzare l'output e caricare il file in seguito tramite loadfile compito:

<target name="foo"> 
    <property 
    name="git.output.file" 
    value="C:\foo.txt" /> 
    <exec program="${git.executable}" output="${git.output.file}"> 
    <arg value="describe" /> 
    </exec> 
    <loadfile 
    file="${git.output.file}" 
    property="git.output" /> 
</target> 
+2

Grazie, ho fatto esattamente lo stesso già. Stavo cercando una soluzione senza file temporanei :( – Nagg

+1

Quando faccio questo, ricevo un ritorno a capo nel file, che poi viene trasformato in ' ' Qualche idea? –

3

Utilizzando assetto, si può sbarazzarsi del carattere di ritorno a capo alla fine. Ad esempio, nell'esempio sopra, aggiungi una linea alla fine per tagliare la stringa

<target name="foo"> 
    <property 
    name="git.output.file" 
    value="C:\foo.txt" /> 
    <exec program="${git.executable}" output="${git.output.file}"> 
    <arg value="describe" /> 
    </exec> 
    <loadfile 
    file="${git.output.file}" 
    property="git.output" /> 

    <property name="git.ouput.trimmed" value="${string::trim(git.output)}" /> 

</target>