use crate::utils::podman::{Podman, PodmanContainerState, PodmanError};
use {clap::Args, thiserror::Error};
#[derive(Debug, Error)]
pub enum RemoveError {
#[error(transparent)]
Podman(#[from] PodmanError),
#[error("container '{name}' is in state '{state}'; run `podcell stop {name}` first")]
Running {
name: String,
state: PodmanContainerState,
},
}
#[derive(Args)]
pub struct Arguments {
#[arg()]
name: String,
}
pub fn run(args: Arguments) -> Result<(), RemoveError> {
let podman = Podman::new();
let container = podman.find_by_name(&args.name)?;
if container.state == PodmanContainerState::Running {
return Err(RemoveError::Running {
name: args.name,
state: container.state,
});
}
podman.rm_by_id(&container.id)?;
Ok(())
}