clik_codegen 0.1.1

Codegen for the clik crate
Documentation
Create a `clik::Command` from a function

# `clik_command`

This attribute-macro allows for easy annotation of functions as `clik::Command`s:

```rust
use clik_codegen::*;
use std::error::Error;

#[clik_command(my_command, "This is a command that returns the number that was input")]
#[clik_arg(number, "The number to display")]
fn my_command(state: &mut i32, number: i32) -> Result<(), Box<dyn Error>> {
    println!("You entered: {number}");
    *state = number;
    Ok(())
}
```

# Arguments

There are 2 arguments: `#[clik_command(<cmd_name>, <cmd_help>)]`

- `cmd_name`: The name of the command in the `CLI`

- `cmd_help`: The help string to display, describing the command

# Async

`clik` has support for async commands with the `async` feature.

If a function is marked with `async`, the `clik_command` macro will automatically create an async `clik::Command`.

# Attributes

There are some attributes that can be added **after** the `clik_command` macro:

### `clik_arg`:

This attribute describes an argument with a string: `#[clik_arg(<arg_name>, <arg_help>)]`

- `arg_name`: The `Ident` of the argument, this is checked

- `arg_help` A description for the argument

> **Note**
> 
> The argument documentation is checked, so describing non-existing arguments errors out