From 9669fa8ff1abd64bdc4fc481e0dc976919c1dc56 Mon Sep 17 00:00:00 2001 From: Griffin Smith Date: Mon, 10 Oct 2022 00:47:25 -0400 Subject: 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 Reviewed-by: kanepyork Autosubmit: grfn Reviewed-by: tazjin --- tvix/eval/src/builtins/impure.rs | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'tvix/eval/src/builtins') diff --git a/tvix/eval/src/builtins/impure.rs b/tvix/eval/src/builtins/impure.rs index 5cf3ca4287d8..c8423b6ac316 100644 --- a/tvix/eval/src/builtins/impure.rs +++ b/tvix/eval/src/builtins/impure.rs @@ -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 { } Ok(Value::attrs(NixAttrs::from_map(res))) }), + Builtin::new("readFile", &[true], |args: Vec, 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()) + }), ] } -- cgit 1.4.1