ClickをつかってPython製CLIツールをスマートにする その2:バリデーションや選択

shuzo-kino.hateblo.jp
の続きです。

import click

@click.command()
@click.option('--value', prompt='Your value',
              help='set your value',
              type=int )
def hello(value):
    click.echo('Value is %s!' % value)

if __name__ == '__main__':
    hello()

これの何がいいかというと……勝手にバリデーションしてくれます。

$ python sample_click.py 
Your value: 4.0
Error: 4.0 is not a valid integer
Your value: hi
Error: hi is not a valid integer
Your value: 1
Value is 1!

更に、click型に設定された色々な型を指定してやることで
擬似的な選択パラメータも指定可能です

@click.option('--hash-type', type=click.Choice(['md5', 'sha1']))

とやると、"--hash-type"にはmd5sha1以外セットできなくなります。
他のパラメータは以下のリンクを参照してください。
UUID等々、使い勝手の良さそうなのが他にもいくつかあります。
Parameters — Click Documentation (6.0)