Convert to json format for clean_entities file

This commit is contained in:
Jordan Irwin 2021-05-18 19:57:56 -07:00
parent 00ab41d6de
commit 871981ddd7

View file

@ -1,35 +1,67 @@
local old_entities = {} local function clean_duplicates(t)
local tmp = {}
for _, v in ipairs(t) do
tmp[v] = true
end
t = {}
for k in pairs(tmp) do
table.insert(t, k)
end
return t
end
-- Populate entities list from file in world path -- Populate entities list from file in world path
local e_list = nil local e_list = {remove={}}
local e_path = core.get_worldpath() .. "/clean_entities.txt" local e_path = core.get_worldpath() .. "/clean_entities.json"
local e_file = io.open(e_path, "r") local e_file = io.open(e_path, "r")
if e_file then if e_file then
e_list = e_file:read("*a") local data_in = core.parse_json(e_file:read("*a"))
e_file:close() e_file:close()
else if data_in then
-- Create empty file for _, e in ipairs(data_in.remove) do
e_file = io.open(e_path, "w") table.insert(e_list.remove, e)
if e_file then end
e_file:close()
end end
end end
if e_list then -- backward compat
cleaner.log("debug", "Loading entities to clean from file ...") local e_path_old = core.get_worldpath() .. "/clean_entities.txt"
e_file = io.open(e_path_old, "r")
e_list = string.split(e_list, "\n") if e_file then
for _, entity_name in ipairs(e_list) do cleaner.log("action", "found deprecated clean_entities.txt, converting to json")
table.insert(old_entities, entity_name)
local data = string.split(e_file:read("*a"), "\n")
for _, e in ipairs(data) do
e = e:trim()
if e ~= "" and e:sub(1, 1) ~= "#" then
table.insert(e_list.remove, e)
end
end end
e_file:close()
os.rename(e_path_old, e_path_old .. ".bak") -- don't read deprecated file again
end end
for _, entity_name in ipairs(old_entities) do e_list.remove = clean_duplicates(e_list.remove)
cleaner.log("debug", "Cleaning entity: " .. entity_name)
core.register_entity(":" .. entity_name, { -- update json file with any changes
e_file = io.open(e_path, "w")
if e_file then
local data = core.write_json(e_list, true):gsub("\"remove\" : null", "\"remove\" : []")
e_file:write(data)
e_file:close()
end
for _, e in ipairs(e_list.remove) do
cleaner.log("debug", "Cleaning entity: " .. e)
core.register_entity(":" .. e, {
on_activate = function(self, staticdata) on_activate = function(self, staticdata)
self.object:remove() self.object:remove()
end, end,