52 lines
1.3 KiB
Plaintext
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 |