Skip to content

Updating

Terminal window
loadout update --check # is there a newer release?
loadout update # install it

Upgrading loadout does not update your shell.

The generated file is output, and loadout does not rewrite it behind your back — you might have deliberately not applied something. So after any upgrade:

Terminal window
loadout apply

Release notes state this explicitly whenever the shipped catalog changed. That part is computed rather than remembered: the release process diffs the golden files against the previous tag, and when the generated shell changed, the notes say so. Without that line an upgrade looks like it did nothing.

It will not overwrite what it does not own

Section titled “It will not overwrite what it does not own”

loadout update only replaces the binary when loadout owns the file. Otherwise it prints the right command instead:

Installed withUpdate with
The install scriptloadout update
Homebrewbrew upgrade loadout
go installgo install ...@latest

Overwriting a Homebrew-managed file behind brew’s back leaves it reporting a version it never installed, and the next brew upgrade will happily overwrite your update. Refusing is the correct behaviour, and the message names which tool owns the file.

  • HTTPS on every redirect hop, not only the first URL.
  • The published checksum is verified before anything is installed.
  • A release publishing no checksum is refused outright rather than installed unverified.
  • The replacement is a rename, so an interrupted update cannot leave a broken binary on your PATH.
Terminal window
loadout update --check # report only, install nothing
loadout update --force # install even when versions cannot be compared
loadout update --release v0.2.1 # a specific version
loadout update --base-url https://... # a mirror

--base-url also reads LOADOUT_BASE_URL, and --release reads LOADOUT_VERSION.

loadout accepts vMAJOR.MINOR.PATCH and nothing else. A development build, a pre-release suffix or a commit SHA reports as not comparable rather than being coerced into an ordering that might be wrong.

That is what --force is for: it installs the latest release without needing the comparison to succeed. A build from go install at a commit is the usual reason to reach for it.

Terminal window
$ loadout update --check
installed: v0.2.0
latest: v0.2.1
installed via homebrew
An update is available: v0.2.0 -> v0.2.1

It names the install method, so you know which command to run before you run the wrong one.

Terminal window
loadout version
loadout apply # the step that actually reaches your shell
loadout doctor