builtin echo returns
parent
27ebbf7c97
commit
68909d22a8
@ -1,3 +1,33 @@
|
|||||||
pub trait BuiltinFn {
|
use crate::{
|
||||||
fn call(&self, args: Vec<&str>);
|
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