use super::Cmd; use crate::{args, unistd}; use clap::{Arg, Command}; use std::io; #[derive(Debug, Default)] pub struct Unlink; impl Cmd for Unlink { fn cli(&self) -> clap::Command { Command::new("unlink") .about("call the unlink function to remove the specified file") .author("Nathan Fisher") .version(env!("CARGO_PKG_VERSION")) .args([ args::verbose(), Arg::new("file") .value_name("FILE") .required(true) .num_args(1..), ]) } fn run(&self, matches: Option<&clap::ArgMatches>) -> Result<(), Box> { let Some(matches) = matches else { return Err(Box::new(io::Error::new(io::ErrorKind::Other, "no input"))); }; if let Some(files) = matches.get_many::("file") { for f in files { unistd::unlink(f)?; if matches.get_flag("verbose") { println!("unlink: {f}"); } } } Ok(()) } fn path(&self) -> Option { Some(crate::Path::UsrBin) } }