Files
ccphone/scan.lua
2025-12-23 21:28:05 -08:00

82 lines
2.3 KiB
Lua

local exceptions = {
["/scan.lua"] = true,
["/install.lua"] = true,
["scan.lua"] = true,
["install.lua"] = true,
["/.settings"] = true,
[".settings"] = true,
["/.git"] = true,
[".git"] = true,
["/rom"] = true,
["rom"] = true,
["/scan.dat"] = true,
["scan.dat"] = true
}
local function scan(dir)
local out = {}
for _,i in ipairs(fs.list(dir)) do
local path = fs.combine(dir,i)
if exceptions[path] == nil then
if fs.isDir(path) then
out[i] = scan(path)
else
local file = fs.open(path,"r")
out[i] = file.readAll()
file.close()
end
end
end
return out
end
local function format(scandata)
local format_data = {
files = {},
dirs = {}
}
local function scan_format(dir,data)
if type(data) == "table" then
local has_scanned = false
for k,v in pairs(data) do
has_scanned = true
scan_format(fs.combine(dir,k),v)
end
if not has_scanned then
format_data.dirs[#format_data.dirs+1] = dir
end
else
format_data.files[#format_data.files+1] = dir
end
end
scan_format("/",scandata)
return format_data
end
local textdata = textutils.serialise(format(scan("/")))
local firstpart = [[local expect = require "cc.expect".expect
local base_url = "https://git.cadencoaster.com/Rivulet/ccphone/raw/branch/main/"
local function download_to(path)
expect(2, path, "string")
term.write(path)
if not http.checkURL(base_url..path) then error("URL is not valid" ,2) end
local data = http.get(base_url..path).readAll()
fs.makeDir(fs.getDir(path))
local file = fs.open(path,"w")
if not file then error("Failed to open file", 2) end
file.write(data)
file.close()
print(" OK")
end
local filesystem = ]]
local secondpart = [[
for _,i in ipairs(filesystem.dirs) do
print("making dir",i)
fs.makeDir(i)
end
for _,i in ipairs(filesystem.files) do
download_to(i)
end
shell.run("wget run https://raw.githubusercontent.com/Pyroxenium/Basalt2/main/install.lua -f /global-libraries/basalt.lua")]]
local outfile = fs.open("install.lua","w")
outfile.write(firstpart..textdata..secondpart)
outfile.close()