chore: Add one-line installer backed by goreleaser GitHub Releases - #11
Conversation
Adds a goreleaser config and install.sh that downloads, checksum- verifies, and installs the right prebuilt binary so users don't need a local Go toolchain. main.go gains a build-time version variable and `yul version` for goreleaser's ldflags and the installer to target. Part of #9
|
@algomaster99 incase you didn't see it, claude wasn't able to push the workflow files 🙄 |
|
@andrew thanks for pointing it out. I did see it before and I thought I would take a look later. I have tried to pass my PAT through the environment multiple times but it just doesn't accept it 😅 |
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
There was a problem hiding this comment.
Pull request overview
This PR adds a GitHub Releases-based distribution and a one-line installer for yul, reducing the need for a local Go toolchain and adding a simple yul version command for installed-binary verification.
Changes:
- Add GoReleaser configuration to build and publish release archives and checksums for linux/darwin × amd64/arm64.
- Add a POSIX
shinstaller (install.sh) that downloads the appropriate release asset, verifies it againstchecksums.txt, and installs to~/.local/bin(configurable). - Update
main.goto supportyul version, and update README to document the one-line installer and clarifygo runcaveats.
Reviewed changes
Copilot reviewed 5 out of 5 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
| README.md | Documents the one-line installer as the primary install path and clarifies binary vs go run usage. |
| main.go | Introduces a build-time version variable and a yul version subcommand. |
| install.sh | Adds a curl |
| .goreleaser.yml | Defines the release build matrix, archive naming, checksum generation, and ldflags version embedding. |
| .github/workflows/release.yml | Adds an automated tag-triggered GitHub Releases publishing workflow via GoReleaser. |
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
- goreleaser: embed {{.Tag}} (full "vX.Y.Z" tag) instead of {{.Version}}
(which strips the leading v), so yul version matches release tags
and YUL_VERSION values.
- install.sh: use a template with mktemp -d so busybox/strict mktemp
implementations that reject a bare "-d" don't break the install.
- install.sh: replace sed -E with a POSIX basic-regex sed 's/.../\1/'
invocation, since -E isn't POSIX and some sed builds lack it.

Closes #9.
Summary
.goreleaser.yml— buildsyulfor linux/darwin × amd64/arm64, checksums the archives, embeds the tag asmain.versionvialdflags..github/workflows/release.yml— onv*tag push, runs tests thengoreleaser release(pinned CLI version) to publish the GitHub Release.install.sh— one-linecurl | shinstaller: detects OS/arch, downloads the matching release archive, verifies againstchecksums.txt, installs to~/.local/bin.main.go/README.md— addsyul versionsubcommand for sanity-checking installs; README leads with the install command, keepsgo installas fallback.