mod activate;
pub(crate) mod duration;
mod pending;
mod provision;
pub(crate) mod public_key;
mod request;
mod status;
use anyhow::Result;
use clap::Subcommand;
use provision::ProvisionArgs;
use status::StatusArgs;
use crate::auth::{self, AuthOptions};
use crate::operations::OperationOutput;
#[derive(Debug, Subcommand)]
pub enum SessionCommand {
Request {
#[arg(long = "profile-name")]
name: String,
#[arg(long)]
replace: bool,
},
Provision(ProvisionArgs),
Activate {
#[arg(long = "profile-name")]
name: String,
},
Status(StatusArgs),
}
pub async fn run(command: SessionCommand, options: &AuthOptions) -> Result<OperationOutput> {
match command {
SessionCommand::Request { name, replace } => request::run(name, replace).await,
SessionCommand::Provision(args) => {
provision::run(auth::resolve(options).await?, args).await
}
SessionCommand::Activate { name } => activate::run(name).await,
SessionCommand::Status(args) => status::run(args).await,
}
}