2013-02-07 7 views
7

Sto cercando di ottenere che il mio script Ant recuperi Composer per me. Composer è un gestore di dipendenze per PHP. According to the doc è necessario eseguire questo comando: "curl -s https://getcomposer.org/installer | php" che scaricherà Composer.phar nella directory in cui mi trovo. Funziona come previsto quando si esegue da un terminale.Come posso recuperare Composer tramite Ant?

Come si installa il file di build Ant per questo? Finora ho ottenuto questo segmento per il target "composerget", ma è non salva il file, solo l'output nel mio shell dei comandi:

....  
<target name="composerget" description="Composer update dependencies"> 
    <exec executable="curl"> 
     <arg line="-s" /> 
      <arg line="https://getcomposer.org/installer"/> 
     <arg line="| php" /> 
    </exec> 
    </target> 
.... 

Ogni aiuto è molto appeciated.

+0

possibile duplicazione di [comando Ant run con pipe] (http://stackoverflow.com/questions/1187402/ant-run-command-with-pipes) – Mez

risposta

8
<target name="composerget" description="Composer update dependencies"> 
    <exec executable="/bin/bash"> 
     <arg value="-c" /> 
     <arg value="curl -s https://getcomposer.org/installer | php" /> 
    </exec> 
</target> 

Dovrebbe fare il trucco.

La pipe (|) può essere utilizzata solo in uno script di shell. Lo stai passando come argomento per arricciare. Quindi è necessario eseguire uno script di shell, che è possibile eseguire con bash -c e passare il comando come un'istruzione shell.

Attribution.

+1

Grazie. Ho finito per usare "GET" di Ant, che fa lo stesso apparentemente. https://ant.apache.org/manual/Tasks/get.html Contrassegnalo comunque come accettato. – Coreus

+0

Questo non è sicuro perché non verifica la firma dello script di installazione prima di eseguirlo. –

0

Questo scaricherà il programma di installazione Compositore, verificare la sua firma, ed eseguire il programma di installazione:

<target name="composer" description="Install composer"> 
     <exec executable="wget"> 
      <arg value="-O" /> 
      <arg value="composer-setup.sig" /> 
      <arg value="https://composer.github.io/installer.sig" /> 
     </exec> 
     <exec executable="wget"> 
      <arg value="-O" /> 
      <arg value="composer-setup.php" /> 
      <arg value="https://getcomposer.org/installer" /> 
     </exec> 
     <exec executable="bash"> 
      <arg value="-c" /> 
      <arg value="awk '{print $$0 &quot; composer-setup.php&quot;}' composer-setup.sig | sha384sum --check" /> 
     </exec> 
     <exec executable="php"> 
      <arg value="composer-setup.php" /> 
     </exec> 
     <exec executable="rm"> 
      <arg value="composer-setup.php" /> 
     </exec> 
     <exec executable="rm"> 
      <arg value="composer-setup.sig" /> 
     </exec> 
     <exec executable="mv"> 
      <arg value="composer.phar" /> 
      <arg value="composer" /> 
     </exec> 
    </target> 

Se si utilizza GNU Make, questo è l'equivalente:

all: vendor 

vendor: composer composer.json composer.lock 
     ./composer install 

composer: 
     wget -O composer-setup.sig https://composer.github.io/installer.sig 
     wget -O composer-setup.php https://getcomposer.org/installer 
     awk '{print $$0 " composer-setup.php"}' composer-setup.sig | sha384sum --check 
     php composer-setup.php --quiet 
     rm composer-setup.* 
     mv composer.phar composer