Summary
.github/workflows/release.yml builds a single artifact per release:
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 \
go build -trimpath -ldflags="-s -w" \
-o find-replace-linux-amd64 .
Published releases (e.g., v1.5.3) attach find-replace-linux-amd64 only. macOS users (intel + arm), Windows users, and Linux/arm64 users (now the default on AWS Graviton, GitHub-hosted Linux arm runners, Raspberry Pi, etc.) have no binary to install — they must build from source.
The tool's stdlib usage is essentially portable; the only platform-specific concern is the future os.Chown/setuid handling in issues #17/#18, which can be gated with chown_unix.go + chown_windows.go build tags (already attempted on the audit branch).
Impact (Cross-platform: Medium)
- Excludes a meaningful fraction of the user base from a one-line install.
- README's "fast find & replace shell command" reads like a portable utility, but the release artifacts don't match.
Suggested Fix
Replace the single build step with a matrix:
strategy:
matrix:
include:
- { goos: linux, goarch: amd64 }
- { goos: linux, goarch: arm64 }
- { goos: darwin, goarch: amd64 }
- { goos: darwin, goarch: arm64 }
- { goos: windows, goarch: amd64, ext: ".exe" }
For each, build find-replace-${goos}-${goarch}${ext} and attach all to the GitHub Release.
Also emit a SHA256SUMS file alongside the artifacts (sha256sum find-replace-* > SHA256SUMS) so users can verify downloads.
Files
.github/workflows/release.yml:121-159
Summary
.github/workflows/release.ymlbuilds a single artifact per release:Published releases (e.g.,
v1.5.3) attachfind-replace-linux-amd64only. macOS users (intel + arm), Windows users, and Linux/arm64 users (now the default on AWS Graviton, GitHub-hosted Linux arm runners, Raspberry Pi, etc.) have no binary to install — they must build from source.The tool's stdlib usage is essentially portable; the only platform-specific concern is the future
os.Chown/setuid handling in issues #17/#18, which can be gated withchown_unix.go+chown_windows.gobuild tags (already attempted on the audit branch).Impact (Cross-platform: Medium)
Suggested Fix
Replace the single build step with a matrix:
For each, build
find-replace-${goos}-${goarch}${ext}and attach all to the GitHub Release.Also emit a
SHA256SUMSfile alongside the artifacts (sha256sum find-replace-* > SHA256SUMS) so users can verify downloads.Files
.github/workflows/release.yml:121-159