diff options
Diffstat (limited to 'cron-model.lua')
-rw-r--r-- | cron-model.lua | 52 |
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 |