mirror of
https://github.com/lune-org/lune.git
synced 2025-05-04 10:43:57 +01:00
feat: return strings and null instead of buffers
This commit is contained in:
parent
7ed656cf3e
commit
c9cbaf6183
3 changed files with 16 additions and 11 deletions
|
@ -29,11 +29,17 @@ impl<R: AsyncRead + Unpin> ChildProcessReader<R> {
|
||||||
impl<R: AsyncRead + Unpin + 'static> LuaUserData for ChildProcessReader<R> {
|
impl<R: AsyncRead + Unpin + 'static> LuaUserData for ChildProcessReader<R> {
|
||||||
fn add_methods<'lua, M: LuaUserDataMethods<'lua, Self>>(methods: &mut M) {
|
fn add_methods<'lua, M: LuaUserDataMethods<'lua, Self>>(methods: &mut M) {
|
||||||
methods.add_async_method_mut("read", |lua, this, chunk_size: Option<usize>| async move {
|
methods.add_async_method_mut("read", |lua, this, chunk_size: Option<usize>| async move {
|
||||||
Ok(lua.create_buffer(this.read(chunk_size).await?))
|
let buf = this.read(chunk_size).await?;
|
||||||
|
|
||||||
|
if buf.is_empty() {
|
||||||
|
return Ok(LuaValue::Nil);
|
||||||
|
}
|
||||||
|
|
||||||
|
Ok(LuaValue::String(lua.create_string(buf)?))
|
||||||
});
|
});
|
||||||
|
|
||||||
methods.add_async_method_mut("readToEnd", |lua, this, ()| async {
|
methods.add_async_method_mut("readToEnd", |lua, this, ()| async {
|
||||||
Ok(lua.create_buffer(this.read_to_end().await?))
|
Ok(lua.create_string(this.read_to_end().await?))
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,7 +7,7 @@ local msg = "hello, world"
|
||||||
local catChild = process.spawn("cat")
|
local catChild = process.spawn("cat")
|
||||||
catChild.stdin:write(msg)
|
catChild.stdin:write(msg)
|
||||||
assert(
|
assert(
|
||||||
msg == buffer.tostring(catChild.stdout:read(#msg)),
|
msg == catChild.stdout:read(#msg),
|
||||||
"Failed to write to stdin or read from stdout of child process"
|
"Failed to write to stdin or read from stdout of child process"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -16,6 +16,6 @@ local echoChild = if process.os == "windows"
|
||||||
else process.spawn("echo", { msg, ">>/dev/stderr" }, { shell = true })
|
else process.spawn("echo", { msg, ">>/dev/stderr" }, { shell = true })
|
||||||
|
|
||||||
assert(
|
assert(
|
||||||
msg == buffer.tostring(echoChild.stderr:read(#msg)),
|
msg == echoChild.stderr:read(#msg),
|
||||||
"Failed to read from stderr of child process"
|
"Failed to read from stderr of child process"
|
||||||
)
|
)
|
||||||
|
|
|
@ -57,27 +57,26 @@ local ChildProcessReader = {}
|
||||||
@within ChildProcessReader
|
@within ChildProcessReader
|
||||||
|
|
||||||
Reads a chunk of data (specified length or a default of 8 bytes at a time) from
|
Reads a chunk of data (specified length or a default of 8 bytes at a time) from
|
||||||
the reader into a buffer. Returns a buffer of size 0 if there is no more data to
|
the reader as a string. Returns nil if there is no more data to read.
|
||||||
read.
|
|
||||||
|
|
||||||
This function may yield until there is new data to read from reader, if all data
|
This function may yield until there is new data to read from reader, if all data
|
||||||
till present has already been read, and the process has not exited.
|
till present has already been read, and the process has not exited.
|
||||||
|
|
||||||
@return The buffer containing the data read from the reader
|
@return The string containing the data read from the reader
|
||||||
]=]
|
]=]
|
||||||
function ChildProcessReader:read(chunkSize: number?): buffer
|
function ChildProcessReader:read(chunkSize: number?): string?
|
||||||
return nil :: any
|
return nil :: any
|
||||||
end
|
end
|
||||||
|
|
||||||
--[=[
|
--[=[
|
||||||
@within ChildProcessReader
|
@within ChildProcessReader
|
||||||
|
|
||||||
Reads all the data currently present in the reader into a buffer.
|
Reads all the data currently present in the reader as a string.
|
||||||
This function will yield until the process exits.
|
This function will yield until the process exits.
|
||||||
|
|
||||||
@return The buffer containing the data read from the reader
|
@return The string containing the data read from the reader
|
||||||
]=]
|
]=]
|
||||||
function ChildProcessReader:readToEnd(): buffer
|
function ChildProcessReader:readToEnd(): string
|
||||||
return nil :: any
|
return nil :: any
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue