0

Phingビルドファイルで、外部プログラム(この場合)を呼び出したいのですlesscが、スクリプトが実行されているシステムによっては、プログラムが別の場所にある場合があります。

これは私が現在行っていることです。それは機能しますが、私にはにおいがします:

<property name="lessc" value="/usr/bin/lessc" override="true" />

<if>
  <not>
    <available file="${lessc}" />
  </not>
  <then>
    <fail msg="Could not find LESS compiler at ${lessc}." />
  </then>
</if>

<exec command="${lessc} ..." />

ユーザーが自分のシステムpropertyの代替パスを指定できるようにを使用していますが、スクリプトがegまたはを介して実行可能ファイルの場所を自動的に判別できる場合は、これを使用することをお勧めします。lesschashwhich

これはPhingで行うことができますか?

4

3 に答える 3

1

先日、SeanCoatesのブログでUse`env`に出くわしました。これは、非常によく似た問題を扱っています。彼の場合、PHPがさまざまな場所にインストールされていたため、さまざまなシステムでCLIを介して実行するとPHPスクリプトが失敗することがわかりました。

彼の解決策は、#!/path/to/phpヘッダーを。に置き換えることでした#!/usr/bin/env phpenvは(おそらく)常ににあるため、必要な構成は、CLIスクリプトを実行しているユーザーに対して/usr/bin/envPHPバイナリがオンになっていることを確認することだけです。$PATHサーバー固有のコード変更は必要ありません!

さて、これは私に考えさせました。

ビルドファイルを次のように変更しましたが、すべてが正常に機能しています。

<property name="env" value="/usr/bin/env" override="true" />

<if>
  <not>
    <available file="${env}" />
  </not>
  <then>
    <fail msg="Unable to locate env executable at ${env}." />
  </then>
</if>

<exec command="${env} lessc ..." />
于 2012-05-25T18:56:32.217 に答える
0

私にとってはカスタムタスクのようなにおいがします。

于 2012-04-13T06:58:36.813 に答える
0

これと同じ問題が発生し、条件のように機能するカスタム条件を作成することになりましたavailable。which / where(Windowsの場合)を使用して、PATH内の場所を検索します。

ここから入手できます: https ://gist.github.com/dig412/5057536

于 2013-02-28T15:30:13.313 に答える