feat(tvix/eval): Implement builtins.readFile

Change-Id: If3fd0b087009a2bfbad8bb7aca0aa20de906eb12
Reviewed-on: https://cl.tvl.fyi/c/depot/+/6921
Tested-by: BuildkiteCI
Reviewed-by: Adam Joseph <adam@westernsemico.com>
Reviewed-by: kanepyork <rikingcoding@gmail.com>
Autosubmit: grfn <grfn@gws.fyi>
Reviewed-by: tazjin <tazjin@tvl.su>
This commit is contained in:
Griffin Smith 2022-10-10 00:47:25 -04:00 committed by grfn
parent 1f84d90811
commit 9669fa8ff1
4 changed files with 16 additions and 1 deletions

View file

@ -1,7 +1,8 @@
use std::{
cell::RefCell,
collections::{BTreeMap, HashMap},
io,
fs::File,
io::{self, Read},
rc::Rc,
time::{SystemTime, UNIX_EPOCH},
};
@ -52,6 +53,11 @@ fn impure_builtins() -> Vec<Builtin> {
}
Ok(Value::attrs(NixAttrs::from_map(res)))
}),
Builtin::new("readFile", &[true], |args: Vec<Value>, vm: &mut VM| {
let mut buf = String::new();
File::open(&super::coerce_value_to_path(&args[0], vm)?)?.read_to_string(&mut buf)?;
Ok(buf.into())
}),
]
}