mirror of
https://github.com/m-lamonaca/dev-notes.git
synced 2025-06-08 10:47:13 +00:00
Upload of pre-existing files
This commit is contained in:
commit
4c21152830
150 changed files with 730703 additions and 0 deletions
75
Python/Libs/CLI/click.md
Normal file
75
Python/Libs/CLI/click.md
Normal file
|
@ -0,0 +1,75 @@
|
|||
# [Click](https://click.palletsprojects.com) Lib
|
||||
|
||||
## Command Creation
|
||||
|
||||
```py
|
||||
import click
|
||||
|
||||
# the decorator converts the function into a Command which then can be invoked
|
||||
@click.command()
|
||||
def hello():
|
||||
click.echo('Hello World!')
|
||||
|
||||
if __name__ == '__main__':
|
||||
hello()
|
||||
```
|
||||
|
||||
### Nesting Commands
|
||||
|
||||
Commands can be attached to other commands of type `Group`. This allows arbitrary nesting of scripts. As an example here is a script that implements two commands for managing databases:
|
||||
|
||||
```py
|
||||
@click.group()
|
||||
def cli():
|
||||
pass
|
||||
|
||||
@click.command()
|
||||
def initdb():
|
||||
click.echo('Initialized the database')
|
||||
|
||||
@click.command()
|
||||
def dropdb():
|
||||
click.echo('Dropped the database')
|
||||
|
||||
cli.add_command(initdb)
|
||||
cli.add_command(dropdb)
|
||||
```
|
||||
|
||||
The `group()` decorator works like the `command()` decorator, but creates a Group object instead which can be given multiple subcommands that can be attached with `Group.add_command()`.
|
||||
|
||||
For simple scripts, it’s also possible to automatically attach and create a command by using the `Group.command()` decorator instead.
|
||||
The above script can instead be written like this:
|
||||
|
||||
```py
|
||||
@click.group()
|
||||
def cli():
|
||||
pass
|
||||
|
||||
@cli.command()
|
||||
def initdb():
|
||||
click.echo('Initialized the database')
|
||||
|
||||
@cli.command()
|
||||
def dropdb():
|
||||
click.echo('Dropped the database')
|
||||
```
|
||||
|
||||
You would then invoke the Group in your setuptools entry points or other invocations:
|
||||
|
||||
```py
|
||||
if __name__ == '__main__':
|
||||
cli()
|
||||
```
|
||||
|
||||
### Adding Parameters
|
||||
|
||||
To add parameters, use the `option()` and `argument()` decorators:
|
||||
|
||||
```py
|
||||
@click.command()
|
||||
@click.option('--count', default=1, help='number of greetings')
|
||||
@click.argument('name')
|
||||
def hello(count, name):
|
||||
for x in range(count):
|
||||
click.echo(f'Hello {name}!')
|
||||
```
|
Loading…
Add table
Add a link
Reference in a new issue