A collection of useful scripts and small standalone tools. Each lives in its
own subdirectory with its own Makefile, README.md, and tests, so projects
stay self-contained and can be run independently.
| Project | What it does |
|---|---|
azure-nsg-ip-updater |
Keeps one or more Azure NSG security rules pointed at this host's current public IPv4 — handy for whitelisting a dynamic residential IP from cron. |
scripts/
├── pyproject.toml # uv workspace root (shared .venv lives at ./.venv)
├── .github/workflows/ # CI — runs project test suites via `make test`
└── <project>/ # one directory per script/tool
├── Makefile # canonical entrypoint: make help / test / run / ...
├── README.md # project-specific docs
├── src/ + tests/
└── ...
This repo is a uv workspace: projects share a
single virtual environment at ./.venv rather than each maintaining its own
interpreter.
Each project is driven through its Makefile. From inside a project directory:
make help # list available targets
make install # install dependencies into the shared ../.venv
make test # run the test suite
make run # run the tool (see the project README for required config)- One directory per script/tool, self-contained with its own docs and tests.
Makefileis the entrypoint — humans and CI both invokemake <target>.- Tests required — new projects ship with a test suite wired into
make test. - Secrets stay local —
.envfiles are git-ignored; commit only.env.example.
- Create a new subdirectory with
src/,tests/, aMakefile, and aREADME.md. - Wire up
make install/make testfollowing an existing project as a template. - Add it to the Projects table above and to CI if it should run on push.