#[doc(hidden)]
mod cmd;
#[doc(hidden)]
mod exec;
#[doc(hidden)]
mod styles;
use anyhow::Result;
use clap::{Parser, Subcommand};
use crate::exec::Exec;
#[derive(Debug, Parser)]
#[command(author, version)]
#[command(propagate_version = true)]
#[command(styles=styles::get_styles())]
#[doc(hidden)]
struct Cli {
#[command(subcommand)]
command: MainCommands,
}
#[derive(Debug, Subcommand)]
#[doc(hidden)]
enum MainCommands {
Single(cmd::single::CommandArgs),
Animate(cmd::animate_cmd::CommandArgs),
Frames(cmd::frames::CommandArgs),
}
#[doc(hidden)]
fn main() -> Result<()> {
let cli = Cli::parse();
let output = match cli.command {
MainCommands::Single(args) => args.exec(),
MainCommands::Animate(args) => args.exec(),
MainCommands::Frames(args) => args.exec(),
};
let output = output?;
if !output.is_empty() {
println!("{output}");
}
Ok(())
}