2013-02-07 14 views
7

Próbuję zrobić, aby mój skrypt Ant odzyskał dla mnie Kompozytora. Composer jest menedżerem zależności dla PHP. According to the doc należy uruchomić to polecenie: "curl -s https://getcomposer.org/installer | php", który spowoduje pobranie pliku Composer.phar do katalogu, w którym się znajduję. Działa to zgodnie z przeznaczeniem podczas uruchamiania z terminala.Jak mogę odzyskać kompozytora za pośrednictwem Ant?

Jak skonfigurować plik budowy Ant do tego? Do tej pory mam ten segment dla „composerget” target, ale to nie zapisać plik, tylko wyjście w moim powłoki poleceń:

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

Każda pomoc jest znacznie appeciated.

+0

możliwy duplikat polecenia [Uruchom polecenie Ant z rurami] (http://stackoverflow.com/questions/1187402/ant-run-command-with-pipes) – Mez

Odpowiedz

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> 

Powinien załatwić sprawę.

Rura (|) może być używana tylko w skrypcie powłoki. Podajesz to jako argument do zawijania. Musisz więc wykonać skrypt powłoki, który możesz wykonać za pomocą bash -c i przekazując komendę jako instrukcję powłoki.

Attribution.

+1

Dzięki. Skończyło się na użyciu "GET" Anta, co najwyraźniej robi to samo. https://ant.apache.org/manual/Tasks/get.html Oznaczanie tego jako zaakceptowane. – Coreus

+0

To nie jest bezpieczne, ponieważ nie sprawdza podpisu skryptu instalacyjnego przed jego wykonaniem. –

0

To będzie pobrać instalator kompozytor, zweryfikować swój podpis i uruchom instalator:

<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> 

Jeśli używasz GNU make, to jest równoważne:

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 
Powiązane problemy