Bash Complete —ドキュメントをクリックします
バッシュコンプリート
バージョン2.0の新機能。
Click 2.0以降、ClickスクリプトのBash補完のサポートが組み込まれています。 この補完が利用可能になる時期には一定の制限がありますが、ほとんどの場合、正常に機能するはずです。
制限事項
Bashの完了は、スクリプトが正しくインストールされており、python
コマンドで実行されていない場合にのみ使用できます。 これを行う方法については、 Setuptools Integration を参照してください。 また、Clickは現在、Bashの完了のみをサポートしています。
現在、Bashの完了は、カスタマイズできない内部機能です。 これは、将来のバージョンで緩和される可能性があります。
それが完了するもの
通常、Bash完了サポートは、サブコマンドとパラメーターを完了します。 サブコマンドは常にリストされますが、パラメーターは少なくともダッシュが指定されている場合に限ります。 例:
$ repo <TAB><TAB>
clone commit copy delete setuser
$ repo clone -<TAB><TAB>
--deep --help --rev --shallow -r
アクティベーション
Bash補完をアクティブ化するには、スクリプトで補完が利用可能であることとその方法をBashに通知する必要があります。 Clickアプリケーションは、自動的にそのサポートを提供します。 これが機能する一般的な方法は、_<PROG_NAME>_COMPLETE
と呼ばれる魔法の環境変数を使用することです。ここで、<PROG_NAME>
は、ダッシュがアンダースコアに置き換えられた大文字のアプリケーション実行可能ファイル名です。
ツールの名前がfoo-bar
の場合、魔法の変数は_FOO_BAR_COMPLETE
と呼ばれます。 source
値でエクスポートすることにより、簡単にアクティブ化できるアクティブ化スクリプトを吐き出します。
たとえば、foo-bar
スクリプトのBash補完を有効にするには、次のように.bashrc
に入力する必要があります。
eval "$(_FOO_BAR_COMPLETE=source foo-bar)"
この時点から、スクリプトでBashの完了が有効になります。
アクティベーションスクリプト
上記のアクティベーションの例では、起動時に常にアプリケーションが呼び出されます。 多くのアプリケーションがある場合、これによりシェルのアクティブ化時間が大幅に遅くなる可能性があります。 または、その内容を含むファイルを出荷することもできます。これは、Gitや他のシステムが行っていることです。
これは簡単に実行できます。
_FOO_BAR_COMPLETE=source foo-bar > foo-bar-complete.sh
そして、代わりにこれをbashrcに入れます。
. /path/to/foo-bar-complete.sh