L
次のページ
H
前のページ
U
上のページ

« Mac OS X 10.5(Leopard) で Thingamablog | Main | テンプレート要素 EntryBody の置換機能に制約 »

2008年04月25日

Leopard の Automator + rsync + PipeAlert で公開

微妙に変わった Leopard の Automator 対応のワークフローを PipeAlert で改善してみた。

今までこのブログやメインのブログの公開には Automator で作成したワークフローを使用していた。内容は次のような感じだ。

  1. iDisk の URL (http://idisk.mac.com/アカウント名/)を指定する。
  2. iDisk をマウントする。
  3. コンソールログ(/Library/Logs/Console.log)を取得する。
  4. それをオープンする。
  5. rsync でローカルに書き出したブログから iDisk へ同期させる。
  6. 終わったことを知らせる。

Tiger まではこれで十分だった。rsync の実行の様子コンソールログにリダイレクトされていたのでコンソール.appにモニターされていた。iDisk が応答しなくなるなどによって rsync にエラーが発生するとワークフロー自体が終了してしまっていたが、モニターしているのでそれがわかるようになっていた。

ところが Leopard になってからコンソールログそのものがどこかにいってしまった。ないファイルをオープンしても何も起こらない。しかも rsync からコンソールログへリダイレクトした内容は、予めコンソール.appを開いていても届いていない。それでエラーが発生すると黙ってワークフローが終わるだけで公開したことを忘れてしまい、更新 Ping を打つタイミングが遅れてしまったりする。それならまだよいのだが、部分的に同期できた場合などはファイルの一部がアップロードされていなかったりするのだからたちが悪い。

そこで次のようにした。

  1. iDisk の URL (http://idisk.mac.com/アカウント名/)を指定する。
  2. iDisk をマウントする。
  3. rsync でローカルに書き出したブログから iDisk へ同期させる。

    ただし rsync の出力やエラー出力は PipeAlert にリダイレクトする。

この PipeAlert は標準入力から得られた入力内容をダイアログに表示してくれるユーティリティだ。ファイルに保存したりクリップボードにコピーしたりもできる。

rsync を使うのは「シェルスクリプトを実行」というアクションで、シェルに /bin/bash を指定して次のような内容である。

/usr/bin/rsync --recursive --update --delete --verbose {ローカル書き出し先のフォルダ} /Volumes/アカウント名/{iDisk上の対応するフォルダ} 2>&1 | /Applications/PipeAlert.app/Contents/MacOS/PipeAlert
true

本当は Google 向けのサイトマップファイルを生成したりするステップがその前にあるのだがそれは省略。

Leopard の Automator には「結果を表示」というアクションが増えていて PipeAlert の代わりにこれを使ってもよい。