use eyre::Result;
mod ls;
mod sync;
#[derive(Debug, usage_rs::Args)]
#[usage(alias = "skill", verbatim_doc_comment)]
pub(crate) struct Skills {
#[usage(subcommand)]
command: Option<Commands>,
}
#[derive(Debug, usage_rs::Subcommands)]
enum Commands {
Ls(ls::SkillsLs),
Sync(sync::SkillsSync),
}
impl Commands {
async fn run(self) -> Result<()> {
match self {
Self::Ls(cmd) => cmd.run().await,
Self::Sync(cmd) => cmd.run().await,
}
}
}
impl Skills {
pub(crate) async fn run(self) -> Result<()> {
self.command
.unwrap_or(Commands::Ls(ls::SkillsLs::default()))
.run()
.await
}
}