#[derive(Debug, Default, Clone)]
pub struct CliOption {
pub name: String,
pub short_name: Option<char>,
pub long_name: Option<String>,
pub standalone: bool,
pub default_value: Option<String>,
pub default_missing_value: Option<String>,
pub takes_value: bool,
}
#[derive(Debug, Default, Clone)]
pub struct CliArgument {
pub name: String,
pub default_value: Option<String>,
pub required: bool,
}
#[derive(Debug, Default, Clone)]
pub struct CliSubcommand {
pub name: String,
pub value: Option<String>,
pub default_value: Option<String>,
pub items: Vec<CliItem>,
}
#[derive(Debug, Clone)]
pub enum CliItem {
Options(Vec<CliOption>),
Subcommands(Vec<CliSubcommand>),
Arguments(Vec<CliArgument>),
}