-
-
Notifications
You must be signed in to change notification settings - Fork 1.4k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Rewrite first half of options docs (#2825)
Co-authored-by: Andreas Backx <[email protected]>
- Loading branch information
1 parent
4ece17a
commit 82089af
Showing
7 changed files
with
419 additions
and
399 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -113,6 +113,7 @@ Context | |
:members: | ||
:member-order: bysource | ||
|
||
.. _click-api-types: | ||
|
||
Types | ||
----- | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,80 @@ | ||
Options Shortcut Decorators | ||
=========================== | ||
|
||
.. currentmodule:: click | ||
|
||
For convenience commonly used combinations of options arguments are available as their own decorators. | ||
|
||
.. contents:: | ||
:depth: 2 | ||
:local: | ||
|
||
Password Option | ||
------------------ | ||
|
||
Click supports hidden prompts and asking for confirmation. This is | ||
useful for password input: | ||
|
||
.. click:example:: | ||
import codecs | ||
|
||
@click.command() | ||
@click.option( | ||
"--password", prompt=True, hide_input=True, | ||
confirmation_prompt=True | ||
) | ||
def encode(password): | ||
click.echo(f"encoded: {codecs.encode(password, 'rot13')}") | ||
|
||
.. click:run:: | ||
invoke(encode, input=['secret', 'secret']) | ||
|
||
Because this combination of parameters is quite common, this can also be | ||
replaced with the :func:`password_option` decorator: | ||
|
||
.. code-block:: python | ||
@click.command() | ||
@click.password_option() | ||
def encrypt(password): | ||
click.echo(f"encoded: to {codecs.encode(password, 'rot13')}") | ||
Confirmation Option | ||
-------------------- | ||
|
||
For dangerous operations, it's very useful to be able to ask a user for | ||
confirmation. This can be done by adding a boolean ``--yes`` flag and | ||
asking for confirmation if the user did not provide it and to fail in a | ||
callback: | ||
|
||
.. click:example:: | ||
def abort_if_false(ctx, param, value): | ||
if not value: | ||
ctx.abort() | ||
|
||
@click.command() | ||
@click.option('--yes', is_flag=True, callback=abort_if_false, | ||
expose_value=False, | ||
prompt='Are you sure you want to drop the db?') | ||
def dropdb(): | ||
click.echo('Dropped all tables!') | ||
|
||
And what it looks like on the command line: | ||
|
||
.. click:run:: | ||
invoke(dropdb, input=['n']) | ||
invoke(dropdb, args=['--yes']) | ||
|
||
Because this combination of parameters is quite common, this can also be | ||
replaced with the :func:`confirmation_option` decorator: | ||
|
||
.. click:example:: | ||
@click.command() | ||
@click.confirmation_option(prompt='Are you sure you want to drop the db?') | ||
def dropdb(): | ||
click.echo('Dropped all tables!') |
Oops, something went wrong.