This commit is contained in:
Jane Roxanne 2020-03-06 09:16:42 -05:00
parent 2a778b976f
commit 90f1537fa4
5 changed files with 55 additions and 19 deletions

View File

@ -1,14 +1,14 @@
local readfile=function(f,h) local readfile=function(f,h)
local b="" local b=""
local d,r=component.invoke(f,"read",h,math.huge) local d,r=f.read(h,math.huge)
if not d and r then error(r)end if not d and r then error(r)end
b=d b=d
while d do while d do
local d,r=component.invoke(f,"read",h,math.huge) local d,r=f.read(h,math.huge)
b=b..(d or "") b=b..(d or "")
if(not d)then break end if(not d)then break end
end end
component.invoke(f,"close",h) f.close(h)
return b return b
end end
@ -17,15 +17,30 @@ local bfs = {}
local cfg = component.proxy(component.list("eeprom")()).getData() local cfg = component.proxy(component.list("eeprom")()).getData()
local baddr = cfg:sub(1, 36) local baddr = cfg:sub(1, 36)
local bootfs = component.proxy(baddr)
local romfs_file = component.invoke(baddr, "open", ".zy2/bootimage.romfs")
local romfs_dev = romfs.read(function(a)
return bootfs.read(romfs_file, a)
end, function(a)
return bootfs.seek(romfs_file, "cur", a)
end, function()
return bootfs.close(romfs_file)
end)
function bfs.getfile(path) function bfs.getfile(path)
local h = assert(component.invoke(baddr, "open", path, "r")) return romfs_dev:fetch(path)
return readfile(baddr, h)
end end
function bfs.exists(path) function bfs.exists(path)
return component.invoke(baddr, "exists", path) return romfs_dev:exists(path)
end end
function bfs.getcfg()
local h = assert(bootfs.open(".zy2/cfg.lua", "r"))
readfile(bootfs, h)
return
end
bfs.addr = baddr bfs.addr = baddr

View File

@ -30,6 +30,15 @@ function arc:fetch(path)
return nil, "file not found" return nil, "file not found"
end end
function arc:exists(path)
for i=1, #self.tbl do
if (self.tbl[i].name == path) then
return true
end
end
return false
end
function arc:close() function arc:close()
self.close() self.close()
self.tbl = nil self.tbl = nil
@ -47,6 +56,4 @@ function arc:list_dir(path)
end end
end end
return ent return ent
end end
return romfs

View File

@ -32,6 +32,8 @@ end
local builtins = {} local builtins = {}
--#include "src/zy-neo/utils.lua" --#include "src/zy-neo/utils.lua"
--#include "src/zy-neo/builtins/util_romfs.lua"
sys.add_lib("zorya", (function() sys.add_lib("zorya", (function()
local mod_search = {} local mod_search = {}
@ -48,9 +50,7 @@ sys.add_lib("zorya", (function()
local loaded_mods = {} local loaded_mods = {}
loaded_mods.util_romfs = (function() loaded_mods.util_romfs = romfs
--#include "src/zy-neo/builtins/util_romfs.lua"
end)()
function zy.loadmod(mod) function zy.loadmod(mod)
if (loaded_mods[mod]) then return loaded_mods[mod] end if (loaded_mods[mod]) then return loaded_mods[mod] end

View File

View File

@ -90,12 +90,6 @@ function setBar(pos)
computer.pullSignal(0) computer.pullSignal(0)
end end
function writeFile(fs, path, data)
local hand = fs.open(path, "w")
fs.write(hand, data)
fs.close(hand)
end
function mkdir(fs, path) function mkdir(fs, path)
fs.makeDirectory(path) fs.makeDirectory(path)
end end
@ -108,6 +102,24 @@ fs.makeDirectory(".zy2")
fs.makeDirectory(".zy2/mods") fs.makeDirectory(".zy2/mods")
fs.makeDirectory(".zy2/lib") fs.makeDirectory(".zy2/lib")
local romfs = fs.open(".zy2/image.romfs", "w")
fs.write(romfs, "romfs\1\0")
function writeFile(path, data)
--local hand = fs.open(path, "w")
--fs.write(hand, data)
--fs.close(hand)
fs.write(romfs, string.char(#path)..path)
local ext = path:sub(#path-2)
if (ext == "lua" or ext == "z2l" or ext == "z2y") then
fs.write(romfs, "x")
else
fs.write(romfs, "-")
end
fs.write(romfs, string.pack("<i2", #data))
fs.write(romfs, data)
end
setStatus("Getting file list...") setStatus("Getting file list...")
setBar(0) setBar(0)
local bios_files = load("return "..getfile("installer_dat/bios_list.lua"))() local bios_files = load("return "..getfile("installer_dat/bios_list.lua"))()
@ -122,9 +134,11 @@ setBar(0)
for i=1, #pkg_files do for i=1, #pkg_files do
setStatus("Extracting "..(lang["mod_"..pkg_files[i].cat.."_"..pkg_files[i].name.."_name"] or "#mod_"..pkg_files[i].cat.."_"..pkg_files[i].name.."_name").."... ("..i.." of "..#pkg_files..")") setStatus("Extracting "..(lang["mod_"..pkg_files[i].cat.."_"..pkg_files[i].name.."_name"] or "#mod_"..pkg_files[i].cat.."_"..pkg_files[i].name.."_name").."... ("..i.." of "..#pkg_files..")")
setBar(100*(i/#pkg_files)) setBar(100*(i/#pkg_files))
writeFile(fs, ".zy2/"..pkg_files[i].path, getfile(pkg_files[i].path)) writeFile(".zy2/"..pkg_files[i].path, getfile(pkg_files[i].path))
end end
writeFile("TRAILER!!!", [[{os="Zorya NEO",version="2.0"}]])
setStatus("Extracting EEPROM...") setStatus("Extracting EEPROM...")
setBar(0) setBar(0)
local bios = getfile(bios_files[1].path) local bios = getfile(bios_files[1].path)