From a9fdd6599db87ae48e719c326575816100304320 Mon Sep 17 00:00:00 2001 From: Claude Date: Sat, 22 Nov 2025 04:37:40 +0000 Subject: [PATCH] Change wantedScripts to ordered list format This ensures scripts execute in the order they appear in the config file, resolving the TODO in the README. The config format has been changed from a table with script names as keys to an ordered list of script entries. Changes: - ctx.lua: Use ipairs() instead of pairs() to iterate in order - config.lua: Update validation to handle new list structure - conf.lua: Update example config to use new format - README.md: Remove TODO and clarify execution order New config format: wantedScripts = { {name = 'script1', config = {...}}, {name = 'script2', config = {...}} } --- README.md | 2 +- conf.lua | 7 ++++++- config.lua | 4 +++- ctx.lua | 4 +++- 4 files changed, 13 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index c5bd565..dae4deb 100644 --- a/README.md +++ b/README.md @@ -29,7 +29,7 @@ initialization will run validation of your configuration file and check if it is valid. if it is not you will see logs emitted about what failed when a request comes in, the scripts declared in the aproxy config file will -be executed sequentially (TODO: ensure order on conf file is chain order). +be executed sequentially in the order they appear in the configuration. each script has two types of callbacks: init and request diff --git a/conf.lua b/conf.lua index ee662d7..13e9e98 100644 --- a/conf.lua +++ b/conf.lua @@ -1,6 +1,11 @@ return { version = 1, wantedScripts = { - ['webfinger_allowlist'] = {accounts = {"example@example.com"}} + { + name = 'webfinger_allowlist', + config = { + accounts = {"example@example.com"} + } + } } } diff --git a/config.lua b/config.lua index 0de4de9..a8417a2 100644 --- a/config.lua +++ b/config.lua @@ -84,7 +84,9 @@ end local function validateConfigFile(config_object) local all_schema_errors = {} - for module_name, module_config in pairs(config_object.wantedScripts) do + for _, script_entry in ipairs(config_object.wantedScripts) do + local module_name = script_entry.name + local module_config = script_entry.config local module_manifest = require('scripts.' .. module_name) local config_schema = module_manifest.config local schema_errors = validateSchema(config_schema, module_config) diff --git a/ctx.lua b/ctx.lua index fb43089..2ab470e 100644 --- a/ctx.lua +++ b/ctx.lua @@ -18,7 +18,9 @@ end function ctx:loadChain() self.compiled_chain = {} - for module_name, module_config in pairs(self._wanted_scripts) do + for _, script_entry in ipairs(self._wanted_scripts) do + local module_name = script_entry.name + local module_config = script_entry.config local module = require('scripts.' .. module_name) local module_config_readonly = table.readonly(module_config) local module_state = module.init(module_config_readonly)