| Crates.io | pez |
| lib.rs | pez |
| version | 0.4.2 |
| created_at | 2025-01-03 21:25:13.072879+00 |
| updated_at | 2026-01-07 11:27:29.717526+00 |
| description | A Rust-based plugin manager for fish. |
| homepage | https://github.com/tetzng/pez |
| repository | https://github.com/tetzng/pez |
| max_upload_size | |
| id | 1502880 |
| size | 3,501,675 |
A Rust-based plugin manager for fish
Experimental — use at your own risk.
pez is a Rust-based plugin manager for fish. It installs plugins by cloning repositories, copying fish assets into the standard directories, and tracking state in a lockfile.
host/owner/repo)upgrade, prune, and doctor utilitiesEnsure you have Rust installed on your system. You can install pez using Cargo:
# From crates.io (if available)
cargo install pez
# From source (in this repo)
cargo install --path .
# 1) Initialize configuration (creates pez.toml)
pez init
# 2) Add a plugin to pez.toml (choose one of repo/url/path)
# [[plugins]]
# repo = "owner/repo" # GitHub shorthand
# # version = "v3" # Or: tag = "...", branch = "...", commit = "..."
#
# # [[plugins]]
# # url = "https://gitlab.com/owner/repo" # Any Git host URL
# # branch = "main"
#
# # [[plugins]]
# # path = "~/path/to/local/plugin" # Local directory (absolute or ~/ only)
# # Note: when specifying a relative path or ~/ at the CLI (e.g., ./plugin), pez normalizes it to an absolute path in pez.toml.
# 3) Install plugins listed in pez.toml
pez install
# 4) Verify installation
pez list --format table
# 5) (Optional) Enable completions for pez itself
pez completions fish > ~/.config/fish/completions/pez.fish
# 6) (Optional) Activate fish shell hooks (emit conf.d events in the current shell)
pez activate fish | source
pez completions fish > ~/.config/fish/completions/pez.fish
# Enable conf.d events in the current shell for install/upgrade/uninstall
pez activate fish | source
For persistence, add it inside an if status is-interactive ... end block in ~/.config/fish/config.fish.
Usage: pez [OPTIONS] <COMMAND>
Commands:
init | install | uninstall | upgrade | list | prune | completions | activate | doctor | migrate | files
Options:
-v, --verbose Increase output verbosity (-v for info, -vv for debug)
--jobs <N> Override parallel job limit (default: 4; overrides PEZ_JOBS)
-h, --help Print help
-V, --version Print version
Common examples
pez init
pez install # install from pez.toml
pez install owner/repo # install a specific plugin
pez upgrade # update non-local plugins to remote HEAD
pez list --outdated --format table
pez prune --dry-run
See the full command reference in docs/commands.md.
pez uses pez.toml and pez-lock.toml under the fish config directory by
default. Configuration file precedence is:
$PEZ_CONFIG_DIR > $__fish_config_dir > $XDG_CONFIG_HOME/fish > ~/.config/fish.
PEZ_TARGET_DIR only affects where plugin files are copied. For schema,
location details, and environment variables, see docs/configuration.md.
For install/upgrade behavior (selectors, duplicates, concurrency, existing clones), see docs/commands.md.
pez doctor checks config/lock/data directories and copied files.pez list --format json shows the current lockfile state.pez files --all lists installed file paths.pez installs plugin files from third-party repositories. If you enable the
activation wrapper, conf.d scripts are sourced in the current shell. pez does
not verify signatures or sandbox code. Only install plugins you trust.
There is no formal contributing guide yet. If you want to help, open a PR and
run cargo fmt --all, cargo clippy --workspace --all-targets --all-features,
and cargo test --all-features.
No dedicated changelog is maintained yet. Use git history to review changes.
pez is inspired by the following projects:
tetzng