Skip to content

Latest commit

 

History

History
95 lines (65 loc) · 1.68 KB

File metadata and controls

95 lines (65 loc) · 1.68 KB

Self-Update

Source of truth:

  • crates/core/src/updater.rs
  • crates/cli/src/main.rs
  • crates/config/src/lib.rs
  • infra/releases-worker/

Commands

qvl update
qvl update --force
qvl update --list-backups
qvl update --rollback latest
qvl update --rollback /path/to/backup
qvl uninstall [--yes]

Update source

The updater reads release metadata from:

  • GET https://get.quavil.com/version

and downloads tarballs from:

  • GET https://get.quavil.com/download/<os>/<arch>?version=<version>

Default config:

[update]
enabled = true
check_interval_hours = 4
release_url = "https://get.quavil.com"

Update flow

  1. load throttle/skip state from the SQLite state store
  2. validate release_url
  3. fetch <release_url>/version
  4. compare semantic versions
  5. construct the platform download URL
  6. download the tarball and verify SHA-256
  7. back up the current binary
  8. replace the binary in place
  9. verify the new binary with --version
  10. run post-update integrity checks

Backups

Backups are stored in:

  • <data_dir>/backups/

They are named like:

  • qvl-v3.0.1-<timestamp>

Behavior:

  • newest-first listing
  • automatic pruning to 3 backups
  • rollback via binary self-replace

URL validation

The updater:

  • requires https
  • blocks cloud metadata hosts
  • warns on non-default hosts for self-hosted setups

Install path

The public install surface is:

curl -fsSL https://get.quavil.com | sh

That script is served by the release Worker and pulled from the same release bucket as the metadata and archives.

Uninstall

qvl uninstall removes:

  • the binary
  • config
  • data
  • backups
  • PATH entries previously written by Quavil install scripts