mirror of
https://github.com/sxyazi/yazi.git
synced 2026-07-25 08:41:05 +00:00
Run rustfmt +nightly **/*.rs and rebase
This commit is contained in:
parent
bb887f9230
commit
87d63dc273
1 changed files with 75 additions and 82 deletions
|
|
@ -1,12 +1,13 @@
|
|||
use std::process::Stdio;
|
||||
use std::ffi::OsString;
|
||||
use std::{ffi::OsString, process::Stdio};
|
||||
|
||||
use mlua::{AnyUserData, ExternalError, IntoLuaMulti, Lua, Table, UserData, Value};
|
||||
use tokio::process::{ChildStderr, ChildStdin, ChildStdout};
|
||||
|
||||
use super::{Child, output::Output};
|
||||
use crate::process::Status;
|
||||
|
||||
pub struct Command {
|
||||
inner: tokio::process::Command,
|
||||
inner: tokio::process::Command,
|
||||
}
|
||||
|
||||
const NULL: u8 = 0;
|
||||
|
|
@ -14,32 +15,26 @@ const PIPED: u8 = 1;
|
|||
const INHERIT: u8 = 2;
|
||||
|
||||
impl Command {
|
||||
pub fn install(lua: &Lua) -> mlua::Result<()> {
|
||||
let new = lua.create_function(|_, (_, program): (Table, String)| {
|
||||
let mut inner = tokio::process::Command::new(program);
|
||||
inner.kill_on_drop(true)
|
||||
.stdin(Stdio::null())
|
||||
.stdout(Stdio::null())
|
||||
.stderr(Stdio::null());
|
||||
Ok(Self { inner })
|
||||
})?;
|
||||
pub fn install(lua: &Lua) -> mlua::Result<()> {
|
||||
let new = lua.create_function(|_, (_, program): (Table, String)| {
|
||||
let mut inner = tokio::process::Command::new(program);
|
||||
inner.kill_on_drop(true).stdin(Stdio::null()).stdout(Stdio::null()).stderr(Stdio::null());
|
||||
Ok(Self { inner })
|
||||
})?;
|
||||
|
||||
let command = lua.create_table_from([
|
||||
("NULL", NULL),
|
||||
("PIPED", PIPED),
|
||||
("INHERIT", INHERIT),
|
||||
])?;
|
||||
|
||||
command.set_metatable(Some(lua.create_table_from([("__call", new)])?));
|
||||
lua.globals().raw_set("Command", command)
|
||||
}
|
||||
let command =
|
||||
lua.create_table_from([("NULL", NULL), ("PIPED", PIPED), ("INHERIT", INHERIT)])?;
|
||||
|
||||
command.set_metatable(Some(lua.create_table_from([("__call", new)])?));
|
||||
lua.globals().raw_set("Command", command)
|
||||
}
|
||||
}
|
||||
|
||||
impl UserData for Command {
|
||||
fn add_methods<'lua, M: mlua::UserDataMethods<'lua, Self>>(methods: &mut M) {
|
||||
#[inline]
|
||||
fn make_stdio(v: Value) -> mlua::Result<Stdio> {
|
||||
match v {
|
||||
fn add_methods<'lua, M: mlua::UserDataMethods<'lua, Self>>(methods: &mut M) {
|
||||
#[inline]
|
||||
fn make_stdio(v: Value) -> mlua::Result<Stdio> {
|
||||
match v {
|
||||
Value::Integer(n) => Ok(match n as u8 {
|
||||
PIPED => Stdio::piped(),
|
||||
INHERIT => Stdio::inherit(),
|
||||
|
|
@ -61,71 +56,69 @@ impl UserData for Command {
|
|||
.into_lua_err(),
|
||||
),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
methods.add_function_mut("arg", |_, (ud, arg): (AnyUserData, mlua::String)| {
|
||||
let arg = OsString::from(arg.to_str()?);
|
||||
ud.borrow_mut::<Self>()?.inner.arg(arg);
|
||||
Ok(ud)
|
||||
});
|
||||
methods.add_function_mut("arg", |_, (ud, arg): (AnyUserData, mlua::String)| {
|
||||
let arg = OsString::from(arg.to_str()?);
|
||||
ud.borrow_mut::<Self>()?.inner.arg(arg);
|
||||
Ok(ud)
|
||||
});
|
||||
|
||||
methods.add_function_mut("args", |_, (ud, args): (AnyUserData, Vec<mlua::String>)| {
|
||||
let args: Vec<OsString> = args
|
||||
.iter()
|
||||
.map(|arg| OsString::from(arg.to_str().unwrap()))
|
||||
.collect();
|
||||
ud.borrow_mut::<Self>()?.inner.args(&args);
|
||||
Ok(ud)
|
||||
});
|
||||
methods.add_function_mut("args", |_, (ud, args): (AnyUserData, Vec<mlua::String>)| {
|
||||
let args: Vec<OsString> =
|
||||
args.iter().map(|arg| OsString::from(arg.to_str().unwrap())).collect();
|
||||
ud.borrow_mut::<Self>()?.inner.args(&args);
|
||||
Ok(ud)
|
||||
});
|
||||
|
||||
methods.add_function_mut("cwd", |_, (ud, dir): (AnyUserData, mlua::String)| {
|
||||
let dir = OsString::from(dir.to_str()?);
|
||||
ud.borrow_mut::<Self>()?.inner.current_dir(dir);
|
||||
Ok(ud)
|
||||
});
|
||||
methods.add_function_mut("cwd", |_, (ud, dir): (AnyUserData, mlua::String)| {
|
||||
let dir = OsString::from(dir.to_str()?);
|
||||
ud.borrow_mut::<Self>()?.inner.current_dir(dir);
|
||||
Ok(ud)
|
||||
});
|
||||
|
||||
methods.add_function_mut(
|
||||
"env",
|
||||
|_, (ud, key, value): (AnyUserData, mlua::String, mlua::String)| {
|
||||
let key = OsString::from(key.to_str()?);
|
||||
let value = OsString::from(value.to_str()?);
|
||||
ud.borrow_mut::<Self>()?.inner.env(key, value);
|
||||
Ok(ud)
|
||||
},
|
||||
);
|
||||
methods.add_function_mut(
|
||||
"env",
|
||||
|_, (ud, key, value): (AnyUserData, mlua::String, mlua::String)| {
|
||||
let key = OsString::from(key.to_str()?);
|
||||
let value = OsString::from(value.to_str()?);
|
||||
ud.borrow_mut::<Self>()?.inner.env(key, value);
|
||||
Ok(ud)
|
||||
},
|
||||
);
|
||||
|
||||
methods.add_function_mut("stdin", |_, (ud, stdio): (AnyUserData, Value)| {
|
||||
ud.borrow_mut::<Self>()?.inner.stdin(make_stdio(stdio)?);
|
||||
Ok(ud)
|
||||
});
|
||||
methods.add_function_mut("stdin", |_, (ud, stdio): (AnyUserData, Value)| {
|
||||
ud.borrow_mut::<Self>()?.inner.stdin(make_stdio(stdio)?);
|
||||
Ok(ud)
|
||||
});
|
||||
|
||||
methods.add_function_mut("stdout", |_, (ud, stdio): (AnyUserData, Value)| {
|
||||
ud.borrow_mut::<Self>()?.inner.stdout(make_stdio(stdio)?);
|
||||
Ok(ud)
|
||||
});
|
||||
methods.add_function_mut("stdout", |_, (ud, stdio): (AnyUserData, Value)| {
|
||||
ud.borrow_mut::<Self>()?.inner.stdout(make_stdio(stdio)?);
|
||||
Ok(ud)
|
||||
});
|
||||
|
||||
methods.add_function_mut("stderr", |_, (ud, stdio): (AnyUserData, Value)| {
|
||||
ud.borrow_mut::<Self>()?.inner.stderr(make_stdio(stdio)?);
|
||||
Ok(ud)
|
||||
});
|
||||
methods.add_function_mut("stderr", |_, (ud, stdio): (AnyUserData, Value)| {
|
||||
ud.borrow_mut::<Self>()?.inner.stderr(make_stdio(stdio)?);
|
||||
Ok(ud)
|
||||
});
|
||||
|
||||
methods.add_method_mut("spawn", |lua, me, ()| match me.inner.spawn() {
|
||||
Ok(child) => (Child::new(child), Value::Nil).into_lua_multi(lua),
|
||||
Err(e) => (Value::Nil, e.raw_os_error()).into_lua_multi(lua),
|
||||
});
|
||||
methods.add_method_mut("spawn", |lua, me, ()| match me.inner.spawn() {
|
||||
Ok(child) => (Child::new(child), Value::Nil).into_lua_multi(lua),
|
||||
Err(e) => (Value::Nil, e.raw_os_error()).into_lua_multi(lua),
|
||||
});
|
||||
|
||||
methods.add_async_method_mut("output", |lua, me, ()| async move {
|
||||
match me.inner.output().await {
|
||||
Ok(output) => (Output::new(output), Value::Nil).into_lua_multi(lua),
|
||||
Err(e) => (Value::Nil, e.raw_os_error()).into_lua_multi(lua),
|
||||
}
|
||||
});
|
||||
methods.add_async_method_mut("output", |lua, me, ()| async move {
|
||||
match me.inner.output().await {
|
||||
Ok(output) => (Output::new(output), Value::Nil).into_lua_multi(lua),
|
||||
Err(e) => (Value::Nil, e.raw_os_error()).into_lua_multi(lua),
|
||||
}
|
||||
});
|
||||
|
||||
methods.add_async_method_mut("status", |lua, me, ()| async move {
|
||||
match me.inner.status().await {
|
||||
Ok(status) => (Status::new(status), Value::Nil).into_lua_multi(lua),
|
||||
Err(e) => (Value::Nil, e.raw_os_error()).into_lua_multi(lua),
|
||||
}
|
||||
});
|
||||
}
|
||||
methods.add_async_method_mut("status", |lua, me, ()| async move {
|
||||
match me.inner.status().await {
|
||||
Ok(status) => (Status::new(status), Value::Nil).into_lua_multi(lua),
|
||||
Err(e) => (Value::Nil, e.raw_os_error()).into_lua_multi(lua),
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue