Skip to content

Add Windows Scoop packaging and publish recipe - #311

Merged
l1a merged 1 commit into
mainfrom
feature/scoop-packaging
Oct 31, 2026
Merged

l1a merged 1 commit into
mainfrom
feature/scoop-packaging

Conversation

@l1a

@l1a l1a commented Oct 31, 2026 •

Copy link
Copy Markdown
Owner

Summary

Adds first-class Windows Scoop packaging and publishing (https://github.com/l1a/scoop-retch) using the same zero-drift template architecture as the AUR (packaging/aur/PKGBUILD), COPR (packaging/copr/retch.spec), and Homebrew (packaging/homebrew/retch.rb) channels.

What changed and why

  • Template manifest (packaging/scoop/retch.json):
    • Carries @VERSION@, @SHA256_X86_64@, and @SHA256_ARM64@ sentinels in-repo so no released version or checksum is committed to drift.
    • Uses #/retch.exe URL fragments on both retch-windows-x86_64.exe (64bit) and retch-windows-arm64.exe (arm64) so Scoop renames the downloaded binary to retch.exe on install and exposes it through "bin": "retch.exe".
    • Includes "checkver": "github" and "autoupdate" URL templates.
  • Renderer & offline guards (scripts/render_packaging.py, scripts/scoop_check.py, scripts/metadata_check.py):
    • Extended scripts/render_packaging.py with --target scoop, --sha256-x86-64, and --sha256-arm64 plus self-tests.
    • Added scripts/scoop_check.py (wired into just check via scoop-check) to assert that packaging/scoop/retch.json stays valid JSON, retains all three sentinels, leaks no literal version or 64-hex digest, and keeps its #/retch.exe, bin, checkver, and autoupdate invariants.
    • Extended scripts/metadata_check.py to verify that packaging/scoop/retch.json's description and license match packaging/metadata.toml.
  • Publishing & CI (Justfile, .github/workflows/packaging.yml):
    • Added just scoop-publish VERSION to download both Windows .exe assets from the GitHub Release for v<VERSION>, compute their SHA-256 digests, render bucket/retch.json, and push to git@github.com:l1a/scoop-retch.git (gated by SCOOP_CONFIRM).
    • Added a scoop job on windows-latest in .github/workflows/packaging.yml that runs scoop_check.py, renders the manifest for the latest released tag against the real GitHub Release .exe assets, stages a local bucket, and verifies scoop install and retch --version.
  • Documentation & version bump:
    • Bumped retch-cli to 0.20.36 and regenerated docs/retch.1 (just man).
    • Updated README.md, AGENTS.md, NOTES.md, and the GitHub Wiki (Home.md, Getting-Started.md, Development-Setup.md).

Test plan

  • python scripts/render_packaging.py --self-test
  • python scripts/scoop_check.py --self-test && python scripts/scoop_check.py
  • python scripts/metadata_check.py --self-test && python scripts/metadata_check.py
  • just check and just test pass locally on Windows 11 (irulan)
  • Published v0.20.34 to l1a/scoop-retch via just scoop-publish 0.20.34 and verified scoop bucket add l1a https://github.com/l1a/scoop-retch && scoop install l1a/retch installs retch 0.20.34 cleanly
  • All GitHub Actions CI checks pass (including the new Packaging Verification / scoop job on windows-latest)

- Add template manifest `packaging/scoop/retch.json` carrying `@VERSION@`,
  `@SHA256_X86_64@`, and `@SHA256_ARM64@` sentinels, with `#/retch.exe`
  URL fragments for both `64bit` (`retch-windows-x86_64.exe`) and `arm64`
  (`retch-windows-arm64.exe`), `"bin": "retch.exe"`, `"checkver": "github"`,
  and `"autoupdate"`.
- Extend `scripts/render_packaging.py` with `--target scoop`,
  `--sha256-x86-64`, and `--sha256-arm64` flags plus self-tests.
- Add offline template guard `scripts/scoop_check.py` (wired into
  `just check` via `scoop-check`) and extend `scripts/metadata_check.py`
  to check `packaging/scoop/retch.json`'s `description` and `license`
  against `packaging/metadata.toml`.
- Add `just scoop-publish VERSION` to `Justfile` to download both
  GitHub Release `.exe` assets, compute their SHA-256 digests, render
  `bucket/retch.json`, and push to `l1a/scoop-retch` (gated by
  `SCOOP_CONFIRM`).
- Add a `scoop` CI verification job on `windows-latest` in
  `.github/workflows/packaging.yml`.
- Bump `retch-cli` to `0.20.36`, regenerate `docs/retch.1`, and update
  `README.md`, `AGENTS.md`, and `NOTES.md`.

Assisted-By: Claude Opus 4.6
@l1a
l1a force-pushed the feature/scoop-packaging branch from 93dc40b to 7152172 Compare October 31, 2026 21:23
@l1a
l1a merged commit 134ac3e into main Oct 31, 2026
26 checks passed
@l1a
l1a deleted the feature/scoop-packaging branch October 31, 2026 21:42
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant