1
0
cuberite-2a/src/Bindings/CheckBindingsDependencies.lua
12xx12 36a67df105
Ender Crytal Fix and report proper cmake file for luabindingscheck fail (#5017)
* fixed network
fixed explosion
fixed ticking

added network broadcast to Setter method

added nullptr protection

using macros in 1.10 Protocol_1_10.cpp

revealed functions to LUA API

small fixups, typos, less functions used

fixed more doc

readded info that saving is done only if the beam is displayed

made the constructor transfer all needed members

fixed wrong commit

removed default parameters on SpawnEnderCrystal

fixed wrong metadata

moved call to destroy in the right place

fixed some typos

Fixed Ender Crystal

* fixed documentation

* fixed doc and added proper error message

* Parameters, arrows

* Parameters

Co-authored-by: 12xx12 <12xx12100@gmail.com>
Co-authored-by: Tiger Wang <ziwei.tiger@outlook.com>
2020-11-06 15:00:59 +00:00

118 lines
3.1 KiB
Lua

-- CheckBindingsDependencies.lua
-- This script checks whether all files listed in AllToLua.pkg are also in the dependencies for bindings regeneration.
-- This script is run as part of the CircleCI tests
--- Filenames that should be ignored in the AllToLua.pkg file:
-- Dictionary of "filename" -> true for each ignored filename
local g_ShouldIgnorePkg =
{
-- ["../IniFile.h"] = true,
}
--- Filenames that should be ignored in the CMakeLists.txt file:
-- Dictionary of "filename" -> true for each ignored filename
local g_ShouldIgnoreCMake =
{
["tolua"] = true,
["Bindings/AllToLua.pkg"] = true,
["Bindings/BindingsProcessor.lua"] = true,
}
--- Returns a sorted list of all files listed in AllToLua.pkg
-- The returned table has both an array part (list of files) and a dictionary part ("filename" -> true)
local function getAllToLuaPkgFiles()
local res = {}
for line in io.lines("AllToLua.pkg") do
line:gsub("$cfile \"(.+)\"", -- Parse each line with a $cfile directive
function (a_FileName)
if (g_ShouldIgnorePkg[a_FileName]) then
return
end
-- Normalize the path: AllToLua is relative to src\Bindings
-- but the CMake dependencies list is relative to src\
a_FileName, cnt = a_FileName:gsub("%.%./", "")
-- If no replacements were done, this entry must point to a file
-- inside the Bindings folder; normalize it
if cnt == 0 then
a_FileName = "Bindings/" .. a_FileName
end
table.insert(res, a_FileName)
res[a_FileName] = true
end
)
end
table.sort(res)
return res
end
--- Returns a sorted list of all files listed as dependencies in CMakeLists.txt
-- The returned table has both an array part (list of files) and a dictionary part ("filename" -> true)
local function getCMakeListsFiles()
local f = assert(io.open("../../CMake/GenerateBindings.cmake", "r"))
local contents = f:read("*all")
f:close()
local res = {}
contents:gsub("set%s*(%b())", -- Process each CMake's "set" statement
function (a_SetStatement)
if not(a_SetStatement:find("%(BINDING_DEPENDENCIES")) then
return
end
-- This is the statement setting the dependencies, parse the files:
a_SetStatement:gsub("%s(%S+)%s",
function (a_FileName)
if (g_ShouldIgnoreCMake[a_FileName]) then
return
end
table.insert(res, a_FileName)
res[a_FileName] = true
end
)
end
)
table.sort(res)
return res
end
-- Check each set of files against the other:
local pkgFiles = getAllToLuaPkgFiles()
local cmakeFiles = getCMakeListsFiles()
local numMissingFiles = 0
for _, fnam in ipairs(pkgFiles) do
if not(cmakeFiles[fnam]) then
io.stderr:write("Bindings dependency file ", fnam, " is not listed in CMake/GenerateBindings.cmake\n")
numMissingFiles = numMissingFiles + 1
end
end
for _, fnam in ipairs(cmakeFiles) do
if not(pkgFiles[fnam]) then
io.stderr:write("Bindings dependency file ", fnam, " is not listed in src/Bindings/AllToLua.pkg\n")
numMissingFiles = numMissingFiles + 1
end
end
-- If any mismatch was found, exit with an error code:
if (numMissingFiles > 0) then
io.stderr:write("Bindings dependency mismatches found: ", numMissingFiles, "\n")
os.exit(1)
end