mirror of
https://github.com/lune-org/lune.git
synced 2025-05-04 10:43:57 +01:00
Migrate lune-std-stdio to async-io instead of tokio
This commit is contained in:
parent
54115430f5
commit
aeaebf4290
3 changed files with 18 additions and 12 deletions
4
Cargo.lock
generated
4
Cargo.lock
generated
|
@ -1732,11 +1732,13 @@ dependencies = [
|
||||||
name = "lune-std-stdio"
|
name = "lune-std-stdio"
|
||||||
version = "0.1.2"
|
version = "0.1.2"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
|
"async-io",
|
||||||
|
"blocking",
|
||||||
"dialoguer",
|
"dialoguer",
|
||||||
|
"futures-lite",
|
||||||
"lune-utils",
|
"lune-utils",
|
||||||
"mlua",
|
"mlua",
|
||||||
"mlua-luau-scheduler",
|
"mlua-luau-scheduler",
|
||||||
"tokio",
|
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
|
|
|
@ -13,13 +13,12 @@ path = "src/lib.rs"
|
||||||
workspace = true
|
workspace = true
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
dialoguer = "0.11"
|
|
||||||
mlua = { version = "0.10.3", features = ["luau", "error-send"] }
|
mlua = { version = "0.10.3", features = ["luau", "error-send"] }
|
||||||
mlua-luau-scheduler = { version = "0.0.2", path = "../mlua-luau-scheduler" }
|
mlua-luau-scheduler = { version = "0.0.2", path = "../mlua-luau-scheduler" }
|
||||||
|
|
||||||
tokio = { version = "1", default-features = false, features = [
|
async-io = "2.4"
|
||||||
"io-std",
|
blocking = "1.6"
|
||||||
"io-util",
|
dialoguer = "0.11"
|
||||||
] }
|
futures-lite = "2.6"
|
||||||
|
|
||||||
lune-utils = { version = "0.1.3", path = "../lune-utils" }
|
lune-utils = { version = "0.1.3", path = "../lune-utils" }
|
||||||
|
|
|
@ -1,12 +1,17 @@
|
||||||
#![allow(clippy::cargo_common_metadata)]
|
#![allow(clippy::cargo_common_metadata)]
|
||||||
|
|
||||||
use lune_utils::fmt::{pretty_format_multi_value, ValueFormatConfig};
|
use std::io::{stderr, stdin, stdout};
|
||||||
|
|
||||||
use mlua::prelude::*;
|
use mlua::prelude::*;
|
||||||
use mlua_luau_scheduler::LuaSpawnExt;
|
use mlua_luau_scheduler::LuaSpawnExt;
|
||||||
|
|
||||||
use tokio::io::{stderr, stdin, stdout, AsyncReadExt, AsyncWriteExt};
|
use blocking::Unblock;
|
||||||
|
use futures_lite::prelude::*;
|
||||||
|
|
||||||
use lune_utils::TableBuilder;
|
use lune_utils::{
|
||||||
|
fmt::{pretty_format_multi_value, ValueFormatConfig},
|
||||||
|
TableBuilder,
|
||||||
|
};
|
||||||
|
|
||||||
mod prompt;
|
mod prompt;
|
||||||
mod style_and_color;
|
mod style_and_color;
|
||||||
|
@ -50,14 +55,14 @@ fn stdio_format(_: &Lua, args: LuaMultiValue) -> LuaResult<String> {
|
||||||
}
|
}
|
||||||
|
|
||||||
async fn stdio_write(_: Lua, s: LuaString) -> LuaResult<()> {
|
async fn stdio_write(_: Lua, s: LuaString) -> LuaResult<()> {
|
||||||
let mut stdout = stdout();
|
let mut stdout = Unblock::new(stdout());
|
||||||
stdout.write_all(&s.as_bytes()).await?;
|
stdout.write_all(&s.as_bytes()).await?;
|
||||||
stdout.flush().await?;
|
stdout.flush().await?;
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
async fn stdio_ewrite(_: Lua, s: LuaString) -> LuaResult<()> {
|
async fn stdio_ewrite(_: Lua, s: LuaString) -> LuaResult<()> {
|
||||||
let mut stderr = stderr();
|
let mut stderr = Unblock::new(stderr());
|
||||||
stderr.write_all(&s.as_bytes()).await?;
|
stderr.write_all(&s.as_bytes()).await?;
|
||||||
stderr.flush().await?;
|
stderr.flush().await?;
|
||||||
Ok(())
|
Ok(())
|
||||||
|
@ -73,7 +78,7 @@ async fn stdio_ewrite(_: Lua, s: LuaString) -> LuaResult<()> {
|
||||||
|
|
||||||
async fn stdio_read_to_end(lua: Lua, (): ()) -> LuaResult<LuaString> {
|
async fn stdio_read_to_end(lua: Lua, (): ()) -> LuaResult<LuaString> {
|
||||||
let mut input = Vec::new();
|
let mut input = Vec::new();
|
||||||
let mut stdin = stdin();
|
let mut stdin = Unblock::new(stdin());
|
||||||
stdin.read_to_end(&mut input).await?;
|
stdin.read_to_end(&mut input).await?;
|
||||||
lua.create_string(&input)
|
lua.create_string(&input)
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue