A system update that isn't.
bewupdate puts on a complete software update in the terminal: package
fetches with per-package transfer rates, kernel module rebuilds,
certificate rotations, maintenance spinners, the stall at 87%. Two or
three times per run it stops and asks permission to install something,
and the answer gets typed like it matters. Nothing is downloaded and
nothing on the machine changes: the update consists entirely of looking
right.
It exists because updates are satisfying to watch and real systems refuse to need one on demand.
recorded at --speed 15 (the real thing takes its time)
The correct way, given the name:
brew install nomanfoundhere/tap/bewupdateThe direct way:
curl -fsSL https://raw.githubusercontent.com/nomanfoundhere/bewupdate/main/bewupdate \
-o /opt/homebrew/bin/bewupdate && chmod +x /opt/homebrew/bin/bewupdateAny directory on PATH works: /usr/local/bin for Intel Macs and most
Linux boxes.
bewupdate # one full update, about 3 minutes
bewupdate --forever # updates until stopped
bewupdate --theme pacman # in the Arch dialect
bewupdate --time 10 # stretch the show to ~10 minutes| Option | Effect |
|---|---|
--forever |
endless updates; prompts answer themselves |
-y, --yes |
one unattended run, prompts answer themselves |
--time N |
stretch or shrink the run to about N minutes |
--speed X |
speed multiplier (--speed 2 is twice as fast) |
--theme NAME |
brew (default), apt, pacman, macos, npm, docker, cargo, pip, or dnf |
y installs the component (it does not). n defers it to the next
cycle (there is no next cycle). Ctrl-C aborts cleanly and reports that
the system remains exactly as it was, which was always true.
man bewupdate covers the rest.
Each run draws its own program from a pool of phases: security patches applied by CVE number, firmware staged behind a warning about not powering off, a kernel compiled from source, database schema migrations, CA bundle updates, locale generation, checksum verification, service restarts, autoremoval of packages that were never there. No two runs match, which is more than real updaters can say.
The downloads behave like downloads. Every package draws a speed
personality: some saturate the pipe at 90 MB/s, some crawl in at
200 kB/s from a server in a basement, some stall mid-bar, and about one
in twelve slips backward. Mirrors time out and fail over, checksums
mismatch and retry, dependency conflicts resolve at depth 14, and
sometimes everything waits on /var/lib/bew/lock first. The disk
space check passes by exactly the margin it needs. Some packages have
been kept back.
Each theme renders in its manager's native style, down to the shape of
the progress bars: brew draws curl's bare hash rows and pours bottles
into /opt/homebrew/Cellar with the 🍺 to prove it, docker counts
megabytes into Pull complete per layer, pacman lays out its MiB and
speed columns, pip runs the heavy-line bar with an ETA, cargo compiles
a waterfall behind a Building gauge, and macOS announces
Progress: 47% and nothing more. Phases are gated per ecosystem:
kernel modules rebuild only where a kernel plausibly lives (apt, dnf,
pacman), npm deprecates packages nobody asked for and finds
vulnerabilities on the way out, and dnf asks Is this ok [y/N]: the
way it always has.
Bash 3.2 or later: a stock Mac runs it with no dependencies, and so
does any Linux. Piped output drops the colors and cursor tricks, and
NO_COLOR is respected.
Does it ever touch the system? No. The script contains no file writes and no network calls: printing and sleeping are the whole instruction set. Read it, it's one file.
What happens on n to everything? The components are deferred and retried next cycle. Version numbers are invented fresh each run, so a deferred component may come back older. Updates deferred long enough resolve themselves, here as elsewhere.
Why were 3 packages kept back? Nobody has ever known.








