色つきで結果を表示するrsyncスクリプト

「コンソールで色つきを表示するPEARやその他の方法」d:id:maru_cc:20080218:1203344325 の続き。
せっかく色を付けられるようになったのでなんか作ってみた。


rsyncで結果に色を付けるphpスクリプト。
実行結果はこんな感じ。

削除対処は赤字で、同期対象は緑の文字にしてみました。


ソース

#!/usr/local/bin/php
<?php
$cmd = 'rsync';
for ($i=1;$i<$argc;$i++) {
  $cmd.= ' ' . $argv[$i];
}

$sync = shell_exec($cmd);
$lines = '';
foreach (split("\n", $sync) as $val) {
  $line = htmlspecialchars($val);
  if (preg_match('/^(receiving|wrote|total size is|deleting|building|sent) .*/i', $line, $matches)) {
    switch ($matches[1]) {
    case "deleting":
      $lines.= "\033[1;31m";
      break;
    default:
      $lines.= "";
    }
  } elseif(strlen($line)){
    $lines.= "\033[1;32m";
  }
  $lines.= "{$line}\033[0m\n";
}
echo $lines;

もっとスマートに出来るはずだけど、とりあえず。


それに、phpが入ってない環境の方が多いから、シェルバッチにしてみようかな。