Skip to content

πŸš€ godspeed 0.2.0

Choose a tag to compare

@github-actions github-actions released this 17 Oct 10:03
· 48 commits to main since this release
e573cd7

πŸš€ godspeed 0.2.0 - install it, and that's the setup

The developer CLI for GodspeedOS. This release removes the setup:
no clone of the OS, no environment variable, no registry address. The CLI also updates itself, and checks a
publish before anything leaves your machine.

godspeed new service hello         # πŸ“¦ no GodspeedOS clone needed any more
godspeed self update               # ⬆️ from now on, this is how you update
godspeed fetch godspeed/hello      # πŸ›‘οΈ no flags: the official registry and its root of trust are built in
godspeed publish --dry-run         # πŸ§ͺ everything but the upload

πŸ“– Guide and examples: https://godspeedhq.github.io/godspeed-cli/

Coming from 0.1.0? It has no self update yet, so update this once by running the installer again (below).
From 0.2.0 on, godspeed self update does it.

✨ What's new

  • πŸ“¦ No OS checkout needed. The CLI fetches the few small files that describe a GodspeedOS release - its
    pinned compiler, targets, compiler flags, linker script and contract schema - the first time it needs that
    release, from one commit of the release tag, and caches them with their checksums (a damaged cache is
    fetched again, never used). godspeed new uses the latest release, or --os-release 0.28.0; a project keeps
    the release it was made with. --os <path> still builds against a checkout, for work on the OS itself.
  • ⬆️ godspeed self update, as with rustup: it downloads the latest release's build for your machine,
    checks it against the release's SHA256SUMS, runs it, and only then swaps it in. A mismatch, or a binary that
    does not run, changes nothing. The update notice and doctor now point here.
  • 🧹 godspeed self uninstall removes the binary, its folder and the PATH entries the installer added -
    after listing them and asking (--yes to skip). It keeps your signing key and tokens, and says where they are.
  • 🌍 The official registry is the default, with its root of trust built into the CLI. fetch, login,
    whoami and publish need no --registry, and a first fetch accepts the registry only if its root matches
    the one built in. --registry, GODSPEED_REGISTRY and login still choose any other.
  • πŸ§ͺ godspeed publish --dry-run packages, signs, checks your token, your namespace and whether the version is
    free, then says what publishing would do. Nothing is uploaded.
  • πŸ†• godspeed new service hello --publisher alice fills in the publisher, so the project packages straight away.
  • ⌨️ Tab completion: godspeed completions bash | zsh | fish | powershell | elvish
    (godspeed completions --help says how to load it).
  • πŸ€– --json on doctor, verify, package, fetch and whoami, for CI and scripts. Refusals come as JSON
    too, with a stable kind and the same exit code.
  • 🎨 Colour in error messages on a terminal (NO_COLOR turns it off).
  • 🚦 New exit code 29, cancelled: you declined, or there was no terminal to ask and --yes was not given.

πŸ”¬ Tested harder

  • The "nobody knows if it published" path now has an end-to-end test: a real build and publish against a stand-in
    registry whose final step never answers. The CLI reads the index and reports published when it was, and
    outcome unknown (exit 25) when it cannot tell - never a guess.

🚧 Still waiting on GodspeedOS

godspeed run, godspeed install, and the utility, app and driver kinds - as in 0.1.0, the CLI says what the OS
is missing instead of pretending.

πŸ’» Builds

🐧 Linux x86_64 and Arm64 (static, any distribution) Β· 🍎 macOS Apple silicon and Intel Β· πŸͺŸ Windows x64 and Arm64.
Built against GodspeedOS v0.28.0.

⬇️ Install

🐧🍎 Linux or macOS:

curl --proto '=https' --tlsv1.2 -sSf https://github.com/godspeedhq/godspeed-cli/releases/latest/download/install.sh | sh

πŸͺŸ Windows (PowerShell):

irm https://github.com/godspeedhq/godspeed-cli/releases/latest/download/install.ps1 | iex

πŸ” The installers check each binary against SHA256SUMS before running it. A checksum shows the file is
the one this release lists; releases are not signed yet.

⬆️ Already on 0.2.0 or later? godspeed self update.