pub mod command;
pub mod global_args;
use crate::cli::command::Command;
use crate::cli::global_args::GlobalArgs;
use arbitrary::Arbitrary;
use facet::Facet;
use figue::FigueBuiltins;
use figue::{self as args};
#[derive(Facet, Arbitrary, Debug, Default)]
pub struct Cli {
#[facet(flatten)]
pub global_args: GlobalArgs,
#[facet(flatten)]
#[arbitrary(default)]
pub builtins: FigueBuiltins,
#[facet(args::subcommand)]
pub command: Command,
}
impl PartialEq for Cli {
fn eq(&self, other: &Self) -> bool {
self.global_args == other.global_args && self.command == other.command
}
}
impl Cli {
pub fn invoke(self) -> eyre::Result<()> {
self.command.invoke()
}
}