とりあえずその場で動けばokなプラグインを書いてみる。
Tracの環境を一つ用意して、TRAC_ADMINの権限を設定しておく。
用意したTrac環境のpluginsディレクトリに以下のhello.pyを作成する。
from trac.core import * from trac.web.api import IRequestHandler class HelloPlugin(Component): implements(IRequestHandler) def match_request(self, req): return req.path_info.startswith('/hello') def process_request(self, req): req.send_response(200) req.send_header('Content-Type', 'text/plain') req.end_headers() req.write('hello')
作成したらtracの環境をリロードする。modwsgiならapacheの再起動など。
プラグイン管理の画面を見るとhelloが追加されている。
/hello にアクセスすると、"hello"と表示される。
再利用を想定するならsetup.pyを書いたりする。
今回はIRequestHandlerをimplementsしたけども、ほかにもいろいろなインターフェースがあります。チケットの作成、更新にフックするITicketChangeListenerなんかは結構使う。
会社ではTracのチケットの作成変更通知をskypebotが行うようにプラグインを書いてます。