use std::ffi::OsString; use anyhow::anyhow; use mlua::{ExternalError, FromLua, IntoLua, Lua, Value}; use tokio::sync::oneshot; use yazi_shared::{event::CmdCow, url::UrlCow}; // --- Exec #[derive(Debug)] pub struct ProcessOpenOpt { pub cwd: UrlCow<'static>, pub cmd: OsString, pub args: Vec>, pub block: bool, pub orphan: bool, pub done: Option>, pub spread: bool, // TODO: remove } impl TryFrom for ProcessOpenOpt { type Error = anyhow::Error; fn try_from(mut c: CmdCow) -> Result { c.take_any("opt").ok_or_else(|| anyhow!("Missing 'opt' in ProcessOpenOpt")) } } impl FromLua for ProcessOpenOpt { fn from_lua(_: Value, _: &Lua) -> mlua::Result { Err("unsupported".into_lua_err()) } } impl IntoLua for ProcessOpenOpt { fn into_lua(self, _: &Lua) -> mlua::Result { Err("unsupported".into_lua_err()) } }