2013-02-07 29 views
7

Tôi đang cố gắng để làm cho kịch bản Ant của tôi lấy Composer cho tôi. Composer là một người quản lý phụ thuộc cho PHP. According to the doc một trong những nhu cầu để chạy lệnh này: "curl -s https://getcomposer.org/installer | php" mà sẽ tải Composer.phar vào thư mục tôi đang ở. Điều này hoạt động như dự định khi chạy từ một thiết bị đầu cuối.Làm cách nào để truy xuất Composer qua Ant?

Làm cách nào để thiết lập tệp xây dựng Ant cho điều này? Cho đến nay tôi đã có phân khúc này cho mục tiêu "composerget", nhưng nó không lưu tệp, chỉ xuất nó trong trình bao lệnh của tôi:

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

Bất kỳ trợ giúp nào được đánh giá cao.

+0

có thể trùng lặp của [Lệnh chạy với đường ống] [http://stackoverflow.com/questions/1187402/ant-run-command-with-pipes) – Mez

Trả lời

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> 

Nên thực hiện thủ thuật.

Chỉ có thể sử dụng đường ống (|) trong tập lệnh hệ vỏ. Bạn đang chuyển nó như một đối số để cuộn tròn. Vì vậy, bạn cần phải thực thi một kịch bản lệnh shell - mà bạn có thể làm với bash -c và truyền lệnh như là một câu lệnh shell.

Attribution.

+1

Cảm ơn. Tôi đã kết thúc bằng cách sử dụng "GET" của Ant, điều này cũng giống như vậy. https://ant.apache.org/manual/Tasks/get.html Vẫn đánh dấu điều này là được chấp nhận. – Coreus

+0

Điều này không an toàn vì nó không xác minh chữ ký của tập lệnh cài đặt trước khi thực thi nó. –

0

này sẽ tải bộ cài đặt Composer, xác minh chữ ký của nó, và chạy trình cài đặt:

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

Nếu bạn đang sử dụng GNU Make, đây là tương đương:

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 
Các vấn đề liên quan