summaryrefslogtreecommitdiffstats
path: root/cron-model.lua
diff options
context:
space:
mode:
Diffstat (limited to 'cron-model.lua')
-rw-r--r--cron-model.lua52
1 files changed, 42 insertions, 10 deletions
diff --git a/cron-model.lua b/cron-model.lua
index c5ccf7b..46f4b16 100644
--- a/cron-model.lua
+++ b/cron-model.lua
@@ -18,7 +18,7 @@ local function list_periods()
if not periods then
periods = {}
local file = fs.read_file(configfile) or ""
- for dir in string.gmatch(file, "/etc/periodic/(%S+)") do
+ for dir in string.gmatch(file, baseurl.."(%S+)") do
periods[#periods+1] = dir
end
--[[ local reverseperiods = {}
@@ -34,6 +34,20 @@ local function list_periods()
return periods
end
+local function list_jobs()
+ local jobs = {}
+ local alljobs = {}
+ for i,period in ipairs(list_periods()) do
+ local temp = {period=period, jobs={}}
+ for file in fs.find("[^.]+", baseurl..period) do
+ table.insert(temp.jobs, file)
+ table.insert(alljobs, file)
+ end
+ jobs[#jobs+1] = temp
+ end
+ return jobs, alljobs
+end
+
local function validate_filename(name)
local success = false
for i,per in ipairs(list_periods()) do
@@ -57,15 +71,7 @@ function getstatus()
end
function listjobs()
- local jobs = {}
- for i,period in ipairs(list_periods()) do
- local temp = {period=period, jobs={}}
- for file in fs.find("[^.]+", baseurl..period) do
- table.insert(temp.jobs, file)
- end
- jobs[#jobs+1] = temp
- end
- return cfe({ type="structure", value=jobs, label="Cron Jobs" })
+ return cfe({ type="structure", value=list_jobs(), label="Cron Jobs" })
end
function read_job(filename)
@@ -86,10 +92,36 @@ function delete_job(filename)
return retval
end
+function get_move_job()
+ local move = {}
+ move.name = cfe({ type="select", label="Name", option=select(2, list_jobs()) })
+ move.period = cfe({ type="select", label="Period", option=list_periods() })
+ move.name.value = move.name.option[1] or ""
+ move.period.value = move.period.option[1] or ""
+ return cfe({ type="group", value=move, label="Move Job" })
+end
+
+function move_job(move)
+ local success = modelfunctions.validateselect(move.value.name)
+ success = modelfunctions.validateselect(move.value.period) and success
+
+ if success then
+ local newpath = baseurl .. move.value.period.value .. "/" .. basename(move.value.name.value)
+ fs.move_file(move.value.name.value, newpath)
+ move.value.name.option = select(2, list_jobs())
+ move.value.name.value = newpath
+ else
+ move.errtxt = "Failed to move job"
+ end
+
+ return move
+end
+
function create_new_job()
local newjob = {}
newjob.name = cfe({ label="Name" })
newjob.period = cfe({ type="select", label="Period", option=list_periods() })
+ newjob.period.value = newjob.period.option[1] or ""
return cfe({ type="group", value=newjob, label="Create New Job" })
end