stew
3 min read
🥘 An independent package manager for compiled binaries.
Features
• Easily distribute binaries across teams and private repositories.
• 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
sh
# 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
sh
# Search for a GitHub repo and browse its contents with a terminal UI
stew search ripgrep
Browse
sh
# Browse a specific GitHub repo's releases and assets with a terminal UI
stew browse sharkdp/hyperfine
Upgrade
sh
# 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
sh
# Uninstall a binary
stew uninstall rg # Uninstall using the name of the binary directly
stew uninstall --all # Uninstall all binaries
Rename
sh
# Rename an installed binary using an interactive UI
stew rename rg # Rename using the name of the binary directly
List
sh
# List installed binaries
stew list # Print to console
stew list > Stewfile # Create an Stewfile without pinned tags
stew list --tags > Stewfile # Pin tags
Config
sh
# 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.