diff --git a/jaq-core/src/lib.rs b/jaq-core/src/lib.rs index 8f223d212..a552df42c 100644 --- a/jaq-core/src/lib.rs +++ b/jaq-core/src/lib.rs @@ -360,7 +360,16 @@ fn now() -> Result { } #[cfg(feature = "std")] -const STD: &[(&str, usize, RunPtr)] = &[("now", 0, |_, _| box_once(now().map(Val::Float)))]; +const STD: &[(&str, usize, RunPtr)] = &[ + ("env", 0, |_, _| { + box_once(Ok(Val::obj( + std::env::vars() + .map(|(k, v)| (Rc::new(k), Val::str(v))) + .collect(), + ))) + }), + ("now", 0, |_, _| box_once(now().map(Val::Float))), +]; #[cfg(feature = "parse_json")] /// Convert string to a single JSON value. diff --git a/jaq/src/main.rs b/jaq/src/main.rs index 02b239076..68e2610c1 100644 --- a/jaq/src/main.rs +++ b/jaq/src/main.rs @@ -218,6 +218,14 @@ fn binds(cli: &Cli) -> Result, Error> { })?; var_val.push(("ARGS".to_string(), args_named(&var_val))); + var_val.push(( + "ENV".to_string(), + Val::obj( + std::env::vars() + .map(|(k, v)| (k.into(), Val::str(v))) + .collect(), + ), + )); Ok(var_val) }