use crate::commands::command::RunnablePerItemContext; use crate::errors::ShellError; use crate::parser::hir::SyntaxType; use crate::parser::registry::{CommandRegistry, Signature}; use crate::prelude::*; use std::path::PathBuf; pub struct Remove; #[derive(Deserialize)] pub struct RemoveArgs { pub target: Tagged, pub recursive: Tagged, } impl PerItemCommand for Remove { fn name(&self) -> &str { "rm" } fn signature(&self) -> Signature { Signature::build("rm") .required("path", SyntaxType::Path) .switch("recursive") } fn usage(&self) -> &str { "Remove a file, (for removing directory append '--recursive')" } fn run( &self, call_info: &CallInfo, _registry: &CommandRegistry, raw_args: &RawCommandArgs, _input: Tagged, ) -> Result { call_info.process(&raw_args.shell_manager, rm)?.run() } } fn rm(args: RemoveArgs, context: &RunnablePerItemContext) -> Result { let shell_manager = context.shell_manager.clone(); shell_manager.rm(args, context) }