53 lines
1.5 KiB
Lua
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 |