# benvin-utils A monorepo of small, single-purpose command-line tools. Each tool is its own directory (a `package main`); shared code lives under [`common/`](./common) so tools reuse the same TUI primitives and Kubernetes client bootstrapping instead of copy-pasting them. ``` benvin-utils/ ├── common/ # shared library, imported by tools │ ├── tui/ # direction markers, style palette, padding/layout helpers │ └── kube/ # in-cluster→kubeconfig client loading ├── podgap/ # tool: pod requests/limits vs actual usage (live TUI) └── Makefile # auto-discovers tools — no edits when you add one ``` ## Tools | Tool | What it does | |------|--------------| | [`podgap`](./podgap) | Live TUI comparing pod CPU/memory **requests & limits vs actual usage**, with ▲/▼ change markers. | ## Build & install Tools are auto-discovered (any directory with a `package main`), so the targets below need no editing when you add a new tool. ```sh make all # build every tool into ./bin make podgap # build just one tool into ./bin/podgap make install # go install every tool into $GOBIN (or $GOPATH/bin) make test # run all tests make list # list discovered tools make help # show all targets ``` ## Adding a new tool 1. `mkdir mytool && $EDITOR mytool/main.go` with `package main`. 2. Import shared helpers as needed: `git.unkin.net/unkin/benvin-utils/common/tui`, `git.unkin.net/unkin/benvin-utils/common/kube`. 3. That's it — `make mytool`, `make all`, and `make install` pick it up automatically.