読者です 読者をやめる 読者になる 読者になる

rascutが動かないのでPHPで適当なスクリプトを書いてみた

rascutがすごい便利なんだけども、どうも自分の環境ではうまくファイルの更新を補足してくれないときが多いので自分で似たような感じの適当なスクリプトを書いてみた。

rascutが何なのか知らない人はこちらを参照。

こんな感じ

<?php
//autoc.php

// 環境に合わせて変更すべし
$cmd = 'fcWrapCl mxmlc';

//---

if(!$argv[1]) exit();
$cmd .= ' ' . $argv[1];

while(1){
    // 0.2秒
    usleep( 200000);
    
    clearstatcache();
    if( $date < filectime( $path) || $size != filesize( $path)){
        // 更新があれば、もしくはファイルのサイズが変わっていたら
        
        $date = filectime( $path);
        $size = filesize( $path);
        
        $process = proc_open( $cmd, array( array( 'pipe', 'r'), array( 'pipe', 'w'), array( 'pipe', 'w')), $pipes);

        echo "\n";
        echo stream_get_contents($pipes[1]);
        echo stream_get_contents($pipes[2]);
        
        fclose($pipes[0]);
        fclose($pipes[1]);
        fclose($pipes[2]);

        proc_close($process);
    }
}

機能は自動コンパイルのみです。
使うときはコマンドラインで実行します。こんな感じで。

php autoc.php c:\as\hoge.as

これで指定したソースファイルが更新するとコンパイルしてくれます。
usleep使ってるんでphp5以降でしか使えないです。
php4で使いたい場合はusleep( 200000);の行をsleep(1);に変えてやると使えるようになります。
このスクリプトだけだとfcshでコンパイルできないのでfcshラッパと組み合わせて使うべし。