Metadata-Version: 2.1
Name: pre-pip
Version: 0.1.2
Summary: Run some python before your pip commands.
Author: Ratul Maharaj
Author-email: ratulmaharaj@looped.co.za
Requires-Python: >=3.11,<4.0
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.11
Requires-Dist: click (>=8.1.3,<9.0.0)
Requires-Dist: rich (>=12.6.0,<13.0.0)
Description-Content-Type: text/markdown

<p align="center" style="height: 3em;">
    <img src="pre-pip.svg" alt="pre-pip" align="center"></img>
</p>
<p align="center">
    <em>Run some python code just before your pip commands.</em>
</p>

<p align="center">
<a href="https://github.com/RatulMaharaj/pre-pip/actions/workflows/python-test-zsh.yml" target="_blank">
    <img src="https://github.com/RatulMaharaj/pre-pip/actions/workflows/python-test-zsh.yml/badge.svg" alt="pytest zsh">
</a>
<a href="https://github.com/RatulMaharaj/pre-pip/actions/workflows/python-test-bash.yml" target="_blank">
    <img src="https://github.com/RatulMaharaj/pre-pip/actions/workflows/python-test-bash.yml/badge.svg" alt="pytest bash">
</a>
<a href="https://pypi.org/project/pre-pip" target="_blank">
    <img src="https://img.shields.io/pypi/v/pre-pip?color=%2334D058&label=pypi%20package" alt="Package version">
</a>
</p>

<hr/>

### Use cases

- Before installing a package, check it against a list of known malicious packages.
- Upgrade pip automatically before installing a package.
- Inject pip proxy settings into the environment before installing a package.

You can use it to run any custom python code before a pip command is executed.

### Supported shells

The following shells are currently supported:

- `zsh`
- `bash`

I'm currently working on adding support for `powershell` and will thereafter look at `fish`.

Contributions for any other shells are welcome.

### Installation

```sh
pip install pre-pip
```

There is potential to make this `pipx` installable.

### Usage

Install `pre-pip` into your `.*rc` file using:

```sh
pre-pip install
```

### Register a custom demo hook

Create a new file called `hook.py` in your current directory with the following content:

```python
# hook.py
from rich import print as rprint


def main(args):
    rprint(
        f"This [italic green]pre-pip[/italic green] hook received: [italic cyan]{args}[/italic cyan]",
    )

```

Register the hook using:

```sh
pre-pip add hook.py
```

You can view the list of registered hooks using:

```sh
pre-pip list
```

### Uninstall

Uninstall `pre-pip` using:

```sh
pre-pip uninstall
```

This will remove the `pre-pip` hook from your `.*rc` file as well as all registered hooks.

To remove the pre-pip package, use:

```sh
pip uninstall pre-pip
```

### License

[MIT](LICENSE)

