feat(distribution): add curl | sh installer - #22
Merged
Conversation
Adds scripts/install.sh, a POSIX-sh installer that detects OS/arch,
downloads the matching release tarball, verifies its SHA-256 against
checksums.txt, and installs to /usr/local/bin (falling back to
~/.local/bin when that isn't writable or sudo isn't available).
This covers the platforms that have no package manager story today --
containers, WSL, barebones Linux -- without needing a per-distro
maintainer. It consumes the existing GoReleaser artifacts, so the
release pipeline is unchanged.
Resolution uses GitHub's /releases/latest/download/ path rather than the
API, so there is no rate limit to hit and no JSON to parse.
Tested via scripts/test-install.sh, which runs the installer in Docker
across the axes most likely to break a shell installer:
- busybox ash + wget (alpine), bash + curl, and wget-without-curl
- archlinux on linux/amd64, which doubles as amd64 coverage
- unprivileged with no sudo, asserting the ~/.local/bin fallback
- CLICKUP_INSTALL_DIR and CLICKUP_VERSION overrides
- a hermetic local server serving a corrupted tarball, asserting the
installer aborts and leaves no binary behind
- shellcheck -s sh
macOS can't be tested under Docker and is the only place the shasum
branch and BSD tar run, so CI covers it on a macos-latest runner. The
workflow also runs on release:published and weekly, which catches drift
in the release layout (renamed assets, a missing checksums.txt) that no
code change would trigger.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This was referenced Jul 27, 2026
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
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Adds a
curl | shinstaller for Linux and macOS — the install path that needs no package manager and no per-distro maintainer.curl -fsSL https://raw.githubusercontent.com/triptechtravel/clickup-cli/main/scripts/install.sh | shRaised as future work in #21; landing it standalone since it's independent of the AUR discussion.
What it does
Detects OS/arch, downloads the matching release tarball, verifies its SHA-256 against
checksums.txt, and installs to/usr/local/bin— falling back to~/.local/binwhen that isn't writable orsudoisn't available.Consumes the existing GoReleaser artifacts, so the release pipeline is unchanged. Version resolution uses GitHub's
/releases/latest/download/path rather than the API, so there's no rate limit to hit and no JSON to parse.Overrides:
CLICKUP_VERSION,CLICKUP_INSTALL_DIR,CLICKUP_NO_SUDO, andCLICKUP_BASE_URL(used by the tests to point at a local server).Testing
scripts/test-install.sh(make test-install) runs the installer in Docker across the axes most likely to break a shell installer. All 10 pass locally:linux/amd64~/.local/binfallbackCLICKUP_INSTALL_DIR/CLICKUP_VERSION-s shTwo things Docker can't cover, handled in CI:
shasum -a 256(there's nosha256sum) and BSD tar run.macos-latestjob.checksums.txtexisting, which can break with zero code change (e.g. editingname_templatein.goreleaser.yml). The workflow runs onrelease: publishedand weekly to catch that.Docs
New "Install script" section in
installation.mdplus a Supported platforms subsection documenting coverage that already existed but wasn't written down: WSL2, Docker/CI on musl images (the binaries are static,CGO_ENABLED=0), 64-bit Raspberry Pi OS, and the plaintext-token fallback on machines with no OS keyring.No changes to the binary. No impact on Homebrew,
go install, or binary-release users.🤖 Generated with Claude Code