rl_lang/interpreter/stdlib/process/
cwd.rs1use crate::{
2 interpreter::{evaluator::Evaluator, values::Value},
3 utils::{errors::Error, span::Span},
4};
5
6pub fn std_cwd(eval: &mut Evaluator, _: Vec<Value>, span: Span) -> Result<Value, Error> {
7 std::env::current_dir()
8 .map(|p| Value::String(p.to_string_lossy().to_string()))
9 .map_err(|e| eval.err(format!("cwd(): {}", e), span))
10}
11
12pub fn std_set_cwd(eval: &mut Evaluator, path: String, span: Span) -> Result<Value, Error> {
13 std::env::set_current_dir(&path)
14 .map(|_| Value::Null)
15 .map_err(|e| {
16 eval.err(
17 format!("set_cwd(): failed to change to \"{}\": {}", path, e),
18 span,
19 )
20 })
21}