diff options
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())); |