読者です 読者をやめる 読者になる 読者になる

argparseだるいし。関数の定義からコマンド生成すれば良いのでは?

python argparse

要旨は以下

  • 関数の引数の定義から大まかなデフォルト値とコマンドライン引数を取得
  • sphinxのautodoc形式のdocstringからヘルプメッセージを作成

以下の様にすると greeting() が関数からコマンドになる。

# -*- coding:utf-8 -*-
from cmdfromfn import as_command


@as_command
def greeting(message, is_surprised=False, name="foo"):
    """ greeting message

    :param message: message of greeting
    :param is_surprised: surprised or not (default=False)
    :param name: the actor name
    """
    suffix = "!" if is_surprised else ""
    print("{name}: {message}{suffix}".format(name=name, message=message, suffix=suffix))

gist

gistba9d1aa7dac23448b915