mirror of
https://github.com/sxyazi/yazi.git
synced 2026-07-21 23:01:05 +00:00
26 lines
663 B
Rust
26 lines
663 B
Rust
use std::mem;
|
|
|
|
use mlua::{UserData, UserDataFields};
|
|
use yazi_shim::mlua::UserDataFieldsExt;
|
|
|
|
use super::Status;
|
|
|
|
pub struct Output {
|
|
inner: std::process::Output,
|
|
}
|
|
|
|
impl Output {
|
|
pub fn new(inner: std::process::Output) -> Self { Self { inner } }
|
|
}
|
|
|
|
impl UserData for Output {
|
|
fn add_fields<F: UserDataFields<Self>>(fields: &mut F) {
|
|
fields.add_cached_field("status", |_, me| Ok(Status::new(me.inner.status)));
|
|
fields.add_cached_field_mut("stdout", |lua, me| {
|
|
lua.create_external_string(mem::take(&mut me.inner.stdout))
|
|
});
|
|
fields.add_cached_field_mut("stderr", |lua, me| {
|
|
lua.create_external_string(mem::take(&mut me.inner.stderr))
|
|
});
|
|
}
|
|
}
|