Files
aceVM/disks/1h/bin_/shell
2025-09-29 00:03:57 -04:00

52 lines
1.3 KiB
Plaintext

local stringBuffer=""
local hpv = require("hypervisor")
local fs = require("filesystem")
local term=component.getFirst("screen")
local captureInput=true
local exit=false
local function printPrefix()
term.printInline("root@testharness:/& ")
end
local function tokenize(str)
return string.split(str, " ")
end
hpv.addEvent("keyTyped",function(...)
if not captureInput then return end
local char=({...})[1]
if char == "\n" then
captureInput=false
term.print("")
elseif char == "\b" then
if #stringBuffer > 0 then
stringBuffer=stringBuffer:sub(1,#stringBuffer-1)
term.printInline(char)
end
else
stringBuffer=stringBuffer..char
term.printInline(char)
end
end)
printPrefix()
while not exit do
while captureInput do
sleep(1)
end
local token = tokenize(stringBuffer)
if token[1] == "exit" then
exit=true
elseif fs.exists("/bin/"..token[1]) and (not fs.isDir("/bin/"..token[1])) then
local handle = hpv.createProcessFromFile("/bin/"..token[1], token[1], table.unpack(token, 2))
local pid=handle.getID()
while hpv.isrunning(pid) do
sleep(0.5)
end
else
term.print("Command not recognized")
end
stringBuffer=""
printPrefix()
captureInput=true
end