(仮)
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って怖いねー。一回スクリプト内でソースとターゲットの変数間違えてデータ吹っ飛ばしました。