Skip to main content

rl_lang/interpreter/stdlib/fs/
file_size.rs

1use crate::{
2    interpreter::{evaluator::Evaluator, values::Value},
3    utils::{errors::Error, span::Span},
4};
5
6pub fn std_file_size(eval: &mut Evaluator, path: String, span: Span) -> Result<Value, Error> {
7    let size = std::fs::metadata(&path)
8        .map_err(|e| {
9            eval.err(
10                format!("file_size(): failed to read \"{}\": {}", path, e),
11                span,
12            )
13        })?
14        .len();
15    Ok(Value::Integer(size as i64))
16}