nodemcu-firmware/lua_modules/file_lfs/make_resource.lua

67 lines
1.7 KiB
Lua

#!/usr/bin/lua
--------------------------------------------------------------------------------
-- Script to be used on PC to build resource.lua file
-- Parameters: [-o outputfile] file1 [file2] ...
-- Example: ./make_resource resource/*
-- creates resource.lua file with all files in resource directory
--------------------------------------------------------------------------------
local OUT = "resource.lua"
local function readfile(file)
local f = io.open(file, "rb")
if f then
local lines = f:read("*all")
f:close()
return lines
end
end
-- tests the functions above
print(string.format("make_resource script - %d parameter(s)", #arg))
if #arg==0 or arg[1]=="--help" then
print("parameters: [-o outputfile] file1 [file2] ...")
return
end
local larg = {}
local outpar = false
for i, a in pairs(arg) do
if i>0 then
if outpar then
OUT = a
outpar = false
else
if a == "-o" then
outpar = true
else
table.insert(larg, a)
end
end
end
end
print(string.format("output set to: %s", OUT))
local res = io.open(OUT, "w")
res:write("-- luacheck: max line length 10000\nlocal arg = ...\n")
res:close(file)
local filelist = ""
for _, a in pairs(larg) do
local inp = string.match(a, ".*[/](.*)")
if not inp then inp = a end
local content = readfile(a)
print(string.format("# processing %s", inp))
if content then
res = io.open(OUT, "a")
filelist = filelist .. ('"%s",'):format(inp)
res:write(('if arg == "%s" then return %q end\n\n'):format(inp, content))
res:close(file)
end
end
res = io.open(OUT, "a")
res:write(('if arg == nil then return {%s} end\n'):format(filelist))
res:close(file)