vecli 0.3.2

A zero-dependency, minimal CLI framework that's genuinely readable.
Documentation
# Subcommands

Full subcommand chaining support was added on [version 0.3.0](https://github.com/razkar-studio/vecli/releases/tag/v0.3.0).

Say we want a `goodbye` subcommand for our `hello` command that prints a farewell message. We can achieve this flawlessly by adding a new subcommand to our `hello` command.

First, make the handler for it, we'll need it later:

```rust
// use vecli::*;

fn goodbye(_ctx: &CommandContext) {
    println!("Hello!");
    println!("Goodbye!");
}
```

To add this as a subcommand for our `hello` command, we can do it like so by using the `.subcommand()` method:

```rust
// let hello_command = Command::new(...)
// ...

hello_command.subcommand(
    Command::new("goodbye", goodbye)
);
```

Now, when the user runs `my-app hello goodbye` (or `cargo run hello goodbye`), the `goodbye` subcommand will be executed and print a farewell message!

```shell
$ my-app hello goodbye
Hello!
Goodbye!
```

Since subcommands are just regular commands, they can have their own flags, and even subcommands of their own. Configuring them is the same as configuring any other command.

## Extra

If you want a command that does nothing and is only a container for subcommands, you can use a separate `Command` constructor using `Command::parent("name")`. This is useful for organizing related subcommands together. Running a parent command without a subcommand will print an error by default, so it's best to pass `.print_help_if_no_args(true)` to make it print the help message instead.

```rust
let parent_command = Command::parent("parent").print_help_if_no_args(true);
```

---

Next up, let's implement the `silent` flag for our `hello` command. We can accomplish this by adding [Flags](./flags.md)