2017-09-13 13:37:26 +10:00
|
|
|
local shutil = {}
|
|
|
|
function shutil.genenv()
|
|
|
|
local et = os.genenv()
|
|
|
|
for k,v in pairs(shutil) do
|
|
|
|
if k ~= "genenv" then
|
|
|
|
et[k] = v
|
|
|
|
end
|
|
|
|
end
|
|
|
|
return et
|
|
|
|
end
|
2017-10-08 00:24:01 +11:00
|
|
|
function shutil.exec(line)
|
|
|
|
local words = {}
|
|
|
|
for w in line:gmatch("%S+") do table.insert(words,w) end
|
|
|
|
if _ENV[words[1]] then
|
|
|
|
local prg = table.remove(words,1)
|
|
|
|
local r={pcall(_ENV[prg],table.unpack(words))}
|
|
|
|
if r[1] == true then
|
|
|
|
table.remove(r,1)
|
|
|
|
end
|
|
|
|
return table.unpack(r)
|
|
|
|
end
|
|
|
|
local pth = os.getenv("PATH") or "."
|
|
|
|
for d in pth:gmatch("[^:]+") do
|
|
|
|
local prg = words[1]
|
|
|
|
_,lex = pcall(fs.exists,d.."/"..prg..".lua")
|
|
|
|
_,nex = pcall(fs.exists,d.."/"..prg)
|
|
|
|
if lex or nex then
|
|
|
|
table.remove(words,1)
|
|
|
|
end
|
|
|
|
if lex then
|
|
|
|
return pcall(loadfile(d.."/"..prg..".lua"),table.unpack(words))
|
|
|
|
elseif nex then
|
|
|
|
return pcall(loadfile(d.."/"..prg),table.unpack(words))
|
|
|
|
end
|
|
|
|
end
|
|
|
|
if line:sub(1,1) == "=" then
|
|
|
|
line="return "..line:sub(2)
|
|
|
|
end
|
|
|
|
local r={pcall(load(line,"shell","bt",_ENV))}
|
|
|
|
return table.unpack(r)
|
|
|
|
end
|