Skip to content

Latest commit

 

History

History
400 lines (283 loc) · 10.2 KB

installation.md

File metadata and controls

400 lines (283 loc) · 10.2 KB

Installation

yoo supports Windows, Linux, and macOS. Choose one installation method and avoid installing the executable through multiple package managers at the same time.

Verified installer

The installer supports Linux x86-64 and Apple Silicon macOS. It downloads the raw binary from the latest GitHub release, verifies it against the published SHA256SUMS file, and installs it to ~/.local/bin/yoo.

curl --proto '=https' --tlsv1.2 -LsSf \
  https://yo-cli.vercel.app/yo-setup | sh

Ensure the installation directory is on PATH:

export PATH="$HOME/.local/bin:$PATH"

Add that line to ~/.bashrc, ~/.zshrc, or the appropriate shell startup file to make it permanent.

Install a specific version

curl --proto '=https' --tlsv1.2 -LsSf \
  https://yo-cli.vercel.app/yo-setup |
  YOO_VERSION=1.1.3 sh

Use a custom destination

curl --proto '=https' --tlsv1.2 -LsSf \
  https://yo-cli.vercel.app/yo-setup |
  YOO_INSTALL_DIR="$HOME/bin" sh

Inspect the installer before running it

curl --proto '=https' --tlsv1.2 -LsSf \
  https://yo-cli.vercel.app/yo-setup \
  --output yoo-install.sh
less yoo-install.sh
sh yoo-install.sh

Cargo Binstall

Use a prebuilt release binary without compiling locally:

cargo binstall yoo

Install Cargo Binstall first if necessary:

cargo install cargo-binstall

Cargo

Build and install from crates.io:

cargo install yoo --locked

npm, pnpm, or Bun

The JavaScript wrapper downloads the matching prebuilt binary during installation:

npm install -g @nihit_dev/yoo
pnpm add -g @nihit_dev/yoo
bun add -g @nihit_dev/yoo

Windows package managers

WinGet

winget source update
winget install --id Nihitdev.yoo --exact

Scoop

Add the official nihitdev bucket:

scoop bucket add nihitdev https://github.com/nihitdev/scoop-nihitdev
scoop install nihitdev/yoo

The bucket has its own hourly manifest updater. A new release may take time to appear there after its GitHub assets are published.

Chocolatey

choco install yoo

Chocolatey and WinGet community review can delay availability of a new version.

Homebrew

Supports Apple Silicon macOS and Linux x86_64 through the nihitdev/tap community tap:

brew tap nihitdev/tap
brew install yoo

The formula verifies SHA-256. Linux release binaries are built on Ubuntu 22.04; older glibc systems should use Cargo or Nix.

Arch Linux / AUR

Install the yoo-bin package from the AUR with either helper:

yay -S yoo-bin
# or
paru -S yoo-bin

You can build it now from this checkout:

cd packaging/aur
makepkg -si

It verifies the release archive, installs /usr/bin/yoo, documentation, license and Bash/Zsh/Fish completions. Git is an optional dependency. Binary packaging reuses the release binary and avoids a Rust compilation.

Nix

The flake builds from Rust source with Cargo.lock and pinned Nixpkgs. Linux x86_64/ARM64 and Apple Silicon macOS are exposed:

nix run github:nihitdev/yo-cli
nix profile install github:nihitdev/yo-cli
# From a checkout:
nix build
nix flake check

Enable Nix's nix-command and flakes experimental features if needed. Host Git, development tools and editors are detected from PATH.

Debian / Ubuntu

Hosted APT repository

Install or refresh the hosted repository and its trusted signing key with:

curl -fsSL https://yo-cli.vercel.app/apt/setup.sh | sudo sh
sudo apt install yoo

When the repository signing key is rotated, existing installations must rerun the setup command before their next apt update. APT continues to trust the old key already installed on the machine; it does not switch to the new key automatically. The setup script verifies the downloaded key fingerprint, replaces the installed keyring, and runs apt-get update.

Downloaded Debian package

Download yoo_<version>-1_amd64.deb and SHA256SUMS from the same release:

sha256sum --check --ignore-missing SHA256SUMS
sudo dpkg -i yoo_*.deb
# If dpkg reports missing dependencies:
sudo apt-get -f install

Build on Debian/Ubuntu with dpkg-dev installed so library dependencies can be detected (other host distributions lack Debian package ownership information):

cargo install cargo-deb --locked
cargo deb

Output is in target/debian/. Runtime library dependencies are generated from the binary. Release packages target x86_64, built on Ubuntu 22.04; native builds on other Linux architectures use the local toolchain.

Alpine

Add https://yo-cli.vercel.app/alpine to /etc/apk/repositories, then install:

sudo apk add yoo

RPM

Hosted DNF repository

sudo dnf config-manager addrepo --from-repofile=https://yo-cli.vercel.app/rpm/yoo.repo
sudo dnf install yoo

Downloaded RPM

