python-prompt-toolkitをgolangに移植。kubernetesクライアント作った

Github Trendingに載ってから、予想以上に伸びました。ありがとうございます。

python-prompt-toolkitをgolangでも使いたいなと前から思い移植していたのですが、今日go-promptという名前で公開しました。

kube-promptは実際にgo-promptを使って作成したインタラクティブなkubernetesクライアントです。

kube-prompt

python-prompt-toolkit の移植

GitHub - jonathanslenders/python-prompt-toolkit: Library for building powerful interactive command lines in Python

python-prompt-toolkitは簡単にいうとインタラクティブな補完ができるライブラリなのですが、これを使った便利なツールがたくさん登場していて、かなりのstarを集めています。

自分はpython3を当然のようにインストールしているので、Pythonのツールを使うことが面倒には感じないのですが、普段pythonを使っていない人はpythonのインストールから始めないといけないので結構面倒そうです。

python-prompt-toolkitをGolangに移植する人が現れないかなと思っていたのですが、中々登場しませんでした。 ふと思い立って実装を読んでみると、テストコードなしの実装だけでも2万行以上とボリュームがあります。この強力な補完のために裏では結構面倒なことをしていて、実装もそれなりに複雑になっているので、なるほどこれは大変と思い挑戦してみました。

自分はこういう端末制御ゴリゴリのソフトウェアを作ったことなく、コードを読む上で必要な前提知識が色々と欠けていたので、いい勉強になりました。この記事では実装に関して書きませんが、需要がありそうなら記事書くかどこかで話すかしたいと思ってます。

詳しい使い方はREADMEに書いたので興味のある方は使ってみてください。比較的かんたんに使えるようになっているかなと思います。 オプションも色々用意してます。

f:id:nwpct1:20170813221708p:plain

今後追加予定の機能は

  • Windowsサポート
    • mattnさんがPRくれました。ありがとうございます。windows環境手元にないのでまだ試せないのですが、どうしようか
  • vi modeのサポート
  • multi line inputに対応
  • emacs キーバインドが本来と違う挙動をする箇所が見つかったので修正
    • Ctrl+Wの挙動だったのですが、b4b4r04さんが直してPRくれました。ありがとうございます。
  • Fuzzy Searchingとかprompt作る上で便利なutility系の用意

あたりです。

kube-prompt

kubernetesクライアントも用意したので、kubernetes触ってる方はぜひ使ってみてください。 Github Releaseからバイナリ落とすか、Homebrewで入ります。