update
Update the Floot CLI itself, however you installed it.
floot updateTakes no flags. It is the same command on every install channel, so any message that asks you to update names this one command and never has to know how you installed. What happens behind it depends on the channel.
| Installed with | floot update does |
|---|---|
| The install script | Downloads the latest release for your machine, checks its checksum and replaces the binary in place. |
| pub.dev | Updates itself through pub.dev. |
| Homebrew | Offers to run brew upgrade floot. |
| Scoop | Offers to run scoop update floot. |
The CLI knows its channel because the install stamps it into the binary. You never pass it.
Install script
floot update fetches the newest release for your platform, checks the archive
against the checksum that release publishes, and replaces the running binary
atomically. If the checksum does not match, nothing is installed.
It reports Checked for updates, then Updated to <version> with the version
it installed. When you are already current it prints
CLI is already at the latest version. and stops.
pub.dev
floot update asks pub.dev for the latest floot_cli and, if yours is older,
runs the global activation for you. It prints the same lines as the install
script, including the one for when there is nothing to do.
Homebrew and Scoop
A package manager owns the binary it installed. Replacing that binary from the
outside leaves the manager pointing at a file that is no longer there, so on
these channels floot update never replaces anything. It prints the manager's
own command and, when a terminal is attached, offers to run it:
This CLI was installed with Homebrew, which owns the binary.
Update it with brew upgrade floot
Run it now?On Scoop the second line reads Update it with scoop update floot. Answer yes
and the manager's command runs in your terminal; answer no, or run without a
terminal, and floot update exits successfully having changed nothing. If the
manager's command fails, floot update reports it and exits with code 69:
brew upgrade floot exited 1. Run it yourself to see what it reported.When it refuses
floot update refuses in two cases, and in both the only safe answer is to
reinstall. It never guesses, because overwriting a binary that a package manager
owns corrupts that manager's records. Both exit with code 69.
The package manager is missing. The binary was installed by Homebrew or
Scoop, but that manager is not on your PATH now, so only it could replace the
binary:
This CLI was installed with Homebrew, which is not on your PATH, so only Homebrew can replace it. Reinstall it with: brew install floot-dev/floot/flootFor Scoop the message names Scoop and ends with
scoop install floot.
The channel is missing or unknown. The binary carries no install stamp, or a stamp this version does not recognise, so nothing can be inferred about how it got there:
This CLI cannot tell how it was installed, so it will not replace itself. Reinstall it with: curl -fsSL https://floot.dev/install.sh | shOn Windows the message ends with irm https://floot.dev/install.ps1 | iex
instead.
When your CLI is too old
Floot can require a minimum CLI version, for security fixes and protocol
changes. The check happens when the CLI calls Floot, so a CLI below that floor is
refused on its next online call, and exits with code 69. A run that never
reaches Floot, such as an offline create from a cached release, does not meet
it:
This Floot CLI is older than this server supports. Run `floot update` and try again.The instruction is always floot update, whatever the channel, so it is always
one command. A kit that needs a newer CLI than yours says the same:
Kit 1.4.0 needs a newer Floot CLI. Run `floot update`.The update notice
After any other command, the CLI compares its version with the latest one published on pub.dev and, if there is a newer one, prints a notice as the last thing in the run, so it never interrupts a prompt:
Update available! 1.1.0 → 1.2.0
Run floot update to updateThe command in the second line is your channel's own: brew upgrade floot under
Homebrew, scoop update floot under Scoop.
No notice with --offline
A run that carries --offline makes no network call at all, so it skips this
check too.