Download yoo-<version>-1.x86_64.rpm and verify the release's SHA256SUMS:

sha256sum --check --ignore-missing SHA256SUMS
sudo rpm -i yoo-*.rpm

Or use sudo dnf install ./yoo-*.rpm to resolve dependencies. Build locally:

cargo install cargo-generate-rpm --locked
cargo build --release --locked
cargo generate-rpm

Output is in target/generate-rpm/. Runtime library requirements are automatically detected. Standalone release RPMs are signed; Fedora users can also use the hosted DNF repository at https://yo-cli.vercel.app/rpm/. The openSUSE-specific repository is documented below. The release baseline is Ubuntu 22.04's glibc; older distributions may need a native source build.

openSUSE Tumbleweed

The hosted repository targets x86_64 Tumbleweed and keeps both package and repository GPG verification enabled:

sudo zypper ar -f https://yo-cli.vercel.app/opensuse yoo
sudo zypper refresh
sudo zypper install yoo

Future releases are picked up with sudo zypper refresh && sudo zypper update yoo. The repository metadata and RPM are signed with the yoo RPM key exposed at https://yo-cli.vercel.app/opensuse/RPM-GPG-KEY-yoo. Do not disable GPG checks.

Build the package locally on Tumbleweed with the spec in packaging/opensuse/yoo.spec:

sudo zypper install cargo cargo-packaging createrepo_c rpm-build gpg2
rpmbuild -ba packaging/opensuse/yoo.spec

Repository maintenance, signing-key setup, and the required release secrets are documented in packaging/opensuse/README.md.

Void / XBPS

.xbps packages are built and tested in CI and attached to GitHub Releases. There is no hosted XBPS repository.

Snap

Snap builds are attached to GitHub Releases; Snap Store publication is disabled.

After the maintainer registers the name and publishes a stable channel:

sudo snap install yoo

For a downloaded release artifact (locally built snaps are unsigned):

sudo snap install --dangerous ./yoo_*.snap
snap run yoo --version

The snap uses strict confinement. home provides access to non-hidden home projects; removable-media is optional and must be explicitly connected to inspect projects under mounted media:

sudo snap connect yoo:removable-media

There is no network interface. Hidden home paths, arbitrary system directories, host toolchains, and host editors are unavailable. Git is bundled for repository inspection, but user-level Git configuration outside the sandbox may be absent. Configuration lives in the snap's own home. doctor, environment reporting and edit do not represent the full host environment. Choose a native package for complete functionality. No classic-confinement approval is needed.

Build with snapcraft from the repository root. The version comes from Cargo.toml through adopt-info; the manifest supports amd64 and arm64, with amd64 built automatically by CI.

Flatpak

Flatpak is an imperfect fit for this terminal CLI. The manifest grants broad read-only host filesystem access to inspect local projects. Flatpak still masks some system paths and does not expose host executable toolchains through the sandbox PATH. Git/tool detection and launching host editors are limited; configuration is stored under the app's sandbox directory. It does not grant host execution, network access or general host write access.

There is no Flathub listing. Use the self-hosted repository:

flatpak remote-add --user yoo https://yo-cli.vercel.app/flatpak/yoo.flatpakrepo
flatpak install --user yoo io.github.nihitdev.yoo

Or install the release bundle locally:

flatpak remote-add --user --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
flatpak install --user flathub org.freedesktop.Platform//25.08
flatpak install --user ./yoo-*.flatpak
flatpak run io.github.nihitdev.yoo --version
flatpak run --cwd="$PWD" io.github.nihitdev.yoo project

For source builds, install flatpak-builder, the matching Freedesktop SDK and Rust SDK extension, then:

flatpak install --user flathub org.freedesktop.Sdk//25.08 org.freedesktop.Sdk.Extension.rust-stable//25.08
bash scripts/flatpak-source.sh
flatpak-builder --user --disable-rofiles-fuse --repo=target/flatpak-repo target/flatpak-build packaging/flatpak/io.github.nihitdev.yoo.yml
flatpak build-bundle target/flatpak-repo target/yoo.flatpak io.github.nihitdev.yoo

The preparation step vendors locked Cargo dependencies; compilation is offline inside Flatpak. No network permission is granted to the installed application.

Build from source

git clone https://github.com/nihitdev/yo-cli.git
cd yo-cli
cargo install --path .

Verify the installation

yoo --version
yoo doctor

If the shell cannot find yoo, restart the terminal and confirm the installation directory appears in PATH.

Update

Repeat the command for the installation method originally used. Examples:

cargo install yoo --force
npm update -g @nihit_dev/yoo
winget upgrade --id Nihitdev.yoo --exact
scoop update yoo

Uninstall

Use the matching package manager:

cargo uninstall yoo
npm uninstall -g @nihit_dev/yoo

For an installer-script installation:

rm "$HOME/.local/bin/yoo"

Removing the executable does not delete the optional configuration file. Run yoo config before uninstalling if you need to locate it.