builtin echo returns
parent
27ebbf7c97
commit
68909d22a8
@ -1,3 +1,33 @@
|
||||
pub trait BuiltinFn {
|
||||
fn call(&self, args: Vec<&str>);
|
||||
use crate::{
|
||||
error::ExecError,
|
||||
syntax::{self, State},
|
||||
};
|
||||
|
||||
pub enum Builtin {
|
||||
Echo,
|
||||
}
|
||||
|
||||
impl Builtin {
|
||||
pub fn lookup(name: &str) -> Option<Self> {
|
||||
match name {
|
||||
"echo" => Some(Self::Echo),
|
||||
_ => None,
|
||||
}
|
||||
}
|
||||
|
||||
pub fn call(
|
||||
&self,
|
||||
_: &mut State,
|
||||
args: &Vec<syntax::Value>,
|
||||
) -> Result<syntax::Value, ExecError> {
|
||||
match self {
|
||||
Builtin::Echo => {
|
||||
let args: Result<Vec<String>, ExecError> =
|
||||
args.into_iter().map(|arg| arg.try_as_string()).collect();
|
||||
let args = args?;
|
||||
println!("{}", args.join(" "));
|
||||
Ok(syntax::Value::None)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue