shellcomp
shellcomp is a deployment layer for shell completions in Rust CLI projects.
It does not generate completion scripts. It installs, wires, detects, and removes them in a way that is predictable, idempotent, and structured for callers.
What It Handles
- Default install paths for Bash, Zsh, and Fish
write-if-changedcompletion file writes- Managed
~/.bashrcfallback wiring when Bash has no system loader - Managed
~/.zshrcwiring forfpathandcompinit - Native Fish completion directory installs
- Symmetric uninstall cleanup
- Structured reports that callers can render however they want
Supported Shells
- Bash
- Zsh
- Fish
Shell::Elvish, Shell::Powershell, and Shell::Other(_) are reserved for future expansion and
currently return UnsupportedShell.
Add The Dependency
Until the crate is published, depend on a local checkout or a git revision:
[]
= { = "../shellcomp-rs" }
Once published, replace the path dependency with a version:
[]
= "0.1.0"
Enable clap integration if you want the library to render completions from clap::CommandFactory
directly:
[]
= { = "0.1.0", = ["clap"] }
= { = "4.6.0", = ["derive"] }
Install A Prebuilt Completion Script
use ;
Integrate With clap
use Parser;
use ;
The examples above install into managed shell locations. Use path_override during local testing if
you do not want to touch your real shell profile yet.
Uninstall
use ;
Custom Paths
When path_override is set, shellcomp writes only to the requested path and reports
ActivationMode::Manual. This keeps the library from guessing additional shell wiring when the
caller chose a custom location.
use PathBuf;
use ;