Skip to content

Add one-line installers, cargo-binstall, and aarch64-Linux builds - #417

Merged
LargeModGames merged 1 commit into
mainfrom
feat/install-methods
Aug 4, 2026
Merged

Add one-line installers, cargo-binstall, and aarch64-Linux builds#417
LargeModGames merged 1 commit into
mainfrom
feat/install-methods

Conversation

@LargeModGames

@LargeModGames LargeModGames commented Aug 4, 2026

Copy link
Copy Markdown
Owner

Summary

Adds several ways to install spotatui, all reusing the release assets cd.yml already builds:

  • One-line installers served from spotatui.com: install.sh (macOS/Linux/WSL), install.ps1 (Windows PowerShell), install.cmd (Windows CMD). Each detects OS/arch, downloads the matching release asset, verifies its .sha256, installs to PATH, and auto-configures the shell profile (opt out with SPOTATUI_NO_MODIFY_PATH=1). Canonical scripts live here on main; the website redirects spotatui.com/install.* to them (committed separately to the website repo's main).
  • cargo binstall spotatui via [package.metadata.binstall], which fetches prebuilt binaries instead of compiling (per-target overrides, since our assets use friendly names rather than target triples).
  • aarch64-Linux release builds via a new cd.yml row on the free native ubuntu-24.04-arm runner (Raspberry Pi 4/5, ARM servers, Asahi). Produces spotatui-linux-aarch64.tar.gz plus an arm64 .deb.
  • README install section regrouped with the new one-liners and a note on which builds include the extra music sources.

.rpm packaging is intentionally left as a follow-up (see #416); it needs its own Fedora dependency-resolution validation.

Testing

  • aarch64-Linux build validated on a real ubuntu-24.04-arm runner (throwaway workflow): full release build + tarball + cargo-deb + smoke-run in ~8 min. Output: ELF 64-bit ... ARM aarch64, spotatui_0.40.3-1_arm64.deb, and spotatui --version -> spotatui 0.40.3.
  • install.sh end-to-end against the real v0.40.3 release: download + checksum verify + extract + install + run. Also tested the latest path and graceful failure on a missing asset (clean error, exit 1).
  • install.sh PATH management with a fake $HOME: appends the correct line to .bashrc/.zshrc per $SHELL, idempotent on re-run; SPOTATUI_NO_MODIFY_PATH=1 writes nothing.
  • bash -n install.sh clean; cargo metadata confirms the binstall overrides parse; cd.yml YAML validated with the new arm64 row.
  • Not run: install.ps1 (no Windows/PowerShell available locally). Its logic mirrors the tested install.sh, but Windows-specific bits (registry PATH, Expand-Archive, Get-FileHash) are unverified. The cargo binstall metadata takes effect on the next crates.io publish.

Summary by CodeRabbit

  • New Features

    • One-line installation commands now available for macOS, Linux, WSL, and Windows.
    • Added support for cargo binstall to quickly install prebuilt binaries.
    • Void Linux package option now available.
    • Optional music sources can be enabled when building from source.
  • Infrastructure

    • Extended build pipeline with native ARM64 Linux support.

Adds curl|bash / irm|iex / cmd installers served from spotatui.com, cargo-binstall metadata for prebuilt fetches, and a native aarch64-linux release build. README install section regrouped accordingly.
@coderabbitai

coderabbitai Bot commented Aug 4, 2026

Copy link
Copy Markdown

Review Change Stack

Caution

Review failed

The pull request is closed.

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: 687a666f-11a7-4e42-b878-4333c8ee7d34

📥 Commits

Reviewing files that changed from the base of the PR and between 5c3269a and fa72028.

📒 Files selected for processing (6)
  • .github/workflows/cd.yml
  • Cargo.toml
  • README.md
  • install.cmd
  • install.ps1
  • install.sh

📝 Walkthrough

Walkthrough

The project adds Linux ARM64 release builds, cargo binstall metadata, Unix-like and Windows installers, and updated installation documentation.

Changes

Release packaging and installation

Layer / File(s) Summary
Release assets and package metadata
.github/workflows/cd.yml, Cargo.toml, README.md
The release workflow builds Linux ARM64 and documents installer commands. Cargo metadata maps supported targets to release archives. README installation notes describe available methods and feature coverage.
Unix-like installer
install.sh, README.md
The shell installer detects the platform, resolves and downloads a release, verifies checksums when possible, installs the binary, and updates supported shell profiles.
Windows installer
install.ps1, install.cmd
The PowerShell installer validates architecture, downloads and verifies the release, installs the executable, and optionally updates the user PATH. The CMD wrapper invokes the PowerShell installer.

Estimated code review effort: 4 (Complex) | ~45 minutes

Sequence Diagram(s)

sequenceDiagram
  participant User
  participant Installer
  participant GitHubReleases
  participant InstallDirectory
  participant ShellProfile
  User->>Installer: Run install.sh or install.ps1
  Installer->>GitHubReleases: Resolve version and download archive
  Installer->>GitHubReleases: Download checksum
  Installer->>InstallDirectory: Extract and install binary
  Installer->>ShellProfile: Update PATH when enabled
  Installer-->>User: Report installation status
Loading
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/install-methods
✨ Simplify code
  • Create PR with simplified code
  • Commit simplified code in branch feat/install-methods

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@LargeModGames
LargeModGames merged commit f6a424a into main Aug 4, 2026
16 of 17 checks passed
@LargeModGames
LargeModGames deleted the feat/install-methods branch August 4, 2026 14:04
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