mirror of
https://github.com/vhaudiquet/ecrou.git
synced 2026-11-12 22:22:44 +00:00
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:
1 parent
db2658f385
commit
23fcd713b6
5 files changed
+132
-10
No files matched your search
@@ -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,
|
||||
|
||||
@@ -36,6 +36,7 @@ fn cmd_run(args: &RunArgs, cli_verbose: bool) -> std::process::ExitCode {
|
||||
LogLevel::Normal
|
||||
},
|
||||
no_cache: args.no_cache,
|
||||
capture: args.capture.clone(),
|
||||
..RunOptions::default()
|
||||
};
|
||||
for spec in &args.env {
|
||||
|
||||
Reference in new issue
Block a user