Files
CC-Tweaked-Stuff/pinerepo.lua
2024-07-09 20:13:23 -07:00

59 lines
1.9 KiB
Lua

peripheral.find("modem",rednet.open)
if not fs.exists("hostname") then
local file = fs.open("hostname","w")
term.write("\nhostname: ")
file.write(read())
file.close()
end
local file = fs.open("hostname","r")
rednet.host("getpkg",file.readAll())
file.close()
while true do
local id,msg = rednet.receive("getpkg")
local data = textutils.unserialiseJSON(http.get("https://pinestore.cc/api/projects").readAll())
for c,i in ipairs(data.projects) do
if i.name == msg then
local blacklist = fs.list("/")
shell.run(i.install_command)
local function scan(dir)
local ls = fs.list(dir)
local out = {}
for _,i in ipairs(ls) do
if fs.isDir(fs.combine(dir,i)) then
out[i] = scan(fs.combine(dir,i))
else
local file = fs.open(fs.combine(dir,i),"r")
out[i] = file.readAll()
file.close()
end
end
return out
end
for _,i in ipairs(fs.list("/")) do
local can = true
for _,v in ipairs(blacklist) do
if i == v then
can = false
break
end
end
if can then
fs.move("/"..i,"/pakage/"..i)
end
end
local out = {}
out.files = scan("/pakage")
out.name = i.name
out.aliases = {{i.name,i.target_file}}
local send = textutils.serialise(out)
fs.delete("/pakage")
rednet.send(id,send,"sendpkg")
break
end
if c == #data.projects then
print("package not found")
rednet.send(id,nil,"refusal")
end
end
end