4 releases (2 breaking)
Uses new Rust 2024
| 0.3.0 | Mar 2, 2026 |
|---|---|
| 0.2.1 | Feb 25, 2026 |
| 0.2.0 | Feb 24, 2026 |
| 0.1.0 | Feb 23, 2026 |
#209 in Cargo plugins
45KB
949 lines
cargo-stitch
A Cargo subcommand that applies source-level patches and ast-grep rules to workspace crates before compilation.
It intercepts rustc invocations via RUSTC_WORKSPACE_WRAPPER, copies crate sources to target/cargo-stitch/<pkg>/, applies patches and ast-grep rules from stitches/<pkg>/, then compiles the patched sources.
Install
Using cargo binstall (recommended, downloads prebuilt binaries):
cargo binstall cargo-stitch
Using cargo install (builds from source):
cargo install cargo-stitch
From GitHub Releases: download a prebuilt binary for your platform, extract, and place it on your PATH.
From source:
git clone https://github.com/romac/cargo-stitch
cd cargo-stitch
cargo install --path .
Requires patch (usually preinstalled) and ast-grep (sg) if using ast-grep rules.
Usage
cargo stitch build
cargo stitch test
cargo stitch check
# any cargo subcommand works
Stitch files
Place stitch files in stitches/<crate-name>/ at the workspace root:
.patch-- unified diff format, applied withpatch -p1.yaml/.yml-- ast-grep rule files, applied withsg scan -r <rule> --update-all
All stitch files are applied in filename order regardless of type. Use numeric prefixes for ordering:
stitches/
some-crate/
001-fix-thing.patch
002-rename-fn.yaml
If no stitches/<crate-name>/ directory exists for a crate, it compiles normally.
Acknowledgements
Inspired by cargo-fixup.
License
Licensed under either of Apache License, Version 2.0 or MIT license at your option.
Dependencies
~0.8–1.7MB
~34K SLoC