cargo-examples 0.6.0

Run all examples for any locally cloned crate
# cargo-examples

`cargo-examples` is a cargo subcommand that lets you run all examples in any locally cloned crate.

My main motivation for this tool is that when checking out a library or binary, I want to run all the examples so I can quickly grasp the inner workings of a crate interactively.

This tool supports running examples the same way `cargo run --example <name>` does, meaning it can run single files from `examples` directory, [multi-file](https://doc.rust-lang.org/cargo/guide/project-layout.html) examples in `examples` directory and [manifest-based](https://doc.rust-lang.org/cargo/reference/cargo-targets.html#examples) example specified in projects `Cargo.toml`.

In addition to this `cargo-examples` allows you to run subproject examples from `examples` directory, meaning subproject directories with `Cargo.toml` that sit in `examples` directory, this can be seen in many projects across Rust ecosystem which have more involved examples, cargo cannot run this out-of-the box with `cargo run --example <name>`.

> **Single file example**  
> `<project>/examples/foo.rs`

> **Multi file example**  
> `<project>/examples/bar/main.rs`  

> **Subproject example**  
> `<project>/examples/baz/Cargo.toml`

> **Manifest based example**
> `[[example]]` in `Cargo.toml`

## Installing

You can install this with cargo:
```
cargo install cargo-examples
```

## Usage

Clone your favorite crate, `cd` into the repo and run `cargo examples`

By default, `cargo examples` will run all the examples in a crate in order.

There are cli options that you can use to modify how the examples are ran:

```
Cargo subcommand to run all examples for any locally cloned crate
USAGE:
    cargo examples [OPTIONS] [-- <CARGO_ARGS>...]
ARGUMENTS:
    [CARGO_ARGS]...  Pass these arguments along to cargo when running
OPTIONS:
        --manifest-path <FILE>  Path to Cargo.toml
    -l, --list                  List *all* examples and print them out before running any
    -p, --print                 Print example name before running
    -f, --from <EXAMPLE>        Run example starting with <EXAMPLE>
    -n, --no-run                Do not run any examples, useful when combined with `--list`, or `--from` + `--print`
    -s, --skip <EXAMPLE>        Skip <EXAMPLE> when running. (--skip=example1,example2)
    -F, --features <FEATURES>   Run examples with <FEATURES> enabled. (--features=feature1,feature2)
    -h, --help                  Print help
    -V, --version               Print version
```