Skip to content

nomanfoundhere/bewupdate

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

homebew

bewupdate

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.

bewupdate demo
recorded at --speed 15 (the real thing takes its time)

Install

The correct way, given the name:

brew install nomanfoundhere/tap/bewupdate

The direct way:

curl -fsSL https://raw.githubusercontent.com/nomanfoundhere/bewupdate/main/bewupdate \
  -o /opt/homebrew/bin/bewupdate && chmod +x /opt/homebrew/bin/bewupdate

Any directory on PATH works: /usr/local/bin for Intel Macs and most Linux boxes.

Use

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.

Theme showcase

apt — Get: lines, status-bar percentages, packages kept back

apt theme

pacman — :: database sync, MiB/speed columns, parallel downloads

pacman theme

macos — softwareupdate items, bare Progress: percentages

macos theme

npm — the reify gauge, deprecation WARNs, vulnerabilities on exit

npm theme

docker — layers pulled by hash, megabyte counts, the digest

docker theme

cargo — a compile waterfall behind the Building gauge

cargo theme

pip — Collecting/Downloading pairs, the resolver taking a while

pip theme

dnf — rpm columns, metadata expiration, Complete!

dnf theme

What a run looks like

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.

Requirements

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.

FAQ

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.

About

A system update that isn't. Nine package managers' worth of convincing terminal theater.

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages