rl_lang/interpreter/stdlib/io/
append_file.rs1use crate::{
2 interpreter::{evaluator::Evaluator, values::Value},
3 utils::{errors::Error, span::Span},
4};
5use std::{fs::OpenOptions, io::Write};
6
7pub fn std_append_file(
8 eval: &mut Evaluator,
9 file: String,
10 content: String,
11 span: Span,
12) -> Result<Value, Error> {
13 let mut file_data = OpenOptions::new()
14 .append(true)
15 .create(true)
16 .open(&file)
17 .map_err(|e| {
18 eval.err(
19 format!("append_file(): failed to open \"{}\": {}", file, e),
20 span,
21 )
22 })?;
23
24 file_data.write_all(content.as_bytes()).map_err(|e| {
25 eval.err(
26 format!("append_file(): failed to append \"{}\": {}", file, e),
27 span,
28 )
29 })?;
30
31 Ok(Value::Null)
32}