https://github.com/shepmaster/mini-crater
https://github.com/shepmaster/mini-crater
Last synced: 10 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/shepmaster/mini-crater
- Owner: shepmaster
- Created: 2021-04-28T12:13:35.000Z (about 5 years ago)
- Default Branch: main
- Last Pushed: 2024-11-04T20:28:39.000Z (over 1 year ago)
- Last Synced: 2025-04-10T06:14:22.276Z (about 1 year ago)
- Language: Rust
- Size: 54.7 KB
- Stars: 31
- Watchers: 2
- Forks: 2
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# mini-crater
This tool finds the crates that rely on a target crate and builds them
locally with an updated version of the target crate. This can be used
to evaluate the scope of a breaking change before it is released.
# Usage
1. Install the tool
```
cargo install --git https://github.com/shepmaster/mini-crater
```
1. Run the tool. Provide the crate name, the version to upgrade from,
and one or more patch lines to substitute in. You can set the
environment variable `RUST_LOG=trace` to have more detail about the
process.
# Examples
## Normal upgrade
This evaluates crates that use SNAFU 0.6 to see if they will all build
with a locally-modified version of `snafu` and `snafu-derive`.
```
mini-crater snafu \
--version 0.6 \
--patch snafu=/Users/shep/Projects/snafu \
--patch snafu-derive=/Users/shep/Projects/snafu/snafu-derive
```
## Applying changes along with the upgrade
This runs a user-specified script called `adjust-code.sh` as the
second build step:
```
mini-crater snafu \
--version 0.6 \
--patch snafu=/Users/shep/Projects/snafu \
--patch snafu-derive=/Users/shep/Projects/snafu/snafu-derive \
--use-git \
--post-command /tmp/adjust-code.sh
```
User-specified scripts have the following environment variables available:
- `MINI_CRATER_WORKING_DIR` - The root working directory.
- `MINI_CRATER_EXPERIMENT_NAME` - The name of the current crate being
experimented on.
- `MINI_CRATER_EXPERIMENT_CHECKOUT_DIR` - When a git checkout has been
performed, this points to the top of the checkout.