From 2a1b3fb770037a6792720aad7deba476b8e1a8a9 Mon Sep 17 00:00:00 2001 From: James Henderson Date: Tue, 11 Aug 2026 12:57:27 +0100 Subject: [PATCH] track the AUR package as a submodule, and document it as a release channel MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The AUR package sat on 3.5.0 through three patch releases. Nothing in the repo pointed at it: `docs/releasing.md` listed five artifacts and marked all five as published by CI, so the sixth channel was invisible from the one document a release is run out of. - **The submodule makes drift checkable from here.** `git submodule status` says which version the AUR is on, so a stale package shows up in the monorepo rather than in a user's `pacman -Syu`. - **`.gitmodules` uses the HTTPS URL, not SSH.** This repo is public, and the AUR's SSH URL needs a registered maintainer key even to clone, so `--recurse-submodules` would fail for every outside contributor. HTTPS on the AUR is read-only; maintainers set the push URL locally, and `aur/README.md` carries the command and the reason. - **`release.sh` still doesn't touch the AUR**, and the docs now say so in both the scripted and the manual path rather than only in the new section — the manual checklist is where someone mid-release actually looks. - **Automating it stays out of scope.** An AUR push needs a maintainer's SSH key as a CI secret, which is a separate decision from tracking the package here. Co-Authored-By: Claude Opus 5 --- .gitmodules | 3 +++ aur | 1 + docs/releasing.md | 18 ++++++++++++++++-- 3 files changed, 20 insertions(+), 2 deletions(-) create mode 100644 .gitmodules create mode 160000 aur diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..7a2dea2 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "aur"] + path = aur + url = https://aur.archlinux.org/allium-tools.git diff --git a/aur b/aur new file mode 160000 index 0000000..1fae9c5 --- /dev/null +++ b/aur @@ -0,0 +1 @@ +Subproject commit 1fae9c58a66aba42c50ffb9b95e2c08e44a45779 diff --git a/docs/releasing.md b/docs/releasing.md index dbdc7c2..10e88d1 100644 --- a/docs/releasing.md +++ b/docs/releasing.md @@ -2,7 +2,7 @@ Pushing a `v*` tag triggers the release workflow, which builds and publishes all artifacts: Rust binaries, VSIX, npm tarballs, LSP and tree-sitter outputs. Everything ships from a single tag. -Publishing is fully automated: CI publishes the GitHub release, pushes the crates to crates.io (`publish-crates` job, via the `CARGO_REGISTRY_TOKEN` secret) and updates the Homebrew formula (`update-homebrew` job, via the `HOMEBREW_TAP_TOKEN` secret). No local crates.io login or tap checkout is needed. +Publishing is automated for every channel except the AUR: CI publishes the GitHub release, pushes the crates to crates.io (`publish-crates` job, via the `CARGO_REGISTRY_TOKEN` secret) and updates the Homebrew formula (`update-homebrew` job, via the `HOMEBREW_TAP_TOKEN` secret). No local crates.io login or tap checkout is needed. The AUR package is bumped by hand once the tag is live — see [AUR](#aur) below. ## What goes where @@ -13,6 +13,7 @@ Publishing is fully automated: CI publishes the GitHub release, pushes the crate | VSIX | GitHub release | CI | | npm tarballs (allium-cli, allium-lsp, tree-sitter) | GitHub release | CI | | Homebrew formula | homebrew-allium tap | CI | +| AUR package | aur.archlinux.org/allium-tools | manual — see [AUR](#aur) | ## Running a release @@ -24,13 +25,26 @@ This bumps versions, commits, tags, pushes, and watches CI through to completion For major language version bumps, also follow the checklist in `docs/versioning.md`. -Requires `gh` (GitHub CLI) and `cargo` on the PATH. +Requires `gh` (GitHub CLI) and `cargo` on the PATH. It does not touch the AUR. + +## AUR + +The AUR package is the one channel neither CI nor `release.sh` publishes, so it goes stale silently until someone bumps it by hand. It builds `allium` from the release source tarball, which means a bump is only ever "point at the new tag, refresh the checksum, build once to check". + +`aur/` is a submodule tracking the AUR repo. The procedure lives in `aur/README.md`: + +```bash +git submodule update --init aur +``` + +Pushing needs an AUR account whose SSH key is registered against the package, so the submodule clones read-only over HTTPS; maintainers set the push URL locally. ## Manual steps (if not using the script) 1. Bump versions: `./scripts/version-bump.sh ` 2. Commit, tag and push: `git add -A && git commit -m "v" && git tag v && git push origin main --tags` 3. Watch CI build, attach and publish everything +4. Bump the AUR package — see [AUR](#aur). Needed whether or not you used the script. If the CI publish jobs fail, the fallbacks are `cargo publish -p allium-parser && cargo publish -p allium-cli` (needs a crates.io login) and `./scripts/update-homebrew-formula.sh ` plus a push of the `homebrew-allium` tap repo.