#!/usr/bin/lua
require("uci")
require("uci.trigger")

function usage() 
	print("Usage: " .. arg[0] .. " [options]")
	print("Options:")
	print("    -a: apply the config changes")
	print("    -t: show matching UCI triggers")
	print("    -s: show information about tasks to be executed")
	print("    -r: reset all triggers")
	print("    -C <trigger> [<section>]: force clear a trigger")
	print("    -S <trigger> [<section>]: force set a trigger")
	print("")
end

if arg[1] == "-s" then
	local triggers = uci.trigger.get_active()
	if #triggers > 0 then
		print("Tasks:")
		for i, a in ipairs(triggers) do
			local trigger = a[1]
			local sections = a[2]
			print(" - " .. uci.trigger.get_description(trigger, sections))
		end
	else
		print "Nothing to do"
	end
elseif arg[1] == "-t" then
	local triggers = uci.trigger.get_active()
	for i, a in ipairs(triggers) do
		local trigger = a[1]
		local sections = a[2]
		if trigger.section_only then
			print(trigger.id .. " " .. table.concat(sections, " "))
		else
			print(trigger.id)
		end
	end
elseif arg[1] == "-a" then
	uci.trigger.run()
elseif arg[1] == "-r" then
	uci.trigger.reset_state()
elseif arg[1] == "-S" then
	local trigger = arg[2]
	local section = arg[3]
	uci.trigger.set_active(trigger, section)
elseif arg[1] == "-C" then
	local trigger = arg[2]
	local section = arg[3]
	uci.trigger.clear_active(trigger, section)
else
	usage()
end