use color_eyre::eyre;
use super::Context;
pub mod about;
pub mod clean;
pub mod completion;
pub mod fonts;
pub mod manpage;
pub mod migrate;
pub mod vcs;
#[derive(clap::Args, Debug, Clone)]
#[group(id = "util-args")]
pub struct Args {
#[command(subcommand)]
pub cmd: Command,
}
#[derive(clap::Subcommand, Debug, Clone)]
pub enum Command {
#[command()]
About,
#[command()]
Clean(clean::Args),
#[command()]
Completion(completion::Args),
#[command()]
Manpage(manpage::Args),
#[command()]
Fonts(fonts::Args),
#[command()]
Migrate(migrate::Args),
#[command()]
Vcs(vcs::Args),
}
impl Command {
pub fn run(&self, ctx: &mut Context) -> eyre::Result<()> {
match self {
Command::About => about::run(ctx),
Command::Clean(args) => clean::run(ctx, args),
Command::Completion(args) => completion::run(ctx, args),
Command::Manpage(args) => manpage::run(ctx, args),
Command::Fonts(args) => fonts::run(ctx, args),
Command::Migrate(args) => migrate::run(ctx, args),
Command::Vcs(args) => args.cmd.run(ctx),
}
}
}