From 167896ade8997b54797627d3a2631eacbb1bc396 Mon Sep 17 00:00:00 2001 From: Matthieu Jolimaitre Date: Wed, 15 May 2024 04:22:05 +0200 Subject: [PATCH] add utils function repository --- cc-tweaked/utils.lua | 64 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 cc-tweaked/utils.lua diff --git a/cc-tweaked/utils.lua b/cc-tweaked/utils.lua new file mode 100644 index 0000000..54234ad --- /dev/null +++ b/cc-tweaked/utils.lua @@ -0,0 +1,64 @@ +local function dbg(item) + local function indent(indentation) + return string.rep(" ", indentation) + end + + local function dbg_indent(item_, indentation) + local result = "" + if type(item_) == "table" then + result = "{" + for key, value in pairs(item_) do + result = result + .. "\n" .. indent(indentation + 1) + .. dbg_indent(key, indentation + 1) .. ": " + .. dbg_indent(value, indentation + 1) + end + result = result + .. "\n" .. indent(indentation) .. "}" + elseif type(item_) == "string" then + result = "\"" .. item_ .. "\"" + else + result = tostring(item_) + end + return result + end + + print(dbg_indent(item, 0)) + return item +end + +local function new_config(name) + local path = "/etc/" .. name + + local function read_key_in_line(line, key) + local prefix = key .. ":" + local prefix_len = string.len(prefix) + local actual = string.sub(line, 0, prefix_len) + if not (prefix == actual) then return nil end + local value = string.sub(line, prefix_len + 1) + return value + end + + local function get(key, default) + local file = fs.open(path, "r") + if file == nil then return default end + while true do + local line = file.readLine() + if line == nil then return default end + local value = read_key_in_line(line, key) + if not (value == nil) then return value end + end + end + + local function get_num(key, default) + local str = get(key, nil) + if str == nil then return default end + local result = tonumber(str) + if result == nil then + error("Tried to parse conf '" .. path .. "'\nkey \"" .. key .. "\": \"" .. str .. "\" as number.") + end + return result + end + + return { get = get, get_num = get_num } +end