[O] Optimize
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
import argparse
|
||||
import asyncio
|
||||
import os
|
||||
|
||||
import telnetlib3
|
||||
from telnetlib3 import TelnetReaderUnicode, TelnetWriterUnicode
|
||||
@@ -11,19 +12,33 @@ log = setup_logger()
|
||||
|
||||
async def shell(reader: TelnetReaderUnicode, writer: TelnetWriterUnicode):
|
||||
# Get the size of the terminal
|
||||
async def get_size() -> tuple[int, int]:
|
||||
async def get_size() -> tuple[int, int] | None:
|
||||
writer.write("Detecting terminal size...")
|
||||
writer.write('\x1b[18t')
|
||||
await writer.drain()
|
||||
size = await reader.read(100)
|
||||
|
||||
# Parse the size, it's in the format of \x1b[8;{height};{width}t
|
||||
height, width = size.split(';')[1:3]
|
||||
sp = size.split(';')[1:3]
|
||||
if len(sp) != 2:
|
||||
print("Peer is not a tty")
|
||||
writer.write("\r\nCannot detect terminal size, please use a better terminal\r\n"
|
||||
"(like kitty! https://sw.kovidgoyal.net/kitty/)\r\n")
|
||||
await writer.drain()
|
||||
return None
|
||||
height, width = sp
|
||||
height, width = int(height), int(width[:-1])
|
||||
|
||||
return height, width
|
||||
|
||||
# Run tngame-rs
|
||||
h, w = await get_size()
|
||||
_size = await get_size()
|
||||
if _size is None:
|
||||
writer.close()
|
||||
reader.close()
|
||||
return
|
||||
h, w = _size
|
||||
|
||||
proc = await asyncio.create_subprocess_exec(
|
||||
args.bin,
|
||||
stdin=asyncio.subprocess.PIPE,
|
||||
|
||||
Reference in New Issue
Block a user