Skip to content

[WIP]feat: add cross-platform installer scripts and binary release pipeline#38

Open
adeptofvoltron wants to merge 1 commit into
mainfrom
feat/cross-platform-installer
Open

[WIP]feat: add cross-platform installer scripts and binary release pipeline#38
adeptofvoltron wants to merge 1 commit into
mainfrom
feat/cross-platform-installer

Conversation

@adeptofvoltron
Copy link
Copy Markdown
Owner

Summary

  • Adds install/install.sh (Mac/Linux) and install/install.ps1 (Windows) for a single-command install with no Python prerequisite on the user's machine
  • Adds .github/workflows/release.yml — 4-platform matrix build (linux-x64, darwin-x64, darwin-arm64, windows-x64) that compiles standalone PyInstaller binaries, runs a smoke test, generates SHA256 checksums, and publishes all 8 artifacts to GitHub Releases on every v* tag push
  • Adds nimble/__main__.py as the PyInstaller entry point (also enables python -m nimble)

Install experience

Mac/Linux:

curl -fsSL https://raw.githubusercontent.com/adeptofvoltron/nimble/main/install/install.sh | sh

Windows (PowerShell):

powershell -c "iwr https://raw.githubusercontent.com/adeptofvoltron/nimble/main/install/install.ps1 | iex"

Key design decisions

  • PyInstaller + --collect-all pynputpynput uses dynamic platform imports that static analysis misses; --collect-all bundles all backends
  • macos-14 pinned (not macos-latest) — guarantees Apple Silicon runner without drift risk
  • Writability check for sudo — detects need for elevated permissions regardless of install path, not just when path equals /usr/local/bin
  • Target validation in install.sh — Linux ARM64 users get a clear "not yet supported" message instead of a silent download failure

Test plan

  • Push a v0.0.1-test tag and verify all 4 matrix jobs pass and GitHub Releases shows 8 assets (4 binaries + 4 checksums)
  • Run smoke test: curl ... | sh on a fresh Mac (Intel and Apple Silicon) and Linux VM — confirm nimble --help works in a new terminal
  • Run powershell -c "iwr ... | iex" on Windows 10/11 — confirm nimble --help works in a new terminal
  • Test NIMBLE_INSTALL_DIR=~/.local/bin curl ... | sh — confirm no sudo prompt and binary in correct location
  • Simulate SHA256 mismatch — confirm human-readable error and no partial binary left behind
  • Test on WSL2 — confirm "Detected WSL" message appears and linux-x64 binary is used

🤖 Generated with Claude Code

Adds install/install.sh (Mac/Linux) and install/install.ps1 (Windows)
for one-command install with no Python prerequisite, backed by a GitHub
Actions matrix release workflow that builds PyInstaller standalone
binaries for linux-x64, darwin-x64, darwin-arm64, and windows-x64.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@adeptofvoltron adeptofvoltron changed the title feat: add cross-platform installer scripts and binary release pipeline [WIP]feat: add cross-platform installer scripts and binary release pipeline May 12, 2026
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