plaggerの自動アップデート

SVNコミッターとして残念で大変恥ずかしいのですが、PlaggerConferenceへは行けそうもありません。まことに遺憾です。ということで、行けたら話したい内容をConferenceに先駆けてUPしてみる。

EntryFullTextやStripRSSAdは大変有用なプラグインなのですが、それだけでは動作せず、定義ファイルが必要になります。定義ファイルは多数の人が日々公開していて、対象siteのリニューアル等に追従しているのですが、現状ではplagger.orgからsvn upしないといけません。なので、定義ファイルだけでもplaggerの実行時に更新してしまおうという提案です。


位置づけとしてはdebianでのvolatile*1みたいな感じです。とはいってもvolatileは使用したときがありませんが。

カバーする範囲は違いますが、似たようなアイデアPEANがあります。が、peanという外部コマンドを使用していたり、plaggerの拡張が必要なのでいまいち現実味がありません*2

やっぱり、それplaggerで…ということで、Pluginのみで実装できるものを別に提案したいと思います。

まずは、配布したい人が以下の内容を含むRSSを公開する。もちろんhttp://plagger.org*3でも。

<item>
<title>Upgrader名</title>
<link>配布元のurl</link>
<guid>upgraderのmd5</guid>
<discription>base64したupgrader</discription>
<pubDate>更新日</pubDate>
<category>Filter-EntryFullText</category>
</item>

で、必要なpluginは以下の通り。

P::P::Publish::PlaggerAddin

上記RSSのdiscription部分をbase64でデコードし、assets_path/<category />/<title />を付けて保存する。

P::P::Filter::PlaggerAddin

P::P::CF::PAで作成したRSSをフィルター

たとえば、config.yaml

- module:Filter::PlaggerAddin
- ignore: example.pl
- allow_url: http://plagger.org/

を指定すれば、example.plの更新は無視し、http://plagger.org/から配布されているものだけを有効にします。また、ローカルのexample.plの日付とpubDateを比較し、古い物も除いたRSSに変換する。


上記ではUpgraderを対象にしてますがをかえて、StripRSSAdとTruePermalinkも同様に出来ます。

一応野良で作ったものも設定によっては随時更新されるように、plagger.org以外からも拾えるようにしています。望ましいのは、今のままplagger.orgに全ての情報が集まり、各人がsvn upすることですが、なにもしなくてもそれplaggerで…自動的勝手に機能アップする(追加される)のは悪いことじゃないと思う。

もちろんRSSの作成はそれplaggerで…ということで、P::P::CustomFeed::PlaggerAddinが必要になる。ので、pluginは計3つ必要。

*1:簡単な説明は http://debian.fam.cx/index.php?stable#v42eb2dc

*2:installとUninstallができるpeanコマンドは魅力がありますが、

*3:addin.plagger.orgか?