36a67df105
* 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>
118 lines
3.1 KiB
Lua
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
|