Files
PathOfBuilding/spec/GenerateBuilds.lua
2024-07-31 14:07:24 +10:00

53 lines
1.5 KiB
Lua

local function fetchBuilds(path, buildList)
buildList = buildList or {}
for file in lfs.dir(path) do
if file ~= "." and file ~= ".." then
local f = path..'/'..file
local attr = lfs.attributes (f)
assert(type(attr) == "table")
if attr.mode == "directory" then
fetchBuilds(f, buildList)
else
if file:match("^.+(%..+)$") == ".xml" then
local fileHnd, errMsg = io.open(f, "r")
if not fileHnd then
return nil, errMsg
end
local fileText = fileHnd:read("*a")
fileHnd:close()
buildList[f] = fileText
end
end
end
end
return buildList
end
function buildTable(tableName, values, string)
string = string or ""
string = string .. tableName .. " = {"
for key, value in pairs(values) do
if type(value) == "table" then
buildTable(key, value, string)
elseif type(value) == "boolean" then
string = string .. "[\"" .. key .. "\"] = " .. (value and "true" or "false") .. ",\n"
elseif type(value) == "string" then
string = string .. "[\"" .. key .. "\"] = \"" .. value .. "\",\n"
else
string = string .. "[\"" .. key .. "\"] = " .. round(value, 4) .. ",\n"
end
end
string = string .. "}\n"
return string
end
local buildList = fetchBuilds("../spec/TestBuilds")
for filename, testBuild in pairs(buildList) do
loadBuildFromXML(testBuild)
local fileHnd, errMsg = io.open(filename:gsub("^(.+)%..+$", "%1.lua"), "w+")
fileHnd:write("return {\n xml = [[")
fileHnd:write(testBuild)
fileHnd:write("]],\n ")
fileHnd:write(buildTable("output", build.calcsTab.mainOutput) .. "\n}")
fileHnd:close()
end