This is a Rust library that has a few goodies for working with the xtask
concept.
[dependencies]
xtaskops = "0.4.0"
For most recent version see crates.io
You should have the xtask
concept already set up for your project.
- To get started quickly, you can use this Rust CI starter
- To set up manually follow the repo here.
Full workflow tasks for your daily development.
- bloat_deps Show biggest crates in release build
- bloat_time Show crate build times
- dev Run
cargo check
followed bycargo test
for every file change - ci Run typical CI tasks in series: fmt, clippy, and tests
- coverage Run coverage
- docs Run cargo docs in watch mode
- install Instal cargo tools
- powerset Perform a CI build with powerset of features
Here's an example for how to integrate the coverage task with clap
:
use xtaskops::tasks;
// assuming you use `clap`
let res = match matches.subcommand() {
Some(("coverage", sm)) => tasks::coverage(sm.is_present("dev")),
//..
You can include everything from xtask
in your project. In your xtask/main.rs
:
fn main() -> Result<(), anyhow::Error> {
xtaskops::tasks::main()
}
Low level convenience operations, for file system operations, user input and more.
use xtaskops::ops::{remove_dir, create_dir_all, cmd};
remove_dir("target")?;
create_dir_all("target")?;
// cmd! is from the `duct` library
cmd!("cargo", "watch", "-s", "cargo doc --no-deps").run()?;
Ok(())
Run:
$ cargo xtask coverage
Recommended: alias cargo xtask
to x
:
# in your zshrc/shell rcfile
alias x="cargo xtask"
Copyright (c) 2022 @jondot. See LICENSE for further details.