diff options
author | Yoshiya Hinosawa <stibium121@gmail.com> | 2019-02-16 00:37:04 +0900 |
---|---|---|
committer | Ryan Dahl <ry@tinyclouds.org> | 2019-02-15 10:37:04 -0500 |
commit | 2241049c349443a971ba2558f373d62bbb7d9780 (patch) | |
tree | bd25d822e7d869acdda59541783ffcae716ca672 /src | |
parent | 748e456cdb18912e780b69cc90023ef37f4d0c24 (diff) |
feat: env option in run api (#1773)
Diffstat (limited to 'src')
-rw-r--r-- | src/msg.fbs | 1 | ||||
-rw-r--r-- | src/ops.rs | 5 |
2 files changed, 6 insertions, 0 deletions
diff --git a/src/msg.fbs b/src/msg.fbs index 7d8b89175..f3c47faf6 100644 --- a/src/msg.fbs +++ b/src/msg.fbs @@ -464,6 +464,7 @@ enum ProcessStdio: byte { Inherit, Piped, Null } table Run { args: [string]; cwd: string; + env: [KeyValue]; stdin: ProcessStdio; stdout: ProcessStdio; stderr: ProcessStdio; diff --git a/src/ops.rs b/src/ops.rs index a0646e923..a968ae6e1 100644 --- a/src/ops.rs +++ b/src/ops.rs @@ -1559,6 +1559,7 @@ fn op_run( assert_eq!(data.len(), 0); let inner = base.inner_as_run().unwrap(); let args = inner.args().unwrap(); + let env = inner.env().unwrap(); let cwd = inner.cwd(); let mut c = Command::new(args.get(0)); @@ -1567,6 +1568,10 @@ fn op_run( c.arg(arg); }); cwd.map(|d| c.current_dir(d)); + (0..env.len()).for_each(|i| { + let entry = env.get(i); + c.env(entry.key().unwrap(), entry.value().unwrap()); + }); c.stdin(subprocess_stdio_map(inner.stdin())); c.stdout(subprocess_stdio_map(inner.stdout())); |