use pesde::Project;
mod add;
mod auth;
mod cas;
mod config;
mod deprecate;
mod execute;
mod init;
mod install;
mod list;
mod outdated;
#[cfg(feature = "patches")]
mod patch;
#[cfg(feature = "patches")]
mod patch_commit;
mod publish;
mod remove;
mod run;
#[cfg(feature = "version-management")]
mod self_install;
#[cfg(feature = "version-management")]
mod self_upgrade;
mod update;
mod yank;
#[derive(Debug, clap::Subcommand)]
pub enum Subcommand {
Auth(auth::AuthSubcommand),
#[command(subcommand)]
Config(config::ConfigCommands),
#[command(subcommand)]
Cas(cas::CasCommands),
Init(init::InitCommand),
Add(add::AddCommand),
Remove(remove::RemoveCommand),
#[clap(name = "install", visible_alias = "i")]
Install(install::InstallCommand),
Update(update::UpdateCommand),
Outdated(outdated::OutdatedCommand),
List(list::ListCommand),
Run(run::RunCommand),
Publish(publish::PublishCommand),
Yank(yank::YankCommand),
Deprecate(deprecate::DeprecateCommand),
#[cfg(feature = "patches")]
Patch(patch::PatchCommand),
#[cfg(feature = "patches")]
PatchCommit(patch_commit::PatchCommitCommand),
#[clap(name = "x", visible_alias = "execute", visible_alias = "exec")]
Execute(execute::ExecuteCommand),
#[cfg(feature = "version-management")]
SelfInstall(self_install::SelfInstallCommand),
#[cfg(feature = "version-management")]
SelfUpgrade(self_upgrade::SelfUpgradeCommand),
}
impl Subcommand {
pub async fn run(self, project: Project, reqwest: reqwest::Client) -> anyhow::Result<()> {
match self {
Subcommand::Auth(auth) => auth.run(project, reqwest).await,
Subcommand::Config(config) => config.run().await,
Subcommand::Cas(cas) => cas.run(project).await,
Subcommand::Init(init) => init.run(project).await,
Subcommand::Add(add) => add.run(project).await,
Subcommand::Remove(remove) => remove.run(project).await,
Subcommand::Install(install) => install.run(project, reqwest).await,
Subcommand::Update(update) => update.run(project, reqwest).await,
Subcommand::Outdated(outdated) => outdated.run(project).await,
Subcommand::List(list) => list.run(project).await,
Subcommand::Run(run) => run.run(project, reqwest).await,
Subcommand::Publish(publish) => publish.run(project, reqwest).await,
Subcommand::Yank(yank) => yank.run(project, reqwest).await,
Subcommand::Deprecate(deprecate) => deprecate.run(project, reqwest).await,
#[cfg(feature = "patches")]
Subcommand::Patch(patch) => patch.run(project, reqwest).await,
#[cfg(feature = "patches")]
Subcommand::PatchCommit(patch_commit) => patch_commit.run(project).await,
Subcommand::Execute(execute) => execute.run(project, reqwest).await,
#[cfg(feature = "version-management")]
Subcommand::SelfInstall(self_install) => self_install.run().await,
#[cfg(feature = "version-management")]
Subcommand::SelfUpgrade(self_upgrade) => self_upgrade.run(project, reqwest).await,
}
}
}