<file> のタスク

<file> のタスク – 特化したファイルインストールおよびファイル操作

ファイルのインストールをカスタマイズするためにタスクを使用する

タスクにより、柔軟でカスタマイズ可能なファイル操作や複雑な インストール処理が可能となります (そのため、"tasks" という 名前になっています)。デフォルトでは、PEAR には 4 つのタスクがあります。 しかし、PEAR/Tasks ディレクトリに既存のタスクと同様の規約に従った ファイルを追加することで、簡単にタスクを追加することが可能です。 このページでは独自のタスクを作成する方法については説明しません。 package.xml 内でタスクを使用する方法についてのみ説明します。

PEAR とともに配布されているのは、3 つの基本的なタスクと 1 つの 複雑なタスクです。基本的なタスクは "replace"、"windowseol" および "unixeol" で、複雑なタスクが "postinstallscript" となります。 "replace" は、package.xml 1.0 の古いタグ <replace> とほぼ同じもので、ファイルの中身についてテキストの置換を行います。 "windowseol" および "unixeol" は、 DOS のバッチファイル (.bat) や Unix のシェルスクリプトなどのファイルの 行末コードを適切に操作します。 "postinstallscript" により、更なるインストール関数を 実行するためのスクリプトを動作させることを選択可能です。

<tasks:replace> - ファイルの内容をカスタマイズする

replace タスクには、3 つの必須属性があります。

  1. type - これは package-info あるいは pear-config のいずれかである必要があります。package-info の場合は package.xml 自身から取得した情報をもとに置換を行い、 pear-config の場合は設定変数 (

    pear config-show

    で表示されるもの) の値をもとに置換を行います。

  2. from - 変換元となるテキストです。 通常のテキストと区別するため、これは伝統的に "@" で囲まれ、例えば from="@version@" のようになります。

  3. to - "from" が現れた際に変換するために 使用する抽象項目。package-info の場合に変換候補として指定可能なのは、 以下のいずれかです。api-state、api-version、channel、 date、description、license、license-uri、name、notes、release_date、release-license、release_notes、 state、summary、time、version そしてパッケージによっては extends、providesextension、srcpackage および srcuri。

package-info 型の置換はパッケージの作成時に行われることに注意しましょう。 そのため、.tgz/.tar リリースの中には置換後のファイルが含められます。 pear-config 型の置換はインストールシステムによってのみ行われ、 インストールの際に実行されます。

<tasks:windowseol> - 行末を \r\n に変換する

このタスクは、Windows 固有のファイル (DOS のバッチファイルなど) を 非 Windows 環境 (たとえば行末を \n に変換してしまう Unix など) で 作成することを可能にします。このタスクは、インストール時だけでなく パッケージ作成時にも実行されることに注意しましょう。そのため、 .tgz/.tar リリースの中には正しい行末のファイルが含まれます。

<tasks:unixeol> - 行末を \n に変換する

このタスクは、Unix 固有のファイル (シェルスクリプトなど) を 非 Unix 環境 (たとえば行末を \r\n に変換してしまう Windows など) で 作成することを可能にします。このタスクは、インストール時だけでなく パッケージ作成時にも実行されることに注意しましょう。そのため、 .tgz/.tar リリースの中には正しい行末のファイルが含まれます。

<tasks:postinstallscript> - 究極のカスタマイズ

postinstallscript タスクは、参照しているファイルが インストール後に実行するスクリプトであることを インストーラに通知します。

セキュリティ上の理由により、このスクリプトはユーザによって 手動で実行させなければなりません。そのため、インストーラは このタスクをその他のタスクとは別の特別なコードで管理します。

<postinstallscript> タグでは、インストーラがユーザからの入力を 取得するために使用するパラメータを定義しています。 Web インストーラおよびコマンドラインインストーラの両方をサポートするには、 すべての入力を PEAR で処理し、インストール後スクリプトに所定の形式で 渡す必要があります。あなたがしなければならないことは、 <postinstallscript> タグの内部で使用するパラメータを定義することだけです。

パラメータつきの単純なインストール後スクリプトを表す xml は、 このようになります。

<tasks:postinstallscript>
 <paramgroup>
  <id>first</id>
  <param>
   <name>test</name>
   <prompt>Testing Thingy</prompt>
   <type>string</type>
  </param>
 </paramgroup>
</tasks:postinstallscript>

この段階では、"string" 型のみがサポートされることに注意しましょう。 その他の型もいずれサポートされる予定です。 次に、より複雑な例を示します。

<tasks:postinstallscript>
 <paramgroup>
  <id>first</id>
  <param>
   <name>test</name>
   <prompt>Testing Thingy</prompt>
   <type>string</type>
   <default>hi</default>
  </param>
  <param>
   <name>test2</name>
   <prompt>Testing Thingy 2</prompt>
   <type>string</type>
  </param>
 </paramgroup>
 <paramgroup>
  <id>second</id>
  <name>first::test</name>
  <conditiontype>preg_match</conditiontype>
  <value>g+</value>
  <param>
   <name>test</name>
   <prompt>Testing Thingy a</prompt>
   <type>string</type>
   <default>hi</default>
  </param>
  <param>
   <name>test2</name>
   <prompt>Testing Thingy b</prompt>
   <type>string</type>
  </param>
 </paramgroup>
</tasks:postinstallscript>

このスクリプトには 2 つのパラメータグループがあります。まず最初の グループが処理された後に、2 番目のグループが処理されます (自然な 流れです)。しかし、ここでは 2 番目のグループは条件付きの パラメータグループとなっています。これは、前のパラメータグループでの ユーザの入力を検証し、それが条件を満たす場合にのみプロンプトを 表示します。条件は、3 つのタグ <tasks:name>、<tasks:conditiontype> および <tasks:value> で指定します。3 つのタグはすべて必須であり、 ひとつでも欠けていると xml の妥当性検証に失敗することに注意しましょう。

<tasks:name> は、前のパラメータグループのパラメータ名です。書式は グループ ID::パラメータ名 のようになります。つまり、上の例の "first::test" は、<tasks:paramgroup> first の <tasks:param> test のことを指します。

<tasks:conditiontype> は、<tasks:name> で指定したパラメータの値を どのように処理するかを定義します。"="、"!=" あるいは "preg_match" のいずれかとなります。

  • =: これは (明らかに) パラメータの値が <tasks:value> タグと 等しいかどうかを調べます。

  • !=: これは (明らかに) パラメータの値が <tasks:value> タグと 等しくないかどうかを調べます。

  • preg_match: これは、<tasks:value> タグの内容を、 preg_match() 関数の / および / の間の値として使用します。正規表現には、両端の // を 「含めないでください」。2 番目の <tasks:paramgroup> において、 値 "g+" は以下のように扱われます。

    <?php
    preg_match
    ('/g+/'first::test value)
    ?>
<contents> タグ内のファイルを記述する (Previous) <compatible> で、バージョンの制限を緩和する (Next)
Last updated: Tue, 25 Nov 2014 — Download Documentation
Do you think that something on this page is wrong? Please file a bug report or add a note.
View this page in:

User Notes:

There are no user contributed notes for this page.