From 3ab594188fa1c742558b37035fb0cbd72bf80383 Mon Sep 17 00:00:00 2001 From: Daniel Silverstone Date: Sat, 19 Mar 2022 17:44:30 +0000 Subject: (subplotlib): Make runcmd report about executed processes Signed-off-by: Daniel Silverstone --- subplotlib/src/steplibrary/runcmd.rs | 28 ++++++++++++++++++++++++---- 1 file changed, 24 insertions(+), 4 deletions(-) (limited to 'subplotlib') diff --git a/subplotlib/src/steplibrary/runcmd.rs b/subplotlib/src/steplibrary/runcmd.rs index 781e789..fc93b7e 100644 --- a/subplotlib/src/steplibrary/runcmd.rs +++ b/subplotlib/src/steplibrary/runcmd.rs @@ -260,15 +260,28 @@ pub fn try_to_run_in(context: &ScenarioContext, dirname: &str, argv0: &str, args if dirname != USE_CWD { datadir = datadir.join(dirname); } - let mut proc = Command::new(argv0); - proc.args(&shell_words::split(args)?); + let mut proc = Command::new(&argv0); + let args = shell_words::split(args)?; + proc.args(&args); proc.current_dir(&datadir); + + println!( + "Running `{}` with args {:?}\nRunning in {}", + argv0.display(), + args, + datadir.display() + ); proc.env("HOME", &datadir); proc.env("TMPDIR", &datadir); context.with( |runcmd: &Runcmd| { - for (k, v) in runcmd.env.iter() { + for (k, v) in runcmd + .env + .iter() + .filter(|(k, _)| k.to_str() != Some("PATH")) + { + println!("ENV: {} = {}", k.to_string_lossy(), v.to_string_lossy()); proc.env(k, v); } Ok(()) @@ -277,7 +290,8 @@ pub fn try_to_run_in(context: &ScenarioContext, dirname: &str, argv0: &str, args )?; let path = context.with(|runcmd: &Runcmd| Ok(runcmd.join_paths()?), false)?; - proc.env("PATH", path); + proc.env("PATH", &path); + println!("PATH: {}", path.to_string_lossy()); proc.stdin(Stdio::null()) .stdout(Stdio::piped()) .stderr(Stdio::piped()); @@ -287,6 +301,12 @@ pub fn try_to_run_in(context: &ScenarioContext, dirname: &str, argv0: &str, args std::mem::swap(&mut runcmd.stdout, &mut output.stdout); std::mem::swap(&mut runcmd.stderr, &mut output.stderr); runcmd.exitcode = output.status.code(); + println!("Exit code: {}", runcmd.exitcode.unwrap_or(-1)); + println!( + "Stdout:\n{}\nStderr:\n{}\n", + runcmd.stdout_as_string(), + runcmd.stderr_as_string() + ); Ok(()) }, false, -- cgit v1.2.1