use std::future::Future;
use clap::{Parser, Subcommand};
use crate::{
commands::{Format, Lint, Optimise},
config::Config,
};
pub trait RunCommand {
fn run(self, config: Config) -> impl Future<Output = anyhow::Result<()>> + Send;
}
#[derive(Parser)]
#[clap(
bin_name = "oxvg",
name = "oxvg",
author,
version,
about = "Your versatile vector-graphics toolchain",
long_about = None
)]
pub struct Args {
#[clap(subcommand)]
pub command: Command,
}
#[derive(Subcommand)]
pub enum Command {
#[clap(alias = "optimize")]
Optimise(Optimise),
Format(Format),
#[command(subcommand)]
Lint(Lint),
}