Bye Bye Moore

PoCソルジャーな零細事業主が作業メモを残すブログ

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)