Metadata-Version: 2.4
Name: devset
Version: 0.1.0
Summary: A Swiss-army-knife CLI with the everyday tools every dev reaches for.
Author-email: "Samarth Chugh (Sam3360)" <iforgot3360@gmail.com>
License-Expression: MIT
Project-URL: Homepage, https://github.com/Sam3360/devset
Project-URL: Repository, https://github.com/Sam3360/devset
Project-URL: Issues, https://github.com/Sam3360/devset/issues
Keywords: cli,devtools,utilities,developer-tools
Classifier: Environment :: Console
Classifier: Intended Audience :: Developers
Classifier: Topic :: Software Development
Classifier: Topic :: Utilities
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Requires-Python: >=3.8
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: click>=8.1.0
Requires-Dist: requests>=2.31.0
Requires-Dist: python-dotenv>=1.0.0
Requires-Dist: rich>=13.7.0
Provides-Extra: dev
Requires-Dist: pytest>=8.0.0; extra == "dev"
Requires-Dist: black>=24.0.0; extra == "dev"
Requires-Dist: ruff>=0.4.0; extra == "dev"
Requires-Dist: mypy>=1.9.0; extra == "dev"
Requires-Dist: ipython>=8.20.0; extra == "dev"
Provides-Extra: web
Requires-Dist: fastapi>=0.110.0; extra == "web"
Requires-Dist: uvicorn[standard]>=0.29.0; extra == "web"
Requires-Dist: httpx>=0.27.0; extra == "web"
Requires-Dist: pydantic>=2.6.0; extra == "web"
Provides-Extra: data
Requires-Dist: numpy>=1.26.0; extra == "data"
Requires-Dist: pandas>=2.2.0; extra == "data"
Requires-Dist: matplotlib>=3.8.0; extra == "data"
Requires-Dist: jupyter>=1.0.0; extra == "data"
Requires-Dist: openpyxl>=3.1.0; extra == "data"
Provides-Extra: all
Requires-Dist: devset[data,dev,web]; extra == "all"
Dynamic: license-file

# devset

A Swiss-army-knife CLI with the everyday tools every dev needs — plus a
one-command bootstrapper that spins up a virtualenv with a curated set of
Python packages already installed.

## Install

```bash
git clone <this repo>
cd devset
pip install -e .
```

This registers the `devset` command on your PATH, and also pulls in a
small set of core dependencies every dev tends to reach for — `requests`,
`python-dotenv`, `rich` — so they're available immediately, both for
`devset`'s own commands (like `net get`) and for you to `import` in your
own scripts once devset is on your PATH/venv.

Want more? Install extras for heavier, more specific toolsets:

```bash
pip install -e ".[dev]"    # pytest, black, ruff, mypy, ipython
pip install -e ".[web]"    # fastapi, uvicorn, httpx, pydantic
pip install -e ".[data]"   # numpy, pandas, matplotlib, jupyter, openpyxl
pip install -e ".[all]"    # everything above
```

## The headline feature: `devset setup`

Get a fully wired-up Python environment in one command:

```bash
devset setup init                       # essentials profile -> .venv/
devset setup init --profile web         # fastapi, httpx, pydantic, ...
devset setup init --profile data        # numpy, pandas, matplotlib, jupyter
devset setup init --profile testing     # pytest, mypy, black, ruff
devset setup init -p web -e sqlalchemy  # add extra package(s) on top
devset setup profiles                   # see what's in each profile
```

This creates a `.venv`, installs the chosen package set, and writes a
`requirements.txt` you can commit.

## Everything else

| Group   | Example                                      |
|---------|-----------------------------------------------|
| `json`  | `devset json pretty file.json --sort-keys`     |
| `b64`   | `devset b64 encode "hello"`                    |
| `hash`  | `devset hash sha256 "text"` / `hash all`       |
| `uuid`  | `devset uuid gen -n 5`                         |
| `git`   | `devset git summary` / `git clean-branches`    |
| `text`  | `devset text slug "My Title"` / `text case`    |
| `time`  | `devset time now` / `time from-unix 170...`    |
| `gen`   | `devset gen password -l 24` / `gen lorem`      |
| `net`   | `devset net port host 443` / `net get <url>`   |
| `color` | `devset color hex2rgb "#ff8800"`               |
| `fs`    | `devset fs tree --depth 2`                     |

Run `devset --help` or `devset COMMAND --help` for full details.

## Extending it

Each command group lives in its own file under `devset/commands/` as a
`click.Group`. To add a new one: create `devset/commands/my_tools.py` with a
`@click.group()`, then register it in `devset/cli.py`.
