feat(vm): capture the payload's output into a host directory

The console is one stream, kernel and guest mixed, so a consumer that
needs the payload's stdout and stderr apart - rhema's sandbox seam
reports them as separate fields - could not get it. With capture set,
the run adds the directory as an internal rw share (guest path
/.ecrou-io, reserved) and the init wraps the payload in a redirection
group pointing at it: the streams land host-side as DIR/stdout and
DIR/stderr, written live, owned by the host user, and there when run()
returns. The console stays on stdout for diagnostics; the CLI exposes
the flag as --capture.
This commit is contained in:
vhaudiquet committed 2026-10-28 13:37:33 +01:00
1 parent db2658f385
commit 23fcd713b6
5 files changed
+132 -10

No files matched your search

+4
View File
@@ -49,6 +49,10 @@ pub struct RunArgs {
/// Suppress console noise
#[arg(long)]
pub quiet: bool,
/// Capture the payload's stdout and stderr into files in this
/// directory: DIR/stdout and DIR/stderr. Created when missing.
#[arg(long)]
pub capture: Option<std::path::PathBuf>,
/// Ignore the cache and download a fresh image
#[arg(long)]
pub no_cache: bool,