Update esbi-cli¶
How you find out that a new version exists, and how to install it. Nothing updates by itself: you see a line, you run sb update, and it asks before it does anything.
How you learn there is a new version¶
Three places tell you, and none of them slows a command down:
- A line after a command. When you run a command in a terminal and a newer release is known, one line appears at the end, on stderr (so a pipe is not affected):
esbi-cli X.Y.Z is available (you have 0.4.1). Update with: sb update
It never appears after sb run (the nightly job), sb schedule, sb update, sb setup, sb init, sb version or sb doctor, when the output goes to a file or a script instead of a terminal, or after a command that failed.
- sb doctor has a version line: ok version: 0.4.1 (latest), or WARN version: X.Y.Z is available, runsb update` (X.Y.Z being the newer release).
- **sb version --check** asks right now and prints the installed and the latest version. A plainsb version` stays offline and instant.
The check asks GitHub at most once a day, remembers the answer in ~/.cache/esbi-cli/update.json ($XDG_CACHE_HOME/esbi-cli if you set it), and after a failure waits an hour before it tries again, so being offline costs nothing. It gives up after 5 seconds.
Update with sb update¶
sb update
installed: 0.4.1
latest: X.Y.Z
method: brew
Will run: brew upgrade rubenamaury/esbi-cli/esbi-cli
Run it now? [y/N]
It works out how esbi-cli was installed, shows the exact command and waits for a y. The command runs as it is shown, with no shell in between, and its output appears as it comes. When it ends successfully:
Updated to X.Y.Z. Run `sb version` to confirm.
It names the version that is installed afterwards. When the nightly job is loaded it adds The nightly job was written by the old version: run `sb schedule install`.: it never changes launchd itself. If the command ran and exited 0 but the installed version is the same (a uv tool pinned to an exact version, or a release the package index does not list yet), it does not pretend:
Nothing changed: X.Y.Z is still installed. The command found nothing to upgrade (an exact version pin, or the new release is not on the package index yet: try again in a few minutes).
Wait a few minutes and run sb update again, or update by hand (below).
| Option | Meaning |
|---|---|
--dry-run |
Only print the command |
--yes, -y |
Do not ask (for a script). Without a terminal and without --yes, sb update refuses and runs nothing |
Read the changelog first when the minor version changes: while the major version is 0, it may change a command or the config format, and it says so.
What it runs for each install method¶
| Installed with | sb update runs |
|---|---|
| Homebrew | brew upgrade rubenamaury/esbi-cli/esbi-cli |
uv tool install esbi-cli (PyPI) |
uv tool upgrade esbi-cli |
uv tool install git+... |
uv tool upgrade esbi-cli |
pipx |
pipx upgrade esbi-cli |
pip in a virtual environment |
python -m pip install --upgrade <the release's archive on GitHub>, using the Python that runs sb |
| A source checkout | Nothing: it says git pull, then uv sync |
A uv tool pinned to a git tag or a wheel |
Nothing: uv tool upgrade cannot move a pinned install, so it prints the reinstall command to run |
| Something it does not recognise | Nothing: it lists the commands above |
By hand¶
The same updates without sb update:
brew upgrade rubenamaury/esbi-cli/esbi-cli
uv tool upgrade esbi-cli
pipx upgrade esbi-cli
A wheel from a GitHub release: download the new one, then uv tool install --force ~/Downloads/esbi_cli-X.Y.Z-py3-none-any.whl. A source checkout: git pull, then uv sync (or uv tool install --editable . --force after a new dependency).
Afterwards, sb version shows the new version and sb doctor shows anything the new version wants different. Your vault and config are not touched.
The nightly job keeps working¶
On macOS the nightly job is a launchd agent that remembers where sb lives. Homebrew keeps each version in its own folder (.../Cellar/esbi-cli/0.4.1/...) and deletes the old one on an upgrade, so a job that pointed there would stop. sb schedule install now writes the stable path Homebrew keeps pointing at the current version (.../opt/esbi-cli/libexec), so the job keeps working after an upgrade. sb update still ends with The nightly job was written by the old version: run `sb schedule install`. whenever the job is loaded: running it is harmless, and it rewrites the job from the new version.
If you installed the job with an older version, sb doctor shows WARN nightly job: points into a versioned Homebrew folder. Run sb schedule install once to fix it; it is safe to repeat.
Turn the check off¶
In config.toml:
[update]
check = false
Or, in your shell profile, export ESBI_NO_UPDATE_CHECK=1, which wins over the config. Then no line appears, sb doctor says (update check is off), and nothing asks GitHub. sb update and sb version --check still do, because you asked them to.
What the check sends¶
One anonymous HTTPS GET to https://api.github.com/repos/RubenAmaury/esbi-cli/releases/latest, with a User-Agent that names esbi-cli and its version. No vault data, no config, no identifier of you or your machine. GitHub sees your IP address, as any website does. The answer is read as untrusted text: only the version tag and the release page address are used, and only when they have the expected shape. The scheduled run never checks. More on what leaves your machine: Safety and privacy.
To remove the program, see Update and uninstall.