(仮)


20180315 ( 木曜日 )

[長年日記]

_ cocoaDialog

Automatorでrsyncするアプリの進行度が知りたいなー、と思ってプログレスバーが表示できるようにしてみた。と言ってもcocoaDialogというのがあって、shell scriptから呼び出せるものが公開されている。これにrsyncの出力を流してやれば良い感じにバーを出してくれる。ただ形式として数字(スペース)文字列みたいな感じで渡してやらないとバーは動いてくれない。最初の数字はバーの進行度で、50ならバーが半分くらいまで進んだ表示になる。

rsyncで全体の進行度を表示するには--info=progress2のオプションが必要だけど、macのrsyncは2.6とかなので対応してなかったのでhomebrewで3.1系を入れた。

/usr/local/bin/rsync -avh --info=progress2 --delete "ソース" "ターゲット" \
 |while read line; do
    echo ${line} | awk '/%/{sub("%","");print $3 "   " $3"% working" "    " $2 "   " $4 "   " $5 "   " $6 "   " $7}fflush()' >&3
  done

こんな感じのをcocoaDialogにパイプとかで渡せば良い感じ。awkとか大分悩んだけど。

と、思った通りの表示ができて満足してたのだが、Automatorアプリが実行中にメニューバーでくるくる回ってる歯車をクリックすると実行度が%と円グラフみたいので表示されてる事に今日気が付いた・・・しかもrsyncの進行度と大体あってるという・・・。 追記: %はAutomatorアプリがどのくらい進行したかであって、rsyncの進行度とは関係なかった。単にshell scriptの上から3割くらいの所にrsyncの行があって、30%になってただけだった・・・。

・・・。

あと--deleteって怖いねー。一回スクリプト内でソースとターゲットの変数間違えてデータ吹っ飛ばしました。