diff options
Diffstat (limited to 'cli/ops')
-rw-r--r-- | cli/ops/os.rs | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/cli/ops/os.rs b/cli/ops/os.rs index 770af404c..b35b76c2a 100644 --- a/cli/ops/os.rs +++ b/cli/ops/os.rs @@ -103,6 +103,25 @@ pub fn op_env( } #[derive(Deserialize)] +struct GetEnv { + key: String, +} + +pub fn op_get_env( + state: &ThreadSafeState, + args: Value, + _zero_copy: Option<PinnedBuf>, +) -> Result<JsonOp, ErrBox> { + let args: GetEnv = serde_json::from_value(args)?; + state.check_env()?; + let r = match env::var(args.key) { + Err(env::VarError::NotPresent) => json!([]), + v => json!([v?]), + }; + Ok(JsonOp::Sync(r)) +} + +#[derive(Deserialize)] struct Exit { code: i32, } |