summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorYoshiya Hinosawa <stibium121@gmail.com>2019-02-16 00:37:04 +0900
committerRyan Dahl <ry@tinyclouds.org>2019-02-15 10:37:04 -0500
commit2241049c349443a971ba2558f373d62bbb7d9780 (patch)
treebd25d822e7d869acdda59541783ffcae716ca672 /src
parent748e456cdb18912e780b69cc90023ef37f4d0c24 (diff)
feat: env option in run api (#1773)
Diffstat (limited to 'src')
-rw-r--r--src/msg.fbs1
-rw-r--r--src/ops.rs5
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()));