PythonのCLIフレームワークの1つにclickがあります。
デコレータを使って簡単にCLIが作成できますが、1ファイルにすべてのコマンドのコードを書いていくと長くなります。
そこで、CommandCollection
を使って複数のコマンドをマージすることで、コマンド別にファイルを分割する方法を紹介します。
まず、コマンド別のファイルを用意します。
# cli1.py import click @click.group() def cli1(): pass @cli1.command() def cmd1(): """Command on cli1"""
# cli2.py import click @click.group() def cli2(): pass @cli2.command() def cmd2(): """Command on cli2"""
次に、この2つのコマンドをマージします。
# main.py import click from .cli1 import cli1 from .cli2 import cli2 @click.command(cls=click.CommandCollection, sources=[cli1, cli2]) def cli(): pass if __name__ == '__main__': cli()
実行すると以下のように、マージされていることが分かります。
$ cli --help Usage: cli [OPTIONS] COMMAND [ARGS]... Options: --help Show this message and exit. Commands: cmd1 Command on cli1 cmd2 Command on cli2