working on require needs to be done before EOW
This commit is contained in:
52
src/disks/45h/bin_/shell
Normal file
52
src/disks/45h/bin_/shell
Normal file
@@ -0,0 +1,52 @@
|
||||
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
|
||||
Reference in New Issue
Block a user