Metadata-Version: 2.4
Name: keyabra
Version: 0.1.0
Summary: Securely prompt for API tokens and run CLI commands — no notepad copy-paste dance
Project-URL: Homepage, https://github.com/librarynth2/keyabra
Author: librarynth2
License-Expression: MIT
License-File: LICENSE
Keywords: cli,credentials,keyabra,pypi,secret,token,twine
Classifier: Development Status :: 4 - Beta
Classifier: Environment :: Console
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Topic :: Security
Classifier: Topic :: System :: Systems Administration
Requires-Python: >=3.8
Description-Content-Type: text/markdown

# keyabra

Prompt for API tokens **once**, run the command — no export/copy/delete/notepad loop.

Part of the spell family: **binabra** (bin anchor) → **keyabra** (key/token input).

## Install

```bash
pip install keyabra
```

Also need `twine` and `build` for PyPI uploads:

```bash
pip install build twine
```

## Publish binabra (or any project)

```bash
cd ~/Projects/binabra
keyabra pypi publish
```

That will:
1. Run `python -m build` if `dist/` is empty
2. Prompt: `PyPI token (pypi-...):` (hidden input)
3. Run `twine upload` — token never hits disk or your shell history

## Other commands

```bash
keyabra pypi upload dist/*
keyabra pypi publish ~/Projects/binabra --skip-build

# Generic — any secret env var + any command
keyabra run --env GITHUB_TOKEN -- gh auth status
keyabra run --env TWINE_PASSWORD --env TWINE_USERNAME -- twine upload dist/*
```

## Publish keyabra itself

First upload needs an account-scoped PyPI token: https://pypi.org/manage/account/token/

```bash
cd ~/Projects/keyabra
python3 -m pip install --user build twine
python3 -m build
keyabra pypi publish --skip-build   # after build, uses prompted token
```

## Security

- Uses `getpass` — token is not echoed
- Token lives only in process memory for the subprocess
- Never written to files or shell history
