If you want the source:
git clone https://dev.waynewerner.com/pub/repos/self-updater.git
This is a very basic app that performs no particularly useful task, aside from
updating itself via pip.
This runs with a --dev flag to increase verbosity. You can also run with
--server in order to start a flask webserver.
Let's install:
mkdir -p /tmp/asdf
cd /tmp/asdf
uv venv
source .venv/bin/activate
uv pip install self-updater==2026.2.0 --index=https://dev.waynewerner.com/python
Usage:
$ self-updater --version
2026.2.0.dev1 -- Up-to-date!
Then after a new update is available:
$ self-updater --version
2026.2.0.dev1 -- Update available! New version 2026.2.0.dev2
To update:
$ self-updater --update
Updating versions 2026.2.0.dev1 -> 2026.2.0.dev2 ...
Done!
$ self-updater --version
2026.2.0.dev2
What if something goes wrong, though, because it's a bad version?
$ self-updater --version
2026.2.0.dev2 -- Update available! New version 2026.2.0.dev3
$ self-updater --update
Updating versions 2026.2.0.dev2 -> 2026.2.0.dev3 ...
ERROR - 2026.2.0.dev3 version check failed! Rolling back to 2026.2.0.dev2 ...
Done!
$ self-updater --version
2026.2.0.dev2
Finally, let's try out the web version:
$ self-updater --server --dev