use crate::commands::command::EvaluatedStaticCommandArgs; use crate::errors::ShellError; use crate::stream::OutputStream; pub trait Shell { fn name(&self) -> String; fn ls(&self, args: EvaluatedStaticCommandArgs) -> Result; fn cd(&self, args: EvaluatedStaticCommandArgs) -> Result; fn path(&self) -> String; fn set_path(&mut self, path: String); fn complete( &self, line: &str, pos: usize, ctx: &rustyline::Context<'_>, ) -> Result<(usize, Vec), rustyline::error::ReadlineError>; fn hint(&self, _line: &str, _pos: usize, _ctx: &rustyline::Context<'_>) -> Option; }