Metadata-Version: 2.4
Name: pycompgen
Version: 0.2.0
Summary: Generate shell completions automatically
Author-email: Adrian Vollmer <av3@mailbox.org>
License-File: LICENSE
Requires-Python: >=3.11
Description-Content-Type: text/markdown

# pycompgen

Automatically generate shell completions for Python tools installed via
uv and pipx.

Currently, bash, zsh, and fish on Linux are supported. Also, only Python
tools that use the `click` or `argcomplete` libraries are supported,
besides some select commands:

- uv
- uvx

## Installation

``` bash
uv tool install pycompgen
# Or if you prefer pipx:
pipx install pycompgen
```

## Usage

Run pycompgen to generate completions for all installed tools:

``` bash
pycompgen
```

The tool will:

1.  Detect Python packages installed via `uv tool` and `pipx` as well as
    some select commands
2.  Analyze which ones support shell completions
3.  Generate completion files in `~/.cache/pycompgen/`
4.  Create a source script to load all completions

Add the source script to your shell config:

``` bash
# For bash: - add to ~/.bashrc:
source <(pycompgen --source) ; (pycompgen &)

# For zsh: - add to ~/.zshrc:
source <(pycompgen --shell zsh --source) ; (pycompgen --shell zsh &)

# For fish - add to ~/.config/fish/config.fish
pycompgen --shell fish --source | source ; pycompgen --shell fish &
```

This will load the generated shell completions and generate new
completions for the next time.

### Options

- `--cache-dir PATH`: Override the default cache directory
- `--force`: Force regeneration of all completions
- `--shell`: Target shell - bash, zsh, or fish (default:
  \${SHELL:-bash})
- `--verbose`: Enable detailed output
- `--source`: Only write the source file contents to stdout and exit
- `--cooldown-time`: Minimum amount of seconds between regenerations

## Development

Install development dependencies:

``` bash
uv sync --group dev
uv run pre-commit install
```

Run tests:

``` bash
uv run pytest
```

Run linting and formatting:

``` bash
uv run ruff check src tests
uv run ruff format src tests
uv run mypy src
```

## License

MIT
