From 99eec73b4b8813c6db7cae83f5415b031de0c2c7 Mon Sep 17 00:00:00 2001 From: Jed Fox Date: Wed, 2 Oct 2019 11:55:28 -0400 Subject: feat: Add support for passing a key to Deno.env() (#2952) This adds a new op to get a single env var. --- cli/ops/os.rs | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) (limited to 'cli/ops') 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 @@ -102,6 +102,25 @@ pub fn op_env( Ok(JsonOp::Sync(json!(v))) } +#[derive(Deserialize)] +struct GetEnv { + key: String, +} + +pub fn op_get_env( + state: &ThreadSafeState, + args: Value, + _zero_copy: Option, +) -> Result { + 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, -- cgit v1.2.3