use clap::{Parser, Subcommand};
use openstack_sdk::{AsyncOpenStack, types::ServiceType};
use crate::{Cli, OpenStackCliError};
pub mod image;
pub mod metadef;
pub mod schema;
#[derive(Parser)]
pub struct ImageCommand {
#[command(subcommand)]
command: ImageCommands,
}
#[allow(missing_docs)]
#[derive(Subcommand)]
pub enum ImageCommands {
Image(Box<image::ImageCommand>),
Metadef(Box<metadef::MetadefCommand>),
Schema(Box<schema::SchemaCommand>),
}
impl ImageCommand {
pub async fn take_action(
&self,
parsed_args: &Cli,
session: &mut AsyncOpenStack,
) -> Result<(), OpenStackCliError> {
session
.discover_service_endpoint(&ServiceType::Image)
.await?;
match &self.command {
ImageCommands::Image(cmd) => cmd.take_action(parsed_args, session).await,
ImageCommands::Metadef(cmd) => cmd.take_action(parsed_args, session).await,
ImageCommands::Schema(cmd) => cmd.take_action(parsed_args, session).await,
}
}
}