Skip to main content

rl_lang/interpreter/stdlib/process/
cwd.rs

1use 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}