CLI를 편하게 할 수 있도록 도와주는 라이브러리.
argument pasring 보다 편리하게 이용 가능.
ref : document
Click은 기본적으로 데코레이터를 활용해 커멘드를 정의힌다.
@click.command()
def click_test():
print("test")
위처럼 함수에 붙어 해당 함수를 커맨드 함수로 지정한다.
크게 두 가지 방식이 존재한다. option()과 argument().
@click.command()
@click.argument('name', type=str)
def click_test(name):
print(f"{name} test")
python test.py my
my test
argument는 필수적으로 호출되어야 하는 인자이다. "type"을 통해 입력 타입을 강제해줄 수 있다.
@click.command()
@click.argument('name', type=click.Choice(['my', 'yours']))
def click_test(name):
print(f"{name} test")
click의 Choice 메소드를 통해 입력 값을 강제해 줄 수도 있다.
이 외에도 click.Path, click.DateTime 등의 형식도 지원한다.
@click.command()
@click.option('--name', type=str, default='my')
def click_test(name):
print(f"{name} test")
python test.py
my test
python test.py --name=opt
opt test
option은 위치 인수(--)와 함께 값을 입력한다. default를 정해주어, 입력이 들어오지 않을 시 default 값을 사용한다.
Click이 argparse에 비해 유연성이 떨어지는 것은 사실이다. 실제로 개발자도 그렇게 이야기하고 있다.(Why Click? 참고)
하지만, 그럼에도 불구하고, option과 argument 두 가지 만으로 꽤나 편리하고 쉽게 스크립트를 구성할 수 있는 것은 사실이다.
앞으로 스크립트를 구성하는데 종종 쓰일 것 같다.