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
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
end
end
+function save_trigger(name)
+ if triggers.active[name] then
+ local slist = get_names(triggers.active[name])
+ if #slist > 0 then
+ tctx:set("uci_trigger", name, "sections", slist)
+ end
+ else
+ tctx:delete("uci_trigger", name)
+ end
+end
+
function set(data, cursor)
assert(data ~= nil)
if cursor == nil then
if section[".name"] then
active[section[".name"]] = true
end
- local slist = get_names(triggers.active[t.id])
- if #slist > 0 then
- tctx:set("uci_trigger", t.id, "sections", slist)
- end
+ save_trigger(t.id)
end
tctx:save("uci_trigger")
end
return slist
end
+function set_active(trigger, sections)
+ if triggers == nil then
+ load_state()
+ end
+ if not triggers.list[trigger] then
+ return
+ end
+ if triggers.active[trigger] == nil then
+ tctx:set("uci_trigger", trigger, "trigger")
+ triggers.active[trigger] = {}
+ end
+ local active = triggers.active[trigger]
+ if triggers.list[trigger].section_only or sections ~= nil then
+ for i, t in ipairs(sections) do
+ triggers.active[trigger][t] = true
+ end
+ end
+ save_trigger(trigger)
+ tctx:save("uci_trigger")
+end
+
+function clear_active(trigger, sections)
+ if triggers == nil then
+ load_state()
+ end
+ if triggers.list[trigger] == nil or triggers.active[trigger] == nil then
+ return
+ end
+ local active = triggers.active[trigger]
+ if not triggers.list[trigger].section_only or sections == nil then
+ triggers.active[trigger] = nil
+ else
+ for i, t in ipairs(sections) do
+ triggers.active[trigger][t] = false
+ end
+ end
+ save_trigger(trigger)
+ tctx:save("uci_trigger")
+end
+
function run(ts)
if ts == nil then
ts = get_active()