summaryrefslogtreecommitdiff
path: root/cli/ops
diff options
context:
space:
mode:
Diffstat (limited to 'cli/ops')
-rw-r--r--cli/ops/os.rs17
1 files changed, 17 insertions, 0 deletions
diff --git a/cli/ops/os.rs b/cli/ops/os.rs
index 36cd99577..ab7ed2876 100644
--- a/cli/ops/os.rs
+++ b/cli/ops/os.rs
@@ -15,6 +15,7 @@ pub fn init(i: &mut CoreIsolate, s: &State) {
i.register_op("op_exec_path", s.stateful_json_op(op_exec_path));
i.register_op("op_set_env", s.stateful_json_op(op_set_env));
i.register_op("op_get_env", s.stateful_json_op(op_get_env));
+ i.register_op("op_delete_env", s.stateful_json_op(op_delete_env));
i.register_op("op_get_dir", s.stateful_json_op(op_get_dir));
i.register_op("op_hostname", s.stateful_json_op(op_hostname));
i.register_op("op_loadavg", s.stateful_json_op(op_loadavg));
@@ -138,6 +139,22 @@ fn op_get_env(
}
#[derive(Deserialize)]
+struct DeleteEnv {
+ key: String,
+}
+
+fn op_delete_env(
+ state: &State,
+ args: Value,
+ _zero_copy: &mut [ZeroCopyBuf],
+) -> Result<JsonOp, OpError> {
+ let args: DeleteEnv = serde_json::from_value(args)?;
+ state.check_env()?;
+ env::remove_var(args.key);
+ Ok(JsonOp::Sync(json!({})))
+}
+
+#[derive(Deserialize)]
struct Exit {
code: i32,
}