aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKim Alvefur <zash@zash.se>2021-12-03 09:05:41 +0100
committerKim Alvefur <zash@zash.se>2021-12-03 09:05:41 +0100
commit8aa16eaec0ad9d66d3da9b453bf9159f8446ff2a (patch)
tree9f4bd9460d7e32aa0dcb8c21a3b9c354d9040797
parentd6070eea1ff8629f8bd71578ea4288e552b9e2db (diff)
downloadprosody-8aa16eaec0ad9d66d3da9b453bf9159f8446ff2a.tar.gz
prosody-8aa16eaec0ad9d66d3da9b453bf9159f8446ff2a.zip
mod_cron: Add a 'weekly' job frequency
-rw-r--r--.luacheckrc1
-rw-r--r--core/moduleapi.lua5
-rw-r--r--plugins/mod_cron.lua2
-rw-r--r--teal-src/plugins/mod_cron.tl3
4 files changed, 9 insertions, 2 deletions
diff --git a/.luacheckrc b/.luacheckrc
index 21191a4e..19942f9b 100644
--- a/.luacheckrc
+++ b/.luacheckrc
@@ -52,6 +52,7 @@ files["plugins/"] = {
"module.add_identity",
"module.add_item",
"module.add_timer",
+ "module.weekly",
"module.daily",
"module.hourly",
"module.broadcast",
diff --git a/core/moduleapi.lua b/core/moduleapi.lua
index 82b1faf3..6a91a045 100644
--- a/core/moduleapi.lua
+++ b/core/moduleapi.lua
@@ -521,6 +521,11 @@ function api:daily(name, fun)
self:cron({ name = name; when = "daily"; run = fun });
end
+function api:weekly(name, fun)
+ if type(name) == "function" then fun, name = name, nil; end
+ self:cron({ name = name; when = "weekly"; run = fun });
+end
+
local path_sep = package.config:sub(1,1);
function api:get_directory()
return self.resource_path or self.path and (self.path:gsub("%"..path_sep.."[^"..path_sep.."]*$", "")) or nil;
diff --git a/plugins/mod_cron.lua b/plugins/mod_cron.lua
index e23d6815..cbb551e8 100644
--- a/plugins/mod_cron.lua
+++ b/plugins/mod_cron.lua
@@ -3,7 +3,7 @@ module:set_global();
local async = require("util.async");
local datetime = require("util.datetime");
-local periods = { hourly = 3600; daily = 86400 }
+local periods = { hourly = 3600; daily = 86400; weekly = 7 * 86400 }
local active_hosts = {}
diff --git a/teal-src/plugins/mod_cron.tl b/teal-src/plugins/mod_cron.tl
index 7a2af971..581c8c0a 100644
--- a/teal-src/plugins/mod_cron.tl
+++ b/teal-src/plugins/mod_cron.tl
@@ -12,6 +12,7 @@ end
local enum frequency
"hourly"
"daily"
+ "weekly"
end
local record task_spec
@@ -28,7 +29,7 @@ local record task_event
item : task_spec
end
-local periods : { frequency : integer } = { hourly = 3600, daily = 86400 }
+local periods : { frequency : integer } = { hourly = 3600, daily = 86400, weekly = 7*86400 }
local active_hosts : { string : boolean } = { }