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 run( &self, call_info: &CallInfo, _registry: &CommandRegistry, shell_manager: &ShellManager, _input: Tagged, ) -> Result, ShellError> { call_info.process(shell_manager, rm)?.run() } } fn rm( args: RemoveArgs, context: &RunnablePerItemContext, ) -> Result, ShellError> { let shell_manager = context.shell_manager.clone(); shell_manager.rm(args, context) }