knowledge/technology/applications/cli/stew.md
2024-10-21 10:55:56 +02:00

3.3 KiB

obj repo rev
application https://github.com/marwanhawari/stew 2024-10-21

stew

🥘 An independent package manager for compiled binaries.

Features

  • Install binaries from GitHub releases or directly from URLs.
  • Easily distribute binaries across teams and private repositories.
  • Get the latest releases ahead of other package managers.
  • Rapidly browse, install, and experiment with different projects.
  • Configure where to install binaries.
  • No need for sudo.
  • Just a single binary with 0 dependencies.
  • Portable Stewfile with optional pinned versioning.
  • Headless batch installs from a Stewfile.lock.json file.

Usage

Install

# Install from GitHub releases
stew install junegunn/fzf              # Install the latest release
stew install junegunn/fzf@0.27.1       # Install a specific, tagged version

# Install directly from a URL
stew install https://github.com/cli/cli/releases/download/v2.4.0/gh_2.4.0_macOS_amd64.tar.gz

# Install from an Stewfile
stew install Stewfile

# Install headlessly from a Stewfile.lock.json
stew install Stewfile.lock.json
# Search for a GitHub repo and browse its contents with a terminal UI
stew search ripgrep

Browse

# Browse a specific GitHub repo's releases and assets with a terminal UI
stew browse sharkdp/hyperfine

Upgrade

# Upgrade a binary to its latest version. Not for binaries installed from a URL.
stew upgrade rg           # Upgrade using the name of the binary directly
stew upgrade --all        # Upgrade all binaries

Uninstall

# Uninstall a binary
stew uninstall rg         # Uninstall using the name of the binary directly
stew uninstall --all      # Uninstall all binaries

Rename

# Rename an installed binary using an interactive UI
stew rename rg            # Rename using the name of the binary directly

List

# List installed binaries
stew list                              # Print to console
stew list > Stewfile                   # Create an Stewfile without pinned tags
stew list --tags > Stewfile            # Pin tags

Config

# Configure the stew file paths using an interactive UI
stew config           # Automatically updates the stew.config.json

Configuration

stew can be configured with a stew.config.json file. The location of this file will depend on your OS:

Linux/macOS Windows
$XDG_CONFIG_HOME/stew or ~/.config/stew ~/AppData/Local/stew/Config

You can configure 2 aspects of stew:

  1. The stewPath: this is where stew data is stored.
  2. The stewBinPath: this is where stew installs binaries

The default locations for these are:

Linux/macOS Windows
stewPath $XDG_DATA_HOME/stew or ~/.local/share/stew ~/AppData/Local/stew
stewBinPath ~/.local/bin ~/AppData/Local/stew/bin

There are multiple ways to configure these:

  • When you first run stew, it will look for a stew.config.json file. If it cannot find one, then you will be prompted to set the configuration values.
  • After stew is installed, you can use the stew config command to set the configuration values.
  • At any time, you can manually create or edit the stew.config.json file. It should have values for stewPath and stewBinPath.