use clap::{Args, Subcommand};
use crate::cli::CanisterTarget;
#[derive(Debug, Subcommand)]
pub(crate) enum SchemaCommand {
Show(CanisterTarget),
#[command(subcommand)]
Migration(SchemaMigrationCommand),
}
#[derive(Debug, Subcommand)]
pub(crate) enum SchemaMigrationCommand {
Status(CanisterTarget),
Advance(CanisterTarget),
Run(CanisterTarget),
Abort(ConfirmedMigrationTarget),
Adopt(ConfirmedMigrationTarget),
}
#[derive(Args, Debug)]
pub(crate) struct ConfirmedMigrationTarget {
#[command(flatten)]
target: CanisterTarget,
#[arg(long)]
yes: bool,
}
impl ConfirmedMigrationTarget {
pub(crate) const fn target(&self) -> &CanisterTarget {
&self.target
}
pub(crate) const fn confirmed(&self) -> bool {
self.yes
}
}