changeset 13884:8b05340a94d3

mod_cron: Move changes to Teal source Yes, it's annoying to have generated output in version control, but not sure yet if we want to keep Teal. It seems to do breaking syntax changes somewhat often.
author Kim Alvefur <zash@zash.se>
date Fri, 09 May 2025 00:53:56 +0200
parents b713da7527d2
children 796094635617
files plugins/mod_cron.lua teal-src/prosody/plugins/mod_cron.tl
diffstat 2 files changed, 34 insertions(+), 11 deletions(-) [+]
line wrap: on
line diff
--- a/plugins/mod_cron.lua	Fri May 09 00:50:36 2025 +0200
+++ b/plugins/mod_cron.lua	Fri May 09 00:53:56 2025 +0200
@@ -1,3 +1,4 @@
+-- This file is generated from teal-src/prosody/plugins/mod_cron.tl
 module:set_global();
 
 local async = require("prosody.util.async");
@@ -9,7 +10,7 @@
 local active_hosts = {}
 
 if prosody.process_type == "prosodyctl" then
-	return; -- Yes, it happens...
+	return
 end
 
 function module.add_host(host_module)
@@ -17,14 +18,24 @@
 	local last_run_times = host_module:open_store("cron", "map");
 	active_hosts[host_module.host] = true;
 
-	local function save_task(task, started_at) last_run_times:set(nil, task.id, started_at); end
+	local function save_task(task, started_at)
+		last_run_times:set(nil, task.id, started_at);
+	end
 
-	local function restore_task(task) if task.last == nil then task.last = last_run_times:get(nil, task.id); end end
+	local function restore_task(task)
+		if task.last == nil then
+			task.last = last_run_times:get(nil, task.id);
+		end
+	end
 
 	local function task_added(event)
 		local task = event.item;
-		if task.name == nil then task.name = task.when; end
-		if task.id == nil then task.id = event.source.name .. "/" .. task.name:gsub("%W", "_"):lower(); end
+		if task.name == nil then
+			task.name = task.when;
+		end
+		if task.id == nil then
+			task.id = event.source.name .. "/" .. task.name:gsub("%W", "_"):lower();
+		end
 		task.period = host_module:get_option_period(task.id:gsub("/", "_") .. "_period", "1" .. task.when, 60, 86400 * 7 * 53);
 		task.restore = restore_task;
 		task.save = save_task;
@@ -40,14 +51,20 @@
 
 	host_module:handle_items("task", task_added, task_removed, true);
 
-	function host_module.unload() active_hosts[host_module.host] = nil; end
+	function host_module.unload()
+		active_hosts[host_module.host] = nil;
+	end
 end
 
-local function should_run(task, last) return not last or last + task.period * 0.995 <= os.time() end
+local function should_run(task, last)
+	return not last or last + task.period * 0.995 <= os.time()
+end
 
 local function run_task(task)
 	task:restore();
-	if not should_run(task, task.last) then return end
+	if not should_run(task, task.last) then
+		return
+	end
 	local started_at = os.time();
 	task:run(started_at);
 	task.last = started_at;
@@ -55,7 +72,7 @@
 end
 
 local function spread(t, factor)
-	return t * (1 - factor + 2*factor*math.random());
+	return t * (1 - factor + 2 * factor * math.random())
 end
 
 local task_runner = async.runner(run_task);
@@ -64,7 +81,9 @@
 	local delay = spread(cron_check_delay, cron_spread_factor);
 	for host in pairs(active_hosts) do
 		module:log("debug", "Running periodic tasks for host %s", host);
-		for _, task in ipairs(module:context(host):get_host_items("task")) do task_runner:run(task); end
+		for _, task in ipairs(module:context(host):get_host_items("task")) do
+			task_runner:run(task);
+		end
 	end
 	module:log("debug", "Wait %gs", delay);
 	return delay
--- a/teal-src/prosody/plugins/mod_cron.tl	Fri May 09 00:50:36 2025 +0200
+++ b/teal-src/prosody/plugins/mod_cron.tl	Fri May 09 00:53:56 2025 +0200
@@ -36,6 +36,10 @@
 
 local active_hosts : { string : boolean } = {  }
 
+if prosody.process_type == "prosodyctl" then
+	return -- Yes, it happens...
+end
+
 function module.add_host(host_module : moduleapi)
 
 	local last_run_times = host_module:open_store("cron", "map") as map_store<string,integer>;
@@ -122,7 +126,7 @@
 	args = {};
 	handler = function (self, filter_host : string)
 		local format_table = require "prosody.util.human.io".table;
-		local it = require "util.iterators";
+		local it = require "prosody.util.iterators";
 		local row = format_table({
 			{ title = "Host", width = "2p" };
 			{ title = "Task", width = "3p" };