main
Add a monorepo for small single-purpose CLI tools that share a common library, so tools reuse TUI primitives and Kubernetes client bootstrapping instead of duplicating them. - common/tui: direction markers, style palette, width-aware padding/layout - common/kube: in-cluster→kubeconfig client loading + core/metrics clients - podgap: live TUI comparing pod requests/limits vs actual usage, with up/down markers showing per-pod change since the last refresh - Makefile auto-discovers tool directories: make <tool> | all | install
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/ 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 |
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.
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
mkdir mytool && $EDITOR mytool/main.gowithpackage main.- Import shared helpers as needed:
git.unkin.net/unkin/benvin-utils/common/tui,git.unkin.net/unkin/benvin-utils/common/kube. - That's it —
make mytool,make all, andmake installpick it up automatically.
Description
Languages
Go
91.9%
Makefile
8.1%