fix: stop accepting stdio options for process.spawn

This commit is contained in:
Erica Marigold 2024-06-09 16:22:47 +05:30
parent 78a3d4db5f
commit 50b1bcbd64
No known key found for this signature in database
GPG key ID: 2768CC0C23D245D1
3 changed files with 22 additions and 3 deletions

View file

@ -15,6 +15,7 @@ use mlua::prelude::*;
use lune_utils::TableBuilder;
use mlua_luau_scheduler::{Functions, LuaSpawnExt};
use options::ProcessSpawnOptionsStdio;
use os_str_bytes::RawOsString;
use stream::{ChildProcessReader, ChildProcessWriter};
use tokio::{io::AsyncWriteExt, process::Child};
@ -183,8 +184,10 @@ async fn process_spawn(
lua: &Lua,
(program, args, options): (String, Option<Vec<String>>, ProcessSpawnOptions),
) -> LuaResult<LuaTable> {
// Spawn does not accept stdio options, so we remove them from the options
// and use the defaults instead
let mut spawn_options = options.clone();
spawn_options.stdio.stdin = None;
spawn_options.stdio = ProcessSpawnOptionsStdio::default();
let (stdin_tx, stdin_rx) = tokio::sync::oneshot::channel();
let (stdout_tx, stdout_rx) = tokio::sync::oneshot::channel();
@ -221,7 +224,7 @@ async fn process_spawn(
.expect("ExitCode receiver was unexpectedly dropped");
});
// TODO: If not piped, don't return readers and writers instead of panicking
// TODO: Remove the lua errors since we no longer accept stdio options for spawn
TableBuilder::new(lua)?
.with_value(
"stdout",

16
test.lua Normal file
View file

@ -0,0 +1,16 @@
local process = require("@lune/process")
local stdio = require("@lune/stdio")
local child = process.spawn("luau-lsp", { "lsp" })
while true do
child.stdin:write("hello world")
local buf = child.stdout:read()
if buffer.len(buf) == 0 then
break
end
stdio.write(buffer.tostring(buf) .. "\n")
-- stdio.write(buffer.tostring(child.stderr:read() .. child.stderr:read() .. child.stderr:read() .. child.stderr:read()))
end

View file

@ -26,7 +26,6 @@ export type SpawnOptions = {
cwd: string?,
env: { [string]: string }?,
shell: (boolean | string)?,
stdio: (SpawnOptionsStdio | SpawnOptionsStdioKind)?,
}
--[=[
@ -42,6 +41,7 @@ export type SpawnOptions = {
* `stdin` - Optional standard input to pass to executed child process
]=]
export type ExecuteOptions = SpawnOptions & {
stdio: (SpawnOptionsStdio | SpawnOptionsStdioKind)?,
stdin: string?, -- TODO: Remove this since it is now available in stdio above, breaking change
}