Crate cote

Source
Expand description

§Cote

A simple option manager manage the AOpt, support auto generate help message.

§Setup

cargo add cote

§Enable Features from aopt

§Enable sync feature

If you want the utils of current crate implement Send and Sync, you can enable sync feature.

[dependencies]
cote = { version = "*", features = [ "sync" ] }

§Documents

See reference for more information.

§Example

§Using Cote generate struct from command line options.
use aopt::opt::Pos;
use cote::prelude::*;

fn main() -> cote::Result<()> {
    #[derive(Debug, Cote)]
    pub struct Cli {
        /// A flag option named `--flag`
        flag: bool,

        /// Comment here set the help message for option
        #[arg(alias = "-n")]
        name: String,

        #[arg(help = "`Option` mean the option is not force required")]
        nick: Option<String>,

        /// A position option at index 1
        #[arg(index = "1")]
        from: Pos<String>,

        /// A positon option collect argument start from 2
        #[pos(index = 2..)]
        to: Vec<String>,
    }
    let cli = Cli::parse(Args::from(["app", "-nLily", "src", "foo", "bar"]))?;

    assert!(!cli.flag);
    assert_eq!(cli.name, String::from("Lily"));
    assert_eq!(cli.nick, None);
    assert_eq!(cli.from, Pos(String::from("src")));
    assert_eq!(cli.to, vec![String::from("foo"), String::from("bar")]);

    let cli = Cli::parse(Args::from(["app", "--name", "Lily", "src", "foo", "bar"]))?;

    assert!(!cli.flag);
    assert_eq!(cli.name, String::from("Lily"));
    assert_eq!(cli.nick, None);
    assert_eq!(cli.from, Pos(String::from("src")));
    assert_eq!(cli.to, vec![String::from("foo"), String::from("bar")]);

    assert!(Cli::parse(Args::from(["app", "--nick", "Lily", "src", "foo", "bar"])).is_err());

    Ok(())
}

§LICENSE

MPL-2.0

Re-exports§

pub use aopt;
pub use aopt_help;
pub use cote_derive;

Modules§

_reference
Documentation: Cote Tutorial
prelude
shell
valid

Macros§

impl_fetch
valid
Check the value of option.

Structs§

CoteRes
Error
NullPolicy

Traits§

ExtractFromSetDerive
IntoParserDerive
Status

Type Aliases§

Result