use crate::commands::WholeStreamCommand; use crate::errors::ShellError; use crate::parser::CommandRegistry; use crate::prelude::*; pub struct Reverse; impl WholeStreamCommand for Reverse { fn run( &self, args: CommandArgs, registry: &CommandRegistry, ) -> Result { reverse(args, registry) } fn name(&self) -> &str { "reverse" } fn signature(&self) -> Signature { Signature::build("reverse") } } fn reverse(args: CommandArgs, registry: &CommandRegistry) -> Result { let args = args.evaluate_once(registry)?; let (input, _args) = args.parts(); let output = input.values.collect::>(); let output = output.map(move |mut vec| { vec.reverse(); vec.into_iter().collect::>() }); Ok(output.flatten_stream().from_input_stream()) }