PythonでCLIアプリケーションを作成する際に便利なフレームワークとして、cmdkit
があります。このフレームワークはPythonの標準ライブラリであるargparser
を利用し、クラス定義でCLIアプリケーションを手軽に定義できます。
cmdkitについて
cmdkit
は、Pythonのコマンドラインアプリケーションに必要ないくつかの共通パターンを実装したもので、コンソールアプリケーションの開発するために必要な手続きを減らすことを目的に開発されています。cmdkit
を使って開発されたアプリケーションは、実装が簡単で、メンテナンスが容易で、理解しやすいものになります。cmdkit
はPython 3.7以降で動作します。
インストール
cmdkit
はpipでインストールを行えます。
$ pip install cmdkit
機能概要
cmdkit
のApplication
クラスは、優れたエントリーポイントのための定型文を提供します。このApplication
クラスを継承してアプリケーションを作成します。
import sys
from cmdkit.app import Application, exit_status
from cmdkit.cli import Interface, ArgumentError
from cmdkit.config import Namespace
APP_NAME = 'demo_simple'
APP_DESCRIPTION = """\\
Description for demo application.
"""
APP_USAGE = f"""\\
Usage: {APP_NAME} [-h|--help] {APP_DESCRIPTION}
"""
APP_HELP=f"""\\
{APP_USAGE}
Options:
-h, --help show this message and exit.
"""
class DemoApp(Application):
interface = Interface(APP_NAME, APP_USAGE, APP_HELP)
name: str = None
interface.add_argument('name')
def run(self):
print(f'Hello {self.name}')
def main() -> int:
return DemoApp.main(sys.argv[1:2])
if __name__ == '__main__':
main()
このスクリプトはコマンドラインで与えた引数を表示するだけのものです。
$ python 01_demoapp.py Python
Hello Python
引数が省略されるか、 -h
、 --help
オプションが与えられるとヘルプメッセージを表示します。
$ python 01_demoapp.py
Usage: demo_simple [-h|--help] name
Description for demo application.
$ python 01_demoapp.py -h
Usage: demo_simple [-h|--help] name
Description for demo application.
Options:
-h, --help show this message and exit.
$ python 01_demoapp.py --help
Usage: demo_simple [-h|--help] name
Description for demo application.
Options:
-h, --help show this message and exit.
Interface
クラスは3つの引数を受け取り、標準ライブラリのargparse.ArgumentParser
クラスの動作を変更し、必要に応じていくつかの単純な例外を発生させます。Application
クラスはこの例外を捕獲してヘルプメッセージやバージョン情報を表示させます。
以上がcmdkit
の基本的な使い方となります。より詳細な情報や使用例については、公式ドキュメンテーションをご覧ください。