Release engineering: script, package managers, completions, docs by jeremy · Pull Request #171 · basecamp/basecamp-cli
AI review requested due to automatic review settings
February 28, 2026 20:25Add release orchestration: - scripts/release.sh: validates semver, branch, clean tree, sync, no replace directives, runs make release-check, tags and pushes - Makefile: replace-check, release-check (check + replace-check + vuln + race-test), release targets Activate package manager distribution: - Homebrew cask via basecamp/homebrew-tap Casks/ - Scoop manifest via basecamp/homebrew-tap root - AUR basecamp-bin package with shell completions Bundle shell completions (bash, zsh, fish) in release archives via GoReleaser before hooks. Remove Docker release channel (binary CLI with browser OAuth, keyring, and shell integration doesn't work in containers; eliminates QEMU build time and failure mode). Add RELEASING.md maintainer runbook, CODEOWNERS, PR template. Align install.md and README.md with working install matrix.
- provides: [basecamp] — declares the binary this package provides - conflicts: [basecamp, basecamp-cli] — prevents dual-install with existing basecamp-cli AUR package - optdepends for shell completion packages - Fix pkgdesc to follow AUR style (no articles, descriptive)
- Rename LICENSE.md → MIT-LICENSE for consistency with other repos - Update all references (.goreleaser.yaml AUR package, README.md) - Add check-surface-compat target: builds previous tag in worktree, diffs CLI surface against current — mirrors CI release gate - Wire check-surface-compat into release-check - Fix help text for release-check (was missing race + surface compat)
Copilot AI review requested due to automatic review settings
February 28, 2026 20:51- Fix DRY_RUN=1 not recognized as dry-run (only "true" matched) - Fix grep patterns: \s is not POSIX, use [[:space:]] in Makefile and release.sh - Update RELEASING.md to reference make release-check (not make check) and enumerate all pre-flight checks
- Add MIT-LICENSE explicitly to archive files (LICENSE* glob doesn't match MIT-LICENSE prefix) - Pass DRY_RUN as env var from Makefile to release.sh so make release VERSION=x.y.z DRY_RUN=1 works correctly - Use mktemp for worktree path in check-surface-compat with trap cleanup to avoid stale worktree collisions
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters