Getting Started
Installation
Add wrapcli to your Cargo.toml:
cargo add wrapcli
Or add it manually:
[dependencies]
wrapcli = "0.1"
Basic Usage
use wrapcli::{run_streaming, WrapConfig};
fn main() -> std::io::Result<()> {
let cfg = WrapConfig {
orig_name: "rustc".into(),
fake_name: "dustc".into(),
fake_ver: "2.0.0".into(),
save_orig: true,
};
let args: Vec<String> = std::env::args().skip(1).collect();
let status = run_streaming(&cfg, args)?;
std::process::exit(status.code().unwrap_or(1));
}
How It Works
When the wrapped tool outputs a line containing the original name, wrapcli intercepts it and applies rewriting rules:
- The first occurrence of the original tool’s name and version is replaced with the fake name and fake version. If
save_origistrue, the original version is appended in parentheses. - Any subsequent occurrences of the original name in usage lines are replaced with the fake name.
This ensures consistent output masking without breaking the tool’s functionality.