Wanneer je in Python een commandline tooltje bouwt, en je behoeftes voor het
parsen van opties en argumenten meer wordt dan alleen maar wat argumenten
lezen, zul je al snel een library gaan zoeken die daar bij kan helpen.
De twee standaard opties zijn argparse
en optparse
, maar er zijn ook
libraries die meer kunnen, en makkelijker zijn in het gebruik.
In deze video kijkt Wander naar (de basis van) Click
, een library die het
erg makkelijk maakt om ook met sub-commando’s te werken.
De homepage van Click
kun je hier vinden:
https://palletsprojects.com/p/click/
Code
De code, voor de mensen die niet uit de video willen overtikken:
1#!/usr/bin/env python3
2import click
3
4@click.group()
5@click.pass_context
6@click.option('--count', '-c', default=1, help='Aantal keren om te groeten per NAME')
7def cli(ctx, count):
8 """
9 Universele greeter
10 """
11 ctx.ensure_object(dict)
12 ctx.obj['count'] = count
13
14@cli.command()
15@click.pass_obj
16@click.argument('name', nargs=-1)
17def greeter(cfg, name):
18 """
19 Zeg hallo tegen NAME
20 """
21 for n in name:
22 for i in range(cfg.get('count', 1)):
23 click.echo(f"Hallo {n}")
24
25@cli.command()
26@click.pass_obj
27@click.option('--treurig', is_flag=True, default=False)
28@click.argument('name', nargs=-1)
29def goodbye(cfg, treurig, name):
30 """
31 Zeg "tot ziens" tegen NAME
32 """
33 for n in name:
34 for i in range(cfg.get('count', 1)):
35 click.echo(f'Tot ziens {n}{", we gaan je missen.." if treurig else ""}')