Bash Complete —ドキュメントをクリックします

提供:Dev Guides
Click/docs/6.x/bashcomplete
移動先:案内検索

バッシュコンプリート

バージョン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