Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/marwanhawari/stew
🥘 An independent package manager for compiled binaries.
https://github.com/marwanhawari/stew
binaries github go package-manager releases
Last synced: 3 months ago
JSON representation
🥘 An independent package manager for compiled binaries.
- Host: GitHub
- URL: https://github.com/marwanhawari/stew
- Owner: marwanhawari
- License: mit
- Created: 2022-01-30T23:43:46.000Z (almost 3 years ago)
- Default Branch: main
- Last Pushed: 2024-04-07T07:36:29.000Z (7 months ago)
- Last Synced: 2024-06-18T23:14:51.757Z (5 months ago)
- Topics: binaries, github, go, package-manager, releases
- Language: Go
- Homepage:
- Size: 18.1 MB
- Stars: 142
- Watchers: 2
- Forks: 9
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
- Security: SECURITY.md
Awesome Lists containing this project
- awesome-go-extra - stew - 01-30T23:43:46Z|2022-07-24T01:24:01Z| (Go Tools / Other Software)
README
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](https://github.com/marwanhawari/stew/blob/main/config.md) where to install binaries.
* No need for `sudo`.
* Just a single binary with 0 dependencies.
* Portable [`Stewfile`](https://github.com/marwanhawari/stew/blob/main/examples/Stewfile) with optional pinned versioning.
* Headless batch installs from a `Stewfile.lock.json` file.![demo](https://github.com/marwanhawari/stew/raw/main/assets/demo.gif)
# Installation
Stew supports macOS, Linux, and Windows.### Install using a package manager
macOS
```sh
brew install marwanhawari/tap/stew
```Arch
```sh
git clone https://aur.archlinux.org/stew.git
cd stew
makepkg -sric
```### Download a compiled binary
Compiled binaries can be downloaded from the [releases page](https://github.com/marwanhawari/stew/releases).### Install using Go
Install the latest released version
```sh
go install github.com/marwanhawari/stew@latest
```Install the latest unreleased source
```sh
git clone https://github.com/marwanhawari/stew
cd stew
go install .
```# Usage
### Install
```sh
# Install from GitHub releases
stew install junegunn/fzf # Install the latest release
stew install junegunn/[email protected] # 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
```# FAQ
### Why couldn't `stew` automatically find any binaries for X repo?
The repo probably uses an unconventional naming scheme for their binaries. You can always manually select the release asset.### Will `stew` work with private GitHub repositories?
Yes, `stew` will automatically detect if you have a `GITHUB_TOKEN` environment variable and allow you to access binaries from your private repositories.### Where does `stew` install binaries?
The default installation path will depend on your OS:
| Linux/macOS | Windows |
| ------------ | ---------- |
| `~/.local/bin` | `~/AppData/Local/stew/bin` |However, this location can be [configured](https://github.com/marwanhawari/stew/blob/main/config.md).
Make sure that the installation path is in your `PATH` environment variable. Otherwise, you won't be able to use any of the binaries installed by `stew`.