Bye Bye Moore

猫マンション建築の野望を胸に零細事業主として資本主義の荒波に漕ぎ出したアラサー男の技術メモ

ClickをつかってPython製CLIツールをスマートにする その8:自前のバリデーション

selectやrangeを使えば大抵にバリデーションはできますが
自前のバリデーションも実行できます。

実際のところ

0以上、奇数という場合は以下のように

import click

def validate_count(ctx, param, value):
    if value < 0 or value % 2 != 0:
        raise click.BadParameter('Should be a positive, even integer.')
    return value


@click.command()
@click.option('--count', default=2, callback=validate_count,
              help='A positive even number.')

def cli(count, foo, url):
    click.echo('count: %s' % count)