unc_sandbox_utils/
sync.rs

1use std::path::Path;
2use std::process::{Child, Command};
3
4pub fn run_with_options(options: &[&str]) -> anyhow::Result<Child> {
5    let bin_path = crate::ensure_sandbox_bin()?;
6    Command::new(bin_path)
7        .args(options)
8        .envs(crate::log_vars())
9        .spawn()
10        .map_err(Into::into)
11}
12
13pub fn run(home_dir: impl AsRef<Path>, rpc_port: u16, network_port: u16) -> anyhow::Result<Child> {
14    let home_dir = home_dir.as_ref().to_str().unwrap();
15    run_with_options(&[
16        "--home",
17        home_dir,
18        "run",
19        "--rpc-addr",
20        &crate::local_addr(rpc_port),
21        "--network-addr",
22        &crate::local_addr(network_port),
23    ])
24}
25
26pub fn init(home_dir: impl AsRef<Path>) -> anyhow::Result<Child> {
27    let bin_path = crate::ensure_sandbox_bin()?;
28    let home_dir = home_dir.as_ref().to_str().unwrap();
29    Command::new(bin_path)
30        .envs(crate::log_vars())
31        .args(["--home", home_dir, "init"])
32        .spawn()
33        .map_err(Into::into)
34}