
# click-prompt

[![Supported Python Versions](https://img.shields.io/pypi/pyversions/click-prompt)](https://pypi.org/project/click-prompt/) 
[![PyPI version](https://img.shields.io/pypi/v/click-prompt)](https://pypi.org/project/click-prompt/) 
[![License](https://img.shields.io/pypi/l/click-prompt)](https://github.com/markusgrotz/click-prompt/blob/main/LICENSE.md)
[![Ruff](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json)](https://github.com/astral-sh/ruff)
[![Downloads/Month](https://pepy.tech/badge/click-prompt/month)](https://pepy.tech/project/click-prompt)


**click-prompt** extends the [Click](https://click.palletsprojects.com/) command-line interface library by adding intuitive, interactive prompts. It's perfect for building more user-friendly CLI tools.

This library is inspired by a post on [stackoverflow.com](https://stackoverflow.com/questions/54311067/).

Contributions are welcome! [Open a pull request](https://github.com/markusgrotz/click-prompt/pulls) or [submit an issue](https://github.com/markusgrotz/click-prompt/issues).

## Installation

To install `click-prompt`, use pip:

```bash
pip install click-prompt
```

## Usage

Here’s a basic example using the `choice_option` decorator:

```python
import click
from click_prompt import choice_option

@click.command()
@choice_option('--fruit', type=click.Choice(['Apples', 'Bananas', 'Grapefruits', 'Mangoes']))
def select_fruit(fruit: str):
    """Prompt user to select a fruit from a list."""
    print(f"You selected: {fruit}")

if __name__ == '__main__':
    select_fruit()
```

## Example

For more examples see the file [example.py](https://github.com/markusgrotz/click-prompt/blob/main/example.py).

![Example](https://github.com/markusgrotz/click-prompt/blob/main/docs/example_cli.gif?raw=true)

## Available Decorators

Each of these decorators replaces a `click.Option` (and also works with `click.Argument`):

- **`choice_option`**  
  Prompt the user to select one (or more with `multiple=True`) from a list.

- **`confirm_option`**  
  Yes/No confirmation prompt.

- **`filepath_option`**  
  Prompt the user to select a file path with auto-completion.

- **`auto_complete_option`**  
  Input prompt with tab completion from a list of choices.

- **`input_text_option`**  
  Prompt the user for free-form text input.

## License

This project is licensed under the MIT License. See the [LICENSE](https://github.com/markusgrotz/click-prompt/blob/main/LICENSE.md) file for more information.
