local function count(input)
if type(input)~="table" then
print("incorrect input: "..tostring(input))
return
end
local int=0
for a in pairs(input) do
int=int+1
end
return int
end
local function getlongest(input)
if type(input)~="table" then
print("incorrect input")
return
end
local int=0
for k,v in pairs(input) do
for a,b in pairs(v) do
if string.len(:)/>/>>int then
int=#b
end
end
end
return int
end
function check(input)
if not fs.isDir(shell.resolve(input)) then
return menu.alternate({{'edit', 'run', 'run with parameters'},{'delete'}},{{{shell.run,"edit",input},{shell.run,input},{runwith,input}},{{fs.delete,input}}})
end
end
function runwith(input,params)
local params=params or {}
while menu.alternate({{'done','add param'}},{{{shell.run,input,unpack(params)},{addparam,params}}})=='added' do
end
end
function addparam(params)
print('Current parameters: ')
for k,v in pairs(params) do
print(v)
end
write('enter new parameter: ')
params[(#params or 0)+1]=read()
return 'added'
end
function createnew()
term.clear()
term.setCursorPos(1,1)
write('enter new file name: ')
local new=read()
if new=='' then
print('Invalid entry')
sleep(2)
elseif fs.exists(new) then
print('File already exists')
sleep(2)
else
shell.run('edit',new)
end
end
while true do
if shell.dir()=="" then
currentdirs={{}}
cds={{}}
else
currentdirs={{".."}}
cds={{{shell.setDir,shell.resolve("..")}}}
end
local currentfiles={{"new"}}
local acts={{{createnew}}}
for k,v in pairs(fs.list(shell.dir())) do
if fs.isDir(shell.resolve(v)) then
if count(currentdirs[count(currentdirs)])==3 then
currentdirs[count(currentdirs)+1]={}
cds[count(currentdirs)]={}
end
currentdirs[count(currentdirs)][count(currentdirs[count(currentdirs)])+1]=v
cds[count(currentdirs)][count(currentdirs[count(currentdirs)])]={shell.setDir,shell.resolve(v)}
else
if count(currentfiles[count(currentfiles)])==3 then
currentfiles[count(currentfiles)+1]={}
acts[count(currentfiles)]={}
end
currentfiles[count(currentfiles)][count(currentfiles[count(currentfiles)])+1]=v
acts[count(currentfiles)][count(currentfiles[count(currentfiles)])]={check,v}
end
end
for k,v in pairs(currentfiles) do
currentdirs[count(currentdirs)+1]=v
end
for k,v in pairs(acts) do
cds[count(cds)+1]=v
end
menu.alternate(currentdirs,cds,getlongest(currentdirs)+2)
end