Skip to content

feat: Add one-line shell installer following vipune pattern #143

@randomm

Description

@randomm

Motivation

Currently users must manually download .tar.xz archives from GitHub Releases and extract the binary manually. vipune has a simpler one-line install pattern:

curl --proto '=https' --tlsv1.2 -LsSf https://github.com/randomm/vipune/releases/latest/download/vipune-installer.sh | sh

This improves user experience by providing a familiar, frictionless installation method.

User Story

As an AI agent developer installing oo, I want a one-line install command so that I can quickly get started without manually downloading and extracting archives.

Proposed Solution

Enable cargo-dist's shell installer generation by updating Cargo.toml:

[workspace.metadata.dist]
installers = ["shell"]  # ← Change from empty
install-path = "CARGO_HOME"  # ← Recommended addition

cargo-dist will then auto-generate oo-installer.sh as part of the existing release pipeline. The installer will:

  • Detect OS/architecture automatically (Apple Silicon macOS, ARM64 Linux, x64 Linux)
  • Download the correct binary from GitHub Releases
  • Verify SHA256 checksum
  • Install to $CARGO_HOME/bin (or $HOME/.cargo/bin)
  • Configure PATH if needed

Release flow remains unchanged:

  1. Merge to main → release-plz creates version bump PR
  2. Merge that PR → release-plz creates git tag + publishes to crates.io
  3. Tag push triggers cargo-dist → builds binaries + generates installer + creates GitHub Release

Acceptance Criteria

  • installers = ["shell"] and install-path = "CARGO_HOME" added to Cargo.toml
  • Next release includes oo-installer.sh artifact in GitHub Release
  • Installer successfully installs oo on current target platforms (aarch64-apple-darwin, aarch64-unknown-linux-gnu, x86_64-unknown-linux-gnu)
  • README.md updated with one-line install example
  • All existing tests pass (~197 tests)
  • CI workflow green after merge

Definition of Done

  • Tests written and passing (verification tests for installer generation)
  • 80%+ coverage for new code (minimal changes expected)
  • Linting passes (cargo fmt --check, cargo clippy -- -D warnings)
  • Documentation updated (README.md with install instructions)
  • Release verified to include installer artifact

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions