CLIでは、すべてのコマンドは1つのコマンドグループの下にグループ化されています。これにより、各コマンドに対して実行する必要のある動作を実装することができました。それの1つは例外処理です。
@click.group()
@click.pass_context
def entry_point(ctx):
ctx.obj = {"example": "This could be the configuration"}
私たちは、グローバルなコードを実行するためにそれを使用し、例えば:
私たちのエントリポイントは次のようになりますcontext
を設定しますが、何もしない空のメソッドを定義することもできます。 @entry_point.command()
デコレータまたはentry_point.add_command(cmd)
を使用して、このコマンドグループに他のコマンドを追加できます。例外処理のために
、私たちは、例外を処理する別の方法でentry_point
をラップ:setup.py
で
def safe_entry_point():
try:
entry_point()
except Exception as e:
click.echo(e)
、私たちは、CLIのエントリポイントを設定し、ラッパーにそれを指す:
entry_points={
'console_scripts': [
'cli = my.package:safe_entry_point'
]
}
CLIのコマンドは、コマンドグループから実行できます。 cli command
。
もっと洗練されたソリューションがあるかもしれませんが、これが私たちが解決した方法です。コマンド・グループはCLIの最上位要素として導入されていますが、コマンドごとにエラー処理を複製する必要はなく、すべての例外を1か所で処理できます。