Opinionated batteries-included command line interface runtime utilities.
To use it, add it to your Cargo.toml
```toml [dependencies] cli-batteries = "0.1"
[build-dependencies] cli-batteries = "0.1" ```
and call the [build_rs
] function in your build.rs
rust,ignore
fn main() {
cli_batteries::build_rs()
}
Then in your src/main.rs
you define app specific command line arguments using [StructOpt
][structopt] and run the app as follows
```rust,ignore use cli_batteries::{version, StructOpt}; use std::{path::PathBuf, io::Result}; use tokio::fs::File;
struct Options { /// File to read #[structopt(long, env, default_value = "Readme.md")] file: PathBuf, }
async fn app(options: Options) -> Result<()> { let mut file = File::open(options.file).await?; Ok(()) }
fn main() { cli_batteries::run(version!(), app); } ```
You can see this working in the example project.
mimalloc
: Use the [mimalloc] allocator with security hardening features enabled.rand
: Log and configure random seeds.rayon
: Log and configure number of threads.prometheus
: Start a Prometheus metrics server.metered_allocator
: Collect metric on memory allocation, enables prometheus
.tokio_console
: Start a Tokio console server.Format, lint, build and test everything (I recommend creating a shell alias for this):
sh
cargo fmt &&\
cargo clippy --all-features --all-targets &&\
cargo test --workspace --all-features --doc -- --nocapture &&\
cargo test --workspace --all-features --all-targets -- --nocapture &&\
cargo doc --workspace --all-features --no-deps
Check documentation coverage
sh
RUSTDOCFLAGS="-Z unstable-options --show-coverage" cargo doc --workspace --all-features --no-deps
Goals:
Maybe: