From 0d987a882c2d721719df72a044580fb93eb6dd33 Mon Sep 17 00:00:00 2001 From: JMARyA Date: Mon, 21 Oct 2024 10:55:56 +0200 Subject: [PATCH] add stew --- technology/applications/Applications.md | 1 + technology/applications/cli/stew.md | 104 ++++++++++++++++++++++++ 2 files changed, 105 insertions(+) create mode 100644 technology/applications/cli/stew.md diff --git a/technology/applications/Applications.md b/technology/applications/Applications.md index ae4ab43..356254b 100644 --- a/technology/applications/Applications.md +++ b/technology/applications/Applications.md @@ -233,6 +233,7 @@ rev: 2024-07-14 - [dysk](./cli/dysk.md) - [pass](./cli/pass.md) - [ocrs](./cli/ocrs.md) +- [stew](./cli/stew.md) ## System - [Core Utils](./cli/system/Core%20Utils.md) diff --git a/technology/applications/cli/stew.md b/technology/applications/cli/stew.md new file mode 100644 index 0000000..4fbec3d --- /dev/null +++ b/technology/applications/cli/stew.md @@ -0,0 +1,104 @@ +--- +obj: application +repo: https://github.com/marwanhawari/stew +rev: 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 +```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`.