8a0e3ee9e4eafd9152caa0a64b450d23357b5f6c
`run()` and `shell()` now default to a 30-minute cap (generous enough for heavy apt/brew installs and large downloads, bounded enough to catch a true hang). Callers can override per-call. All remaining direct subprocess.run sites have explicit timeouts sized to the work they do: short caps for read-only probes (rpm, dpkg, brew list, flatpak info, gh auth status, xcode-select -p, sysctl, VBoxManage), a 60-minute cap for the pyenv Python compile, a 15-minute cap for the interactive `gh auth login` browser flow, and ConnectTimeout+30s for the VM SSH helper. A small `_probe()` wrapper centralizes the probe pattern. On timeout the bootstrap now warns and either fails the check gracefully or returns rc=124, rather than blocking indefinitely. https://claude.ai/code/session_01447pnRM4ogyxs5tVCUNDZW
Usage
curl -L -o bootstrap.zip https://github.com/JMR-dev/bootstrap_dev_env/archive/refs/heads/main.zip && \
unzip bootstrap.zip && \
cd bootstrap_dev_env-main && \
python3 bootstrap_environment.py
Description
Bootstrap tool for setting up dev/workstation environments for several different POSIX operating systems and workloads
6.5 MiB