From 90ec632fd11a8767954f064a9344af8830d9fdc6 Mon Sep 17 00:00:00 2001 From: Griffin Smith Date: Mon, 10 Oct 2022 00:47:45 -0400 Subject: feat(tvix/eval): Implement builtins.getEnv Change-Id: I09f512a60989a37184e73e521d4a3aa23f33a1a8 Reviewed-on: https://cl.tvl.fyi/c/depot/+/6922 Autosubmit: grfn Tested-by: BuildkiteCI Reviewed-by: Adam Joseph Reviewed-by: kanepyork --- tvix/eval/src/builtins/impure.rs | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'tvix/eval') diff --git a/tvix/eval/src/builtins/impure.rs b/tvix/eval/src/builtins/impure.rs index c8423b6ac316..2315904f143b 100644 --- a/tvix/eval/src/builtins/impure.rs +++ b/tvix/eval/src/builtins/impure.rs @@ -1,6 +1,7 @@ use std::{ cell::RefCell, collections::{BTreeMap, HashMap}, + env, fs::File, io::{self, Read}, rc::Rc, @@ -10,13 +11,18 @@ use std::{ use crate::{ errors::ErrorKind, observer::NoOpObserver, - value::{Builtin, NixAttrs, NixString, Thunk}, + value::{Builtin, CoercionKind, NixAttrs, NixString, Thunk}, vm::VM, SourceCode, Value, }; fn impure_builtins() -> Vec { vec![ + Builtin::new("getEnv", &[true], |args: Vec, vm: &mut VM| { + Ok(env::var(args[0].coerce_to_string(CoercionKind::Weak, vm)?) + .unwrap_or_else(|_| "".into()) + .into()) + }), Builtin::new("pathExists", &[true], |args: Vec, vm: &mut VM| { Ok(super::coerce_value_to_path(&args[0], vm)?.exists().into()) }), -- cgit 1.4.1