robinpath_modules/modules/
env_mod.rs1use robinpath::{RobinPath, Value};
2
3pub fn register(rp: &mut RobinPath) {
4 rp.register_builtin("env.get", |args, _| {
5 let name = args.first().map(|v| v.to_display_string()).unwrap_or_default();
6 let default = args.get(1).cloned().unwrap_or(Value::Null);
7 match std::env::var(&name) {
8 Ok(val) => Ok(Value::String(val)),
9 Err(_) => Ok(default),
10 }
11 });
12
13 rp.register_builtin("env.set", |args, _| {
14 let name = args.first().map(|v| v.to_display_string()).unwrap_or_default();
15 let value = args.get(1).map(|v| v.to_display_string()).unwrap_or_default();
16 unsafe { std::env::set_var(&name, &value) };
18 Ok(Value::Bool(true))
19 });
20
21 rp.register_builtin("env.has", |args, _| {
22 let name = args.first().map(|v| v.to_display_string()).unwrap_or_default();
23 Ok(Value::Bool(std::env::var(&name).is_ok()))
24 });
25
26 rp.register_builtin("env.all", |_args, _| {
27 let mut obj = indexmap::IndexMap::new();
28 for (key, value) in std::env::vars() {
29 obj.insert(key, Value::String(value));
30 }
31 Ok(Value::Object(obj))
32 });
33
34 rp.register_builtin("env.delete", |args, _| {
35 let name = args.first().map(|v| v.to_display_string()).unwrap_or_default();
36 unsafe { std::env::remove_var(&name) };
38 Ok(Value::Bool(true))
39 });
40}