use std::path::{Path, PathBuf};
use clap::{Args, Subcommand, ValueHint};
use super::{CanisterTarget, EnvironmentTarget};
#[derive(Debug, Subcommand)]
pub(crate) enum CanisterCommand {
List(EnvironmentTarget),
Deploy(CanisterTarget),
Refresh(CanisterTarget),
Upgrade(UpgradeArgs),
Status(CanisterTarget),
}
#[derive(Args, Debug)]
pub(crate) struct UpgradeArgs {
#[command(flatten)]
target: CanisterTarget,
#[arg(long, value_name = "PATH", value_hint = ValueHint::FilePath)]
wasm: Option<PathBuf>,
}
impl UpgradeArgs {
pub(crate) const fn target(&self) -> &CanisterTarget {
&self.target
}
pub(crate) fn wasm(&self) -> Option<&Path> {
self.wasm.as_deref()
}
}