use anyhow::Result; use clap::Clap; use log::info; /// Delete a message queue #[derive(Clap, Debug)] pub struct Unlink { /// Id of the queue #[clap( short, long, required_unless_present_any = &["key"], conflicts_with = "key" )] id: Option, /// Key of the queue #[clap(short, long, required_unless_present_any = &["id"], conflicts_with = "id")] key: Option, } impl Unlink { pub fn run(&self) -> Result<()> { if let Some(id) = self.id { sysvmq::unlink_id(id)?; info!("Removed message queue with id: {}", id); } else if let Some(key) = self.key { let id = sysvmq::id_from_key(key)?; sysvmq::unlink_id(id)?; info!("Removed message queue key: {} (id: {})", key, id); } Ok(()) } }