82 lines
2.3 KiB
Lua
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() |