.. _writing-a-plugin:

プラグインを書く
================

導入
-----

プラグインはbzrのコア機能ととてもよく似ています。
これらはbzrlibから何でもインポートできます。
プラグインは標準機能を上書きすることもできますが、大抵プラグインは\
新しいコマンドを提供します。

.. _creating-a-new-command:

新しいコマンドを作る
---------------------

コマンドを書くには、
``bzrlib.commands.Command`` を継承する新しいオブジェクトを作り、 ``cmd_foo`` と命名します。
fooはコマンドの名前です。
名前にアンダースコアが含まれるコマンドを作ると、UIではアンダースコアはハイフンとして表示されます。
たとえば、 `cmd_baz_import` は `baz-import` として表示されます。
コマンドの書き方の実例に関しては、 ``builtins.py`` を参照して頂くようお願いします。

コマンドを作成したらファイルがインポートされるときに
``bzrlib.commands.register_command(cmd_foo)`` でコマンドを登録しなければなりません。
さもなければbzrはコマンドを見つけることはありません。

.. _specifying-a-plugin-version-number:

プラグインのバージョン番号を指定する
-------------------------------------

プラグインのバージョン番号を定義するにはタプルで ``version_info`` を定義します。例：
``version_info = (0, 9, 0)``
``version_info = (0, 9, 0, 'dev', 0)``

.. _plugin-searching-rules:

プラグインの検索ルール
------------------------

デフォルトではbzrはプラグインを見つけるために ``bzrlib/plugins`` と ``~/.bazaar/plugins`` をスキャンします。
``BZR_PLUGIN_PATH`` でこれを上書きできます。
プラグインはモジュールもしくはパッケージの形態をとることができます。
プラグインが単独のファイルであれば、構造をモジュールにできます。
プラグインが複数のファイルを持つ場合やbzrのブランチとして配布したい場合は、
構造をパッケージ、すなわち、ディレクトリの中に ``__init__.py`` を含めます。


詳しい情報
-----------

他の人にも役立つと考えましたら、プラグインをBzrToolsにお気軽に寄付してください。

Bazaarの開発ガイドラインと方針の詳細に関しては `Bazaar開発者ガイド`_ を参照してください。

.. _Bazaar開発者ガイド: ../developer-guide/HACKING.html
