From c987dd1f5f13d039f6264190c1e8c688f260118a Mon Sep 17 00:00:00 2001 From: Guillaume ARM Date: Sun, 26 May 2024 18:46:24 +0200 Subject: [PATCH] fix(inferium-server): more robust stringify/parse processes --- inferium-server.lua | 36 ++++++++++++++++++++++++++++++++---- 1 file changed, 32 insertions(+), 4 deletions(-) diff --git a/inferium-server.lua b/inferium-server.lua index 6798a32..ce33ba6 100644 --- a/inferium-server.lua +++ b/inferium-server.lua @@ -5,7 +5,7 @@ local inferium = require('libs/inferium') local inferiumConfig = require('config/inferium') local DEFAULT_HARVESTER_NAME = 'harvester' -local VERSION = "2.1.0" +local VERSION = "2.1.1" local PERSISTED_CONFIGS = '/data/inferium-configs' local UPGRADE_SCRIPT = '/upgrade.lua' @@ -19,14 +19,42 @@ local defaultAvailableSeeds = { -- Persistance utils +local function stringifyConfigs(configs) + local stringifiedConfigs = {} + + for k, v in pairs(configs) do + stringifiedConfigs[k] = textutils.serialize(v) + end + + return textutils.serialize(stringifiedConfigs) +end + +local function parseConfigs(rawConfigs) + local configs = {} + local stringifiedConfigs = textutils.unserialize(rawConfigs) + + for k, v in pairs(stringifiedConfigs) do + configs[k] = textutils.unserialize(v) + end + + return configs +end + local savePersistedConfigs = function(configs) + local rawConfigs = nil + local ok, errMessage = pcall(function() rawConfigs = stringifyConfigs(configs) end) + + if not rawConfigs or not ok then + error('savePersistedConfigs stringify error: ' .. tostring(errMessage)) + end + local file = fs.open(PERSISTED_CONFIGS, 'w') if not file then error('savePersistedConfigs: cannot open ' .. PERSISTED_CONFIGS .. ' file!') end - file.write(textutils.serialize(configs)) + file.write(rawConfigs) file.close() end @@ -39,10 +67,10 @@ local readPersistedConfigs = function() return initialConfig end - local serializedConfigs = file.readAll() + local rawConfigs = file.readAll() file.close() - return textutils.unserialize(serializedConfigs) + return parseConfigs(rawConfigs) end -- State