先月に、Errbotがメジャーバージョンアップしてました。
Errbot 5.0 is out! As it is a major revision, pls checkout the breaking changes and update your plugins accordingly https://t.co/qvcaNT6vyw
— gbin (@gbin) 2017年4月25日
変更箇所については、オリジナルを見てみるのが一番早いのですが、確認しやすそうな部分を適当にピックアップして動作確認してみました。
サブコマンド実装方式の拡張
Add support for cascaded subcommands (cmd_sub1_sub2_sub3) (thx Jeremiah Lowin)
from errbot import BotPlugin, botcmd
class Example(BotPlugin):
@botcmd
def git_pull(self, msg, args):
# これを、`!git pull` で呼ぶことは、今までもできた
pass
class Example2(BotPlugin):
@botcmd
def git_pull_all(self, msg, args):
# これを、`!git pull all` で呼ぶことができるようになった
pass
上記のExample.git_pull
を呼ぶときは、!git_pull_all
の他に!git pull
とサブコマンドらしく呼ぶことができます。
今までのバージョンでは、git_pull_all
を呼ぶときの形式は、!git_pull_all
または!git pull_all
のどちらかで、1個めのアンダースコアだけがコマンドとサブコマンドの区切りとして機能していました。
バージョン5.0.0からは、すべてのアンダースコアでサブコマンドとして区切りることができるのか、!git pull all
でも呼べるようになっています。
ただし、git_pull
,git_pull_all
が両方あると、!git pull all
に対して反応するのはgit_pull
の方みたいでした。
きちんと細かく処理を分けていくことで、より有効活用できる仕様のようです。
プラグインのシンボリックリンクサポート
You can now use symbolic links for your plugins
文字通りですが、プラグインの読み込み時にシンボリックリンクをサポートするようになりました。
+ bot_root/
+ plugins/
+ example/ <folder>
+ plugin_A <symlink:../../plugin_A>
+ plugin_A/
+ plugin_A.plug
+ plugin_A.py
このようなフォルダ構成だった場合に、シンボリックリンクが置かれているplugin_Aもver5.0.0では読み込むようになっています。
普段の自分の運用スタイルでは、submoduleにしてしまったりすることのほうが多いので、いまいち使い所を捉えられていません。Issueとか見ればわかるのでしょうか。
Textバックエンドがreadlineをサポート
Text backend: readline support (thx Robert Coup)
readlineをサポートするようになったことで、errbot -T
によってターミナルでのCLIでの会話で、↑↓キーで直前のコマンドをかんたんに呼び直せるようになりました。
プラグインの開発をするときにはローカルでtextバックエンドを使うことが多いのですが、よく使うbotコマンドである!plugin reload PluginName
などのplugin制御系を繰り返し命令するのが非常に楽になりました。
いろいろと、デバッグがはかどります。
(締めの文章)
パッと見た感じだと、目を引く更新はこのあたりでした。
その他にもSlackバックエンドでリアクションをすることができるようなったりと行った機能追加や細かい不具合修正などがあるので、特にプラグインの互換性が平気そうならアップデートしてみてはどうでしょうか